Segurança
Esses são os componentes disponíveis na categoria Segurança do editor de fluxo de caixas de diálogo baseado em YAML.
System.OAuth2Client
Este tópico abrange o uso desse componente no modo YAML. Para obter informações sobre como usá-lo no Visual Flow Designer, consulte Cliente OAuth 2.0.
Use esse componente para obter um token de acesso do OAuth2 do tipo de concessão Credenciais do Cliente. Ou seja, você o utiliza para obter um token de acesso com base nas credenciais do cliente, e não no nome do usuário e na senha. Você pode usar esse componente para obter um token que permita o acesso aos recursos do cliente protegidos pelo Oracle Identity Cloud Service ou Oracle Access Manager (OAM).
Se for necessário acessar recursos em nome de um usuário, consulte System.OAuth2AccountLink e System.OAuthAccountLink.
Para poder usar esse componente em uma habilidade, execute as seguintes tarefas:
- Caso ele ainda não esteja registrado, registre o cliente no provedor de identidades, conforme descrito em Registro do Provedor de Identidades.
- Adicione um serviço de autenticação de credenciais do cliente para o provedor de identidades, conforme descrito em Serviços de Autenticação.
Propriedade | Descrição | 0brigatório? |
---|---|---|
authenticationService |
O nome do serviço de credenciais do cliente que você criou na IU de Serviços de Autenticação para o provedor de identidades do OAuth2. | Sim |
accessTokenVariableName |
Especifica a variável na qual armazenar o token de acesso. Você pode declará-lo no nó context como variável, string ou outro tipo de variável suportado. Também pode ser uma variável com escopo do usuário. Por exemplo: user.accessToken .
|
Sim |
Esse componente não tem qualquer ação. Para tratar os problemas do sistema que possam ocorrer, adicione uma próxima transição que vá para um estado que possa tratar esses erros.
Este é um exemplo de estado que utiliza esse componente:
getAccessToken:
component: "System.OAuth2Client"
properties:
authenticationService: "myAuthenticationService"
accessTokenVariableName: "myAuthServiceToken"
transitions:
next: "next"
error: "error" # handle auth service issues
System.OAuth2AccountLink
Este tópico abrange o uso desse componente no modo YAML. Para obter informações sobre como usá-lo no Visual Flow Designer, consulte OAuth Link da Conta 2.0.
Use esse componente para obter um token de acesso do usuário OAuth2 (tipo de concessão Código de Autorização) para recursos protegidos pelo OCI IAM, Oracle Access Manager (OAM), plataforma de identidade da Microsoft ou autorização do Google OAuth 2.0. Esse componente conclui todas as etapas do fluxo de 3 fases do OAuth2 e retorna o token de acesso do OAuth2.
Você pode usar a definição requiresAuthorization
para indicar quais estados exigem autorização para que eles possam ser chamados. Para os estados que exigem autorização, se o usuário não estiver autorizado ainda, o estado System.OAuth2AccountLink
será chamado e, em seguida, o fluxo chamará o estado que exigiu a autorização. Você pode aprender a usar esse recurso em Autorização do Usuário em Chats de Grupo (ele funciona para todos os tipos de chats, não apenas para chats de grupo).
Se você precisar obter um token de acesso do tipo de concessão Credenciais do Cliente para acessar recursos do cliente, consulte System.OAuth2Client.
Para poder usar esse componente em uma habilidade, execute as seguintes tarefas:
- Caso ele ainda não esteja registrado, registre o cliente no provedor de identidades, conforme descrito em Registro do Provedor de Identidades.
- Adicione um serviço de autenticação para o provedor de identidades, conforme descrito em Serviços de Autenticação.
Alguns provedores de identidade emitem tokens de atualização. Quando você usa esse componente, o Digital Assistant armazena o token de atualização durante o período de retenção especificado para o serviço de autenticação. O backend do Digital Assistant pode usar o token de atualização, se disponível, para obter um novo token de acesso sem que o usuário tenha de acessar novamente.
Dica:
Em habilidades com a versão 21.04 e posterior da plataforma, os valores padrão das propriedadescancelLabel
, linkLabel
e prompt
são armazenados no pacote de recursos da habilidade. Para alterar um padrão, abra a página Pacote de Recursos da habilidade, clique em 
Você também pode alterar as mensagens Outro - oauthCancelPrompt e Outro - oauthSuccessPrompt no pacote de configuração.
Propriedade | Descrição | 0brigatório? |
---|---|---|
accessTokenVariableName
|
Especifica a variável na qual armazenar o token de acesso. Se a variável estiver no escopo do usuário, como user.accessToken , ela poderá ser compartilhada entre habilidades.
O padrão é |
No |
authenticatedUserVariableName
|
Especifica a variável na qual armazenar o nome do usuário autenticado (o nome que o provedor de identidades conhece). Se a variável estiver no escopo do usuário, como user.authenticatedUser , ela poderá ser compartilhada entre habilidades.
O padrão é |
No |
authenticationService
|
O nome do serviço de código de autorização que você criou na IU de Serviços de Autenticação para o provedor de identidades do OAuth2. | Sim |
autoNumberPostbackActions
|
Quando definido como true , essa opção prefixa um número com a opção de cancelamento, que é uma ação de postback do servidor. Ela não prefixa um número com a opção para obter um token de acesso porque essa é uma ação de URL do cliente que não pode ser prefixada com um número de sequência.
Mesmo quando você não definir essa opção como
Consulte Numeração Automática para Canais Somente Texto em Fluxos de Caixas de Diálogo do YAML e |
No |
cancelLabel
|
Use para substituir o label do botão no qual os usuários podem clicar para sair do estado sem chamar a caixa de diálogo de autenticação. O label padrão é Cancel .
|
No |
enableSingleSignOn
|
(Somente MS Teams) Se você tiver configurado sign-on único (SSO) no Microsoft Teams, poderá defini-lo como true para que os usuários que já tiverem acessado o MS Teams não precisem acessar a habilidade. O padrão é false . Consulte Configuração do SSO para Canais do Microsoft Teams.
O SSO não é suportado para uso com os componentes do calendário. |
No |
footerText
|
Melhora a caixa de diálogo de log-in adicionando texto abaixo das opções de log-in e cancelamento. Conforme descrito em Rodapés, você pode usar expressões do FreeMarker para condicionalizar o texto do rodapé para canais somente texto. | No |
linkLabel
|
Use para substituir o label do botão no qual os usuários podem clicar para chamar a caixa de diálogo de autenticação. O label padrão é Get an access token .
|
No |
prompt
|
A string a ser usada para solicitar ao usuário, em vez do padrão Please sign in .
|
No |
showCancelOption
|
(Opcional) Permite que você especifique se deseja ou não exibir o botão Cancelar. Por padrão, essa opção é definida como true , o que significa que o botão Cancelar é exibido. Em alguns casos, por exemplo, canais SMS, pode ser que você não queira exibir esse botão. Você pode configurar esse comportamento com uma expressão como:
|
No |
translate
|
Use esta propriedade de booliano opcional para substituir o valor booliano da variável de contexto autoTranslate . Observe que autoTranslate é false (excluir da tradução automática), a menos que a variável de contexto tenha sido definida explicitamente como true .
|
No |
updateUserProfile
|
Se o provedor de identidades for um domínio de identidades do OCI IAM e você quiser armazenar o perfil do usuário do IAM durante a sessão, defina essa propriedade como true . Quando um usuário é desafiado para autenticação, se essa propriedade estiver definida como true , o componente tentará extrair os dados do perfil do usuário do provedor de identidades e definir os resultados no mapa userProfile.<authorization service . Por padrão, o valor é false . Consulte Armazenar Perfil de Usuário Durante a Sessão.
|
No |
Esse componente pode retornar as seguintes ações:
Ação | Descrição |
---|---|
fail
|
O usuário clicou no botão Cancelar. |
pass
|
O token de acesso foi recuperado com sucesso. |
textReceived
|
O usuário digitou o texto em vez de clicar no botão cancelar ou autenticar com sucesso. |
Quando o mecanismo de caixa de diálogo encontra o componente, o bot de habilidades solicita ao usuário dois links: Obter um Token de Acesso e Cancelar (você pode usar linkLabel
e cancelLabel
para alterar o texto do link).

Descrição da ilustração oauth2accountlinksignin1.png
Se o usuário clicar no link para obter um token de acesso, ele exibirá a página de log-in do provedor de identidades ou a caixa de diálogo de autenticação, conforme especificado pelo serviço de autenticação. Após o log-in bem-sucedido, ele obtém o token de acesso, define os valores das variáveis identificadas por accessTokenVariableName
e authenticatedUserVariableName
e, em seguida, vai para o estado denominado pela ação pass
(ou para o próximo estado, se não houver uma ação pass
). Se o usuário cancelar, a ação de postback será definida como fail
. Se o usuário digitar texto, ele retornará a ação textReceived
.

Descrição da ilustração oauth2accountlinksignin2.png
Como mencionado anteriormente, você pode definir requiresAuthorization
para um estado para garantir que o usuário esteja autorizado antes de chamar o componente do estado. Se o usuário ainda não tiver autorização, a caixa de diálogo chamará a ação system.authorizeUser
em defaultTransitions
. Veja aqui um exemplo:
main: true
name: RequiresAuthorizationExample
context:
variables:
iResult: "nlpresult"
defaultTransitions:
actions:
system.authorizeUser: "login"
states:
intent:
component: "System.Intent"
properties:
variable: "iResult"
transitions:
actions:
reg.general.showPasscode: "showPasscode"
reg.general.showPhoneNumber: "showPhoneNumber"
unresolvedIntent: "handleUnresolved"
showPasscode:
component: "System.Output"
requiresAuthorization: true
properties:
text: "XYZABC123"
transitions:
return: "done"
showPhoneNumber:
component: "System.Output"
requiresAuthorization: false
properties:
text: "555-1212"
transitions:
return: "done"
handleUnresolved:
component: "System.Output"
requiresAuthorization: false
properties:
text: "You can ask for my phone number or ask for the passcode."
transitions:
return: "done"
login:
component: "System.OAuth2AccountLink"
properties:
prompt: "${profile.firstName}, please login"
authenticationService: "MyAuthenticationService"
accessTokenVariableName: "user.accessToken"
authenticatedUserVariableName: "user.authenticatedUserId"
transitions:
actions:
pass : "${system.requestedState}"
fail : "handleFailedLogin"
textReceived: "intent"
handleFailedLogin:
component: "System.Output"
requiresAuthorization: false
properties:
text: "Sorry, you aren't authorized to do that"
transitions:
return: "done"
Armazenar perfil de usuário durante toda a sessão
Se sua habilidade precisar controlar o fluxo de caixas de diálogo com base no perfil de domínio de identidades do OCI IAM do usuário, defina a propriedade updateUserProfile
do componente System.OAuth2AccountLink
como true
. Isso permite que você obtenha as informações de perfil do usuário do IAM do mapa userProfile.<authorization service>
.
Quando a propriedade updateUserProfile
é definida como true
, o componente System.OAuth2AccountLink
extrai o perfil do usuário do serviço IAM e armazena os dados em um objeto no mapa userProfile.<authorization service>
.
Digamos, por exemplo, que o fluxo da sua caixa de diálogo tenha este estado:
oauth2AccountLink:
component: "System.OAuth2AccountLink"
properties:
authenticationService: "myIAMProvider"
authenticatedUserVariableName: "user.authuser"
accessTokenVariableName: "user.accessToken"
updateUserProfile: true
transitions:
actions:
pass: "askGreeting"
fail: "fail"
textReceived: "authTextReceived"
Depois que o usuário faz sign-in, o objeto userProfile.myIAMProvider
é implantado com o perfil do usuário do IAM, conforme mostrado neste exemplo:
"userProfile.myIAMProvider": {
"sub": "myUsername",
"website": "",
"birthdate": "",
"email_verified": false,
"gender": "",
"updated_at": 1584561296,
"name": "First Last",
"preferred_username": "myUsername",
"given_name": "First",
"family_name": "Last",
"email": "first.last@oracle.com",
"appRoles": [
{
"appName": "some-instance-1_APPID",
"displayName": "RoleName",
"appID": "1234567abcd12345",
"name": "some-instance-1_APPID",
"adminRole": false,
"legacyName": "some-instance-1.RoleName",
"id": "1234567abcdefg",
"$ref": "http://some/path/v1/AppRoles/a111234567abcdefg"
}
]
}
Manipular Vários Serviços de Autenticação
Se o bot de habilidades precisar de tokens de acesso de vários serviços de autenticação, você poderá especificar nomes exclusivos de variáveis de token de acesso e de usuário autenticado para cada uso desse componente, conforme mostrado neste exemplo:
...
states:
# First Authentication Service
getAccessToken1:
component: "System.OAuth2AccountLink"
properties:
authenticationService: "AuthService1"
accessTokenVariableName: "user.accessToken1"
authenticatedUserVariableName: "user.authenticatedUser1"
transitions:
actions:
pass: "getAccessToken2"
textReceived: "handleAuthTextResponse"
fail: "authCancelled"
# Second Authentication Service
getAccessToken2:
component: "System.OAuth2AccountLink"
properties:
authenticationService: "AuthService2"
accessTokenVariableName: "user.accessToken2"
authenticatedUserVariableName: "user.authenticatedUser2"
transitions:
actions:
pass: "getBankUserProfile"
textReceived: "handleAuthTextResponse"
fail: "authCancelled"
...
System.OAuth2ResetTokens
Este tópico abrange o uso desse componente no modo YAML. Para obter informações sobre como usá-lo no Visual Flow Designer, consulte Redefinir tokens OAuth 2.0.
Use esse componente para revogar todos os tokens de atualização e de acesso do usuário conectado do provedor de identidades que o serviço de autenticação representa. Ele também remove os tokens de atualização do banco de dados. Para usar esse componente, informe o URL do token de atualização de revogação do provedor de identidades na IU do Serviço de Autenticação.
A habilidade deve incluir um estado que use o componente OAuth2AccountLink
para o mesmo serviço de autenticação e deve ser chamada antes do estado que usa o componente System.OAuth2ResetTokens
.
Propriedade | Descrição | 0brigatório? |
---|---|---|
authenticationService |
O nome do serviço que você criou na IU do Serviço de Autenticação para o provedor de identidades do OAuth2. Esse serviço deve ter um URL de token de atualização de revogação válido. | Sim |
Este componente pode retornar a seguinte ação:
Ação | Descrição |
---|---|
noRefreshTokenFound |
O serviço de autenticação não tem tokens de atualização para o usuário. |
System.OAuthAccountLink
Este tópico abrange o uso desse componente no modo YAML. Para obter informações sobre como usá-lo no Visual Flow Designer, consulte OAuth Link da Conta.
Use esse componente para obter o código de autorização para serviços protegidos pelo fluxo de concessão do código de autorização, como LinkedIn, Twitter, Google ou Microsoft. Os componentes personalizados da habilidade podem trocar o código de autorização por um token de acesso, que depois eles usam para chamar o serviço final.
O componente primeiro direciona o usuário para a página de log-in do provedor de identidades. Após um log-in bem-sucedido, o componente retorna o código de autorização em uma variável, que você usa para transmitir o código de autorização ao componente personalizado. A API do componente personalizado deve trocar o código de autorização, o ID do cliente e o segredo do cliente por um token de acesso do usuário do OAuth2.
Você pode usar a definição requiresAuthorization
para indicar quais estados exigem autorização para que eles possam ser chamados. Para os estados que exigem autorização, se o usuário ainda não tiver autorização, o estado System.OAuthAccountLink
será chamado e, em seguida, o fluxo chamará o estado que exigiu a autorização. Você pode aprender a usar esse recurso em Autorização do Usuário em Chats de Grupo (ele funciona para todos os tipos de chats, não apenas para chats de grupo).
Dica:
Em habilidades com a versão 21.04 e posterior da plataforma, os valores padrão das propriedadescancelLabel
, linkLabel
e prompt
são armazenados no pacote de recursos da habilidade. Para alterar um padrão, abra a página Pacote de Recursos da habilidade, clique em 
Você também pode alterar as mensagens Outro - oauthCancelPrompt e Outro - oauthSuccessPrompt no pacote de configuração.
Propriedade | Descrição | 0brigatório? |
---|---|---|
authorizeURL |
O URL de log-in. A Propriedade authorizeURL descreve como configurar esse URL. | Sim |
autoNumberPostbackActions |
Quando definido como true , essa opção prefixa um número com a opção de cancelamento. Mesmo quando você não definir essa opção como true , a numeração automática poderá ser aplicada em itens de lista quando a configuração Ativar Numeração Automática em Ações de Postback do assistente digital for definida como true . A numeração automática específica do canal pode ser aplicada a qualquer bot de habilidade registrado em um assistente digital:
|
No |
cancelLabel |
Use para substituir o label do botão no qual os usuários podem clicar para sair do estado sem chamar a caixa de diálogo de autenticação. O label padrão é Cancel .
|
No |
footerText |
Melhora a caixa de diálogo de log-in adicionando texto abaixo das opções de log-in e cancelamento. Conforme descrito em Rodapés, você pode usar expressões do FreeMarker para condicionalizar o texto do rodapé para canais somente texto. | No |
linkLabel |
Use para substituir o label do botão no qual os usuários podem clicar para chamar a caixa de diálogo de autenticação. O label padrão é Log In .
|
No |
prompt |
A string a ser usada para solicitar o acesso ao usuário. | Sim |
showCancelOption |
(Opcional) Permite que você especifique se deseja ou não exibir o botão Cancelar. Por padrão, essa opção é definida como true , o que significa que o botão Cancelar é exibido. Em alguns casos, por exemplo, canais SMS, pode ser que você não queira exibir esse botão. Você pode configurar esse comportamento com uma expressão como:
|
Sim |
translate |
Use esta propriedade de booliano opcional para substituir o valor booliano da variável de contexto autoTranslate . Observe que autoTranslate é false (excluir da tradução automática), a menos que a variável de contexto tenha sido definida explicitamente como true .
|
No |
variable |
Especifica a variável na qual armazenar o código de autorização. Você pode declará-lo no nó de contexto como variável, string ou outro tipo de variável suportado. Também pode ser uma variável do usuário. | Sim |
Esse componente pode retornar as seguintes ações:
Ação | Descrição |
---|---|
fail |
O usuário clicou no botão Cancelar. |
pass |
O código de autorização foi recuperado com sucesso. |
textReceived |
O usuário digitou o texto em vez de clicar no botão cancelar ou autenticar com sucesso. |
Este exemplo mostra as propriedades obrigatórias que você precisa definir para o componente System.OAuthAccountLink
: prompt
, que especifica a mensagem de log-in, variable
, que informa ao componente onde armazenar o código de autorização e authorizeURL
que define o URL do OAuth do provedor e o URL de redirecionamento que recebe o código de autorização.
login:
component: "System.OAuthAccountLink"
properties:
prompt: "Please login now."
linkLabel: "login"
cancelLabel: "cancel"
authorizeURL: "https://www.linkedin.com/oauth/v2/authorization?response_type=code&client_id=75k0vq4&scope=r_basicprofile&redirect_uri=https%3A%2F%2FmyBotsinstance%2Fconnectors%2Fv2%2Fcallback"
variable: "authCode"
transitions:
next: getBankUserProfile
actions:
textReceived: handleAuthTextResponse
fail: authCancelled
Quando o mecanismo de caixa de diálogo encontra esse componente, o bot de habilidades solicita ao usuário com dois links — Log-in e Cancelar.
Há várias formas de fazer a transição desse componente:
-
O usuário clica no botão Cancelar e o componente muda para o estado denominado pela ação
fail
. -
O usuário não clica em qualquer botão, mas digita texto. O componente muda para o estado nomeado pela ação
textReceived
. -
O usuário clica no link de log-in e o canal renderiza a página de log-in do provedor de identidades ou sua caixa de diálogo de autenticação como webview, conforme mostrado no exemplo a seguir. Após a autorização bem-sucedida, o componente muda para o estado nomeado pela ação
pass
(ou para o próximo estado se não houver uma açãopass
), que normalmente chamaria um componente personalizado que troca o código de autorização por um token de acesso.
Se a janela de teste não renderizar a webview, recorte e cole o texto do link no browser.
A Propriedade authorizeURL
Para configurar essa propriedade, comece com o URL do provedor de identidades, como https://www.linkedin.com/oauth/v2/authorization
no exemplo. Em seguida, anexe os seguintes parâmetros do OAuth a esse URL:
-
response_type
: Defina comocode
porque o bot de habilidades espera um código de autorização. -
client_id
: O valor da chave de API que você obteve quando registrou seu aplicativo no provedor de identidades. -
scope
: Uma lista de permissões para acessar recursos em nome do usuário. Estas são as permissões que você define quando registra seu aplicativo no provedor. Elas podem variar conforme o provedor: para o LinkedIn, estas incluemr_basicprofile
(mostradas no exemplo) er_emailadress
; para a Microsoft, elas são definidas comopenid email
eopenid profile
. -
redirect_uri
: Este é o URI de redirecionamento que você usou para registrar seu aplicativo no provedor de identidades e informa ao provedor para onde redirecionar usuários. Esse parâmetro, que é o nome do host do serviço Digital Assistant anexado aconnectors/v2/callback
, é o ponto final que recebe o código de autorização e o associa ao canal ativo. A propriedaderedirect_uri
se baseia no URL do Webhook que é gerado quando você cria um canal. Consulte O Que São Canais?Verifique se o valor que você informa para
redirect_uri
corresponde exatamente ao URI de redirecionamento que você informou quando registrou seu aplicativo. Em ambos os casos, o URI deve ser anexado comconnectors/v2/callback
.
Se sua instância estiver provisionada no Oracle Cloud Platform (como todas as instâncias da versão 19.4.1), use v1
em vez de v2
.