Seguridad
Estos son los componentes que están disponibles en la categoría Seguridad del editor de flujo de diálogo basado en YAML.
System.OAuth2Client
En este tema se trata el uso de este componente en modo YAML. Para obtener información sobre su uso en el diseñador de flujos visuales, consulte OAuth 2.0 Client.
Utilice este componente para obtener un token de acceso de OAuth2 del tipo de permiso Credenciales de cliente. Es decir, puede utilizarlo para obtener un token de acceso basado en las credenciales del cliente, no en el nombre y la contraseña del usuario. Puede utilizar este componente para obtener un token que permita acceder a los recursos del cliente protegidos por Oracle Identity Cloud Service u Oracle Access Manager (OAM).
Si necesita acceder a recursos en nombre de un usuario, consulte System.OAuth2AccountLink y System.OAuthAccountLink.
Para poder utilizar este componente en una aptitud, debe realizar las siguientes tareas:
- Si aún no está registrado, registre el cliente con el proveedor de identidad, como se describe en Registro de proveedor de identidad.
- Agregue un servicio de autenticación de credenciales de cliente para el proveedor de identidad, como se describe en Servicios de autenticación.
Propiedad | Descripción | ¿Obligatoria? |
---|---|---|
authenticationService |
Nombre del servicio de credenciales de cliente creado en la interfaz de usuario de Servicios de autenticación para el proveedor de identidad de OAuth2. | Sí |
accessTokenVariableName |
Especifica la variable en la que se va a almacenar el token de acceso. Puede declararla en el nodo context como variable, cadena u otro tipo de variable soportado. También puede ser una variable con ámbito de usuario. Por ejemplo: user.accessToken .
|
Sí |
Este componente no incluye ninguna acción. Para manejar los problemas del sistema que puedan surgir, agregue una transición que pase a un estado que pueda manejar este tipo de errores.
A continuación, se muestra un ejemplo de un estado que utiliza este componente:
getAccessToken:
component: "System.OAuth2Client"
properties:
authenticationService: "myAuthenticationService"
accessTokenVariableName: "myAuthServiceToken"
transitions:
next: "next"
error: "error" # handle auth service issues
System.OAuth2AccountLink
En este tema se trata el uso de este componente en modo YAML. Para obtener información sobre su uso en el diseñador de flujos visuales, consulte OAuth 2.0 Enlace de cuenta.
Utilice este componente para obtener un token de acceso de usuario OAuth2 (código de autorización de tipo de permiso) para los recursos protegidos por OCI IAM, Oracle Access Manager (OAM), la plataforma de identidad de Microsoft o la autorización de Google OAuth 2.0. Este componente completa todos los pasos del flujo de OAuth2 en 3 partes y devuelve el token de acceso de OAuth2.
Puede utilizar el valor requiresAuthorization
para indicar qué estados requieren autorización antes de que se puedan llamar. Para los estados que requieren autorización, si el usuario aún no lo ha autorizado, se llama al estado System.OAuth2AccountLink
y, a continuación, el flujo llama al estado que requiere autorización. Puede aprender a utilizar esta función en Autorización de usuario en chats de grupo (funciona para todos los tipos de chats, no solo para chats de grupo).
Si necesita obtener un token de acceso con el tipo de permiso Credenciales de cliente para acceder a los recursos del cliente, consulte System.OAuth2Client.
Para poder utilizar este componente en una aptitud, debe realizar las siguientes tareas:
- Si aún no se ha registrado, registre el cliente con el proveedor de identidad, tal y como se describe en Registro de proveedor de identidad.
- Agregue un servicio de autenticación para el proveedor de identidad, como se describe en Servicios de autenticación.
Algunos proveedores de identidad han emitido tokens de refrescamiento. Cuando se utilizar este componente, Digital Assistant almacena el token de refrescamiento para el período de retención especificado para el servicio de autenticación. El backend de Digital Assistant puede utilizar el token de refrescamiento, si está disponible, para obtener un nuevo token de acceso sin que el usuario tenga que volver a conectarse.
Consejo:
En aptitudes con la versión 21.04 y posteriores de la plataforma, los valores por defecto para las propiedadescancelLabel
, linkLabel
y prompt
se almacenan en el grupo de recursos de la aptitud. Para cambiar un valor por defecto, abra la página Grupo de recursos de la aptitud, haga clic en 
También puede cambiar los mensajes Otro - oauthCancelPrompt y Otro - oauthSuccessPrompt en el grupo de configuración.
Propiedad | Descripción | ¿Obligatoria? |
---|---|---|
accessTokenVariableName
|
Especifica la variable en la que se va a almacenar el token de acceso. Si la variable tiene un ámbito de usuario, como user.accessToken , se puede compartir entre distintas aptitudes.
El valor por defecto es |
No |
authenticatedUserVariableName
|
Especifica la variable en la que almacenar el nombre de usuario autenticado (el nombre conocido por el proveedor de identidad). Si la variable tiene un ámbito de usuario, como user.authenticatedUser , se puede compartir entre distintas aptitudes.
El valor por defecto es |
No |
authenticationService
|
Nombre del servicio de código de autorización creado en la interfaz de usuario de Servicios de autenticación para el proveedor de identidad de OAuth2. | Sí |
autoNumberPostbackActions
|
Si se establece en true , esta opción prefija un número a la opción de cancelación, que es una acción de devolución del servidor. No prefija un número a la opción para obtener un token de acceso, porque esta es una acción de URL, es decir, una acción del cliente que no se puede prefijar con un número de secuencia.
Aunque esta opción no se haya definido en
Consulte Numeración automática para canales de solo texto en flujos de diálogo de YAML y |
No |
cancelLabel
|
Se utiliza para sustituir la etiqueta del botón en el que los usuarios pueden hacer clic para salir del estado sin llamar al cuadro de diálogo de autenticación. La etiqueta predeterminada es Cancel .
|
No |
enableSingleSignOn
|
(Solo MS Teams) Si ha configurado la conexión única (SSO) de Microsoft Teams, puede definirla en true para que los usuarios que ya hayan iniciado sesión en MS Teams no tengan que iniciar sesión en la aptitud. El valor por defecto es false . Consulte Configuración de conexión única para canales de Microsoft Teams.
La conexión única no se puede usar con los componentes de calendario. |
No |
footerText
|
Mejora el cuadro de diálogo de conexión agregando texto bajo las opciones de conexión y cancelación. Como se describe en Pies de página, puede utilizar expresiones de FreeMarker para condicionar el texto del pie de página en los canales de solo texto. | No |
linkLabel
|
Se utiliza para sustituir la etiqueta del botón en el que los usuarios pueden hacer clic para llamar al cuadro de diálogo de autenticación. La etiqueta predeterminada es Get an access token .
|
No |
prompt
|
Cadena que se utiliza para pedir datos al usuario, en lugar del valor por defecto Please sign in .
|
No |
showCancelOption
|
(Opcional) Permite especificar si se debe mostrar o no el botón Cancelar. Por defecto, esta opción se establece en true , lo que significa que se muestra el botón Cancelar. En algunos casos, como en el caso de canales SMS, puede que no quiera que este botón se muestre. Puede configurar este comportamiento con una expresión como:
|
No |
translate
|
Utilice esta propiedad booleana opcional para sustituir el valor booleano de la variable de contexto autoTranslate . Tenga en cuenta que autoTranslate se establece en false (excluir de la traducción automática) salvo si la variable de contexto se ha definido explícitamente en true .
|
No |
updateUserProfile
|
Si el proveedor de identidad es un dominio de identidad de OCI IAM y desea almacenar el perfil del usuario desde IAM durante la sesión, defina esta propiedad en true . Cuando se comprueba la autenticación de un usuario, si esta propiedad está definida en true , el componente intentará recuperar los datos del perfil de usuario del proveedor de identidad y definir los resultados en la asignación userProfile.<servicio de autorización> . El valor por defecto es false . Consulte Store User Profile for the Duration.
|
No |
Este componente puede devolver las siguientes acciones:
Acción | Descripción |
---|---|
fail
|
El usuario ha hecho clic en el botón Cancelar. |
pass
|
El token de acceso se ha recuperado correctamente. |
textReceived
|
El usuario introdujo texto, en lugar de hacer clic en el botón Cancelar o autenticarse correctamente. |
Cuando el motor de diálogo encuentra el componente, el bot de aptitudes solicita al usuario dos enlaces: Obtener un token de acceso y Cancelar (puede utilizar linkLabel
y cancelLabel
para cambiar el texto del enlace).

Descripción de la ilustración oauth2accountlinksignin1.png
Si el usuario hace clic en el enlace para obtener un token de acceso, se muestra la página de conexión del proveedor de identidad o el diálogo de autenticación especificado por el servicio de autenticación. Tras establecer una conexión correcta, obtiene el token de acceso, define los valores para las variables identificadas por accessTokenVariableName
y authenticatedUserVariableName
y, a continuación, fluye al estado con el nombre de la acción pass
(o al siguiente estado si no hay una acción pass
). Si el usuario cancela, la acción de devolución se establece en fail
. Si el usuario introduce texto, devuelve la acción textReceived
.

Descripción de la ilustración oauth2accountlinksignin2.png
Como se ha mencionado anteriormente, puede definir requiresAuthorization
para un estado a fin de garantizar que el usuario esté autorizado antes de llamar al componente de estado. Si el usuario aún no está autorizado, el diálogo llama a la acción system.authorizeUser
en defaultTransitions
. Ejemplo:
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"
Almacenamiento del perfil de usuario durante la sesión
Si su aptitud necesita controlar el flujo de diálogo en función del perfil de dominio de identidad de OCI IAM del usuario, defina la propiedad updateUserProfile
del componente System.OAuth2AccountLink
en true
. Esto le permite obtener la información de perfil del usuario de IAM de la asignación userProfile.<authorization service>
.
Cuando updateUserProfile
se define en true
, el componente System.OAuth2AccountLink
recupera el perfil de usuario de IAM y almacena los datos en un objeto en la asignación userProfile.<authorization service>
.
Supongamos, por ejemplo, que el flujo de diálogo tiene 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"
Una vez que el usuario se ha conectado, el objeto userProfile.myIAMProvider
tiene predefinido el perfil del usuario de IAM, como se muestra en este ejemplo:
"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"
}
]
}
Manejar varios servicios de autenticación
Si el bot de aptitud necesita tokens de acceso de varios servicios de autenticación, puede especificar nombres exclusivos de variables de usuario autenticado y tokens de acceso para cada uso de este componente, como se muestra en este ejemplo:
...
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
En este tema se trata el uso de este componente en modo YAML. Para obtener información sobre su uso en el diseñador de flujos visuales, consulte Restablecimiento de tokens OAuth 2.0.
Utilice este componente para revocar todos los tokens de acceso de usuario y los tokens de refrescamiento de usuario conectado del proveedor de identidad que representa el servicio de autenticación. También elimina los tokens de refrescamiento de la base de datos. Para utilizar este componente, debe proporcionar el URL del token de refrescamiento de revocación del proveedor de identidad en la interfaz de usuario del servicio de autenticación.
La aptitud debe incluir un estado que utilice el componente OAuth2AccountLink
para el mismo servicio de autenticación y se debe llamar antes que el estado que utiliza el componente System.OAuth2ResetTokens
.
Propiedad | Descripción | ¿Obligatoria? |
---|---|---|
authenticationService |
Nombre del servicio creado en la interfaz de usuario del servicio de autenticación para el proveedor de identidad de OAuth2. Este servicio debe tener un URL de token de refrescamiento de revocación válido. | Sí |
Este componente puede devolver la siguiente acción:
Acción | Descripción |
---|---|
noRefreshTokenFound |
El servicio de autenticación no tiene ningún token de refrescamiento para el usuario. |
System.OAuthAccountLink
En este tema se trata el uso de este componente en modo YAML. Para obtener información sobre su uso en el diseñador de flujos visuales, consulte OAuth Enlace de cuenta.
Utilice este componente para obtener el código de autorización para servicios protegidos por el flujo de concesión de código de autorización, como LinkedIn, Twitter, Google o Microsoft. Los componentes personalizados de la aptitud pueden intercambiar el código de autorización por un token de acceso, que luego utilizan para llamar el servicio final.
El componente dirige en primer lugar al usuario a la página de conexión del proveedor de identidad. Después de una conexión correcta, el componente devuelve el código de autorización en una variable, que se utiliza para transferir el código de autorización al componente personalizado. La API de componente personalizado debe intercambiar el código de autorización, el ID de cliente y el secreto de cliente para un token de acceso de usuario de OAuth2.
Puede utilizar el valor requiresAuthorization
para indicar qué estados requieren autorización antes de que se puedan llamar. Para los estados que requieren autorización, si el usuario aún no ha autorizado, se llama al estado System.OAuthAccountLink
y, a continuación, el flujo llama al estado que requiere autorización. Puede aprender a utilizar esta función en Autorización de usuario en chats de grupo (funciona para todos los tipos de chats, no solo para chats de grupo).
Consejo:
En aptitudes con la versión 21.04 y posteriores de la plataforma, los valores por defecto para las propiedadescancelLabel
, linkLabel
y prompt
se almacenan en el grupo de recursos de la aptitud. Para cambiar un valor por defecto, abra la página Grupo de recursos de la aptitud, haga clic en 
También puede cambiar los mensajes Otro - oauthCancelPrompt y Otro - oauthSuccessPrompt en el grupo de configuración.
Propiedad | Descripción | ¿Obligatoria? |
---|---|---|
authorizeURL |
URL de conexión. La propiedad authorizeURL describe cómo configurar este URL. | Sí |
autoNumberPostbackActions |
Cuando se establece en true , esta opción prefija con un número la opción de cancelación. Aunque esta opción no se defina en true , la numeración automática se puede aplicar a elementos de lista cuando la configuración de Activar numeración automática en acciones de devolución del asistente digital está definida en true . La numeración automática específica del canal se puede aplicar a cualquier bot de aptitud registrado en un asistente digital:
|
No |
cancelLabel |
Se utiliza para sustituir la etiqueta del botón en el que los usuarios pueden hacer clic para salir del estado sin llamar al cuadro de diálogo de autenticación. La etiqueta predeterminada es Cancel .
|
No |
footerText |
Mejora el cuadro de diálogo de conexión agregando texto bajo las opciones de conexión y cancelación. Como se describe en Pies de página, puede utilizar expresiones de FreeMarker para condicionar el texto del pie de página en los canales de solo texto. | No |
linkLabel |
Se utiliza para sustituir la etiqueta del botón en el que los usuarios pueden hacer clic para llamar al cuadro de diálogo de autenticación. La etiqueta predeterminada es Log In .
|
No |
prompt |
Cadena que se utiliza para solicitar al usuario que inicie sesión. | Sí |
showCancelOption |
(Opcional) Permite especificar si se debe mostrar o no el botón Cancelar. Por defecto, esta opción se establece en true , lo que significa que se muestra el botón Cancelar. En algunos casos, como en el caso de canales SMS, puede que no quiera que este botón se muestre. Puede configurar este comportamiento con una expresión como:
|
Sí |
translate |
Utilice esta propiedad booleana opcional para sustituir el valor booleano de la variable de contexto autoTranslate . Tenga en cuenta que autoTranslate se establece en false (excluir de la traducción automática) salvo si la variable de contexto se ha definido explícitamente en true .
|
No |
variable |
Especifica la variable en la que se va a almacenar el código de autorización. Puede declararla en el nodo context como variable, cadena u otro tipo de variable soportado. También puede ser una variable de usuario. | Sí |
Este componente puede devolver las siguientes acciones:
Acción | Descripción |
---|---|
fail |
El usuario ha hecho clic en el botón Cancelar. |
pass |
El código de autorización se ha recuperado correctamente. |
textReceived |
El usuario introdujo texto, en lugar de hacer clic en el botón Cancelar o autenticarse correctamente. |
En este ejemplo, se muestran las propiedades necesarias que debe definir para el componente System.OAuthAccountLink
: prompt
, que especifica el mensaje de conexión, variable
, que indica el componente donde se almacena el código de autorización y authorizeURL
, que define tanto el URL de OAuth del proveedor como el URL de redirección que recibe el código de autorización.
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
Cuando el motor de diálogo encuentra este componente, el bot de aptitud solicita al usuario dos enlaces: Conexión y Cancelar.
Hay varias formas de realizar la transición desde este componente:
-
El usuario hace clic en el botón Cancelar y el componente pasa al estado que especifica la acción
fail
. -
El usuario no hace clic en ningún botón, sino que introduce texto en su lugar. El componente pasa al estado especificado por la acción
textReceived
. -
El usuario hace clic en el enlace de conexión y el canal representa la página de conexión del proveedor de identidad o el cuadro de diálogo de autenticación en forma de vista web, como se muestra en el siguiente ejemplo. Tras una autorización correcta, el componente pasa al estado especificado por la acción
pass
(o al siguiente estado si no hay una acciónpass
), que normalmente llamaría a un componente personalizado que intercambia el código de autorización por un token de acceso.
Si la ventana de prueba no representa la vista web, corte y pegue el texto del enlace en el explorador.
Propiedad authorizeURL
Para configurar esta propiedad, debe comenzar con la dirección URL del proveedor de identidad, como https://www.linkedin.com/oauth/v2/authorization
en el ejemplo. A continuación, agregue los siguientes parámetros de OAuth a este URL:
-
response_type
: defínalo encode
, ya que el bot de aptitud espera un código de autorización. -
client_id
: valor de clave de API obtenido al registrar la aplicación con el proveedor de identidad. -
scope
: lista de permisos para acceder a los recursos en nombre del usuario. Estos son los permisos que se definen al registrar la aplicación con el proveedor. Pueden variar según el proveedor: en LinkedIn, entre ellos se incluyenr_basicprofile
(mostrado en el ejemplo) yr_emailadress
; para Microsoft, se definen medianteopenid email
yopenid profile
. -
redirect_uri
: URI de redirección utilizado para registrar la aplicación con el proveedor de identidad, indica al proveedor dónde redireccionar a los usuarios. Este parámetro, que es el nombre de host de servicio de Digital Assistant conconnectors/v2/callback
agregado, es el punto final que recibe el código de autorización y que, a continuación, lo asocia al canal activo. La propiedadredirect_uri
se basa en el URL del webhook que se genera al crear un canal. Consulte Definición de canalesAsegúrese de que el valor especificado para
redirect_uri
coincida con el URI de redirección proporcionado al registrar la aplicación. En ambos casos, al URI se le debe agregar al finalconnectors/v2/callback
.
Si la instancia está aprovisionada en Oracle Cloud Platform (como ocurre con todas las instancias de la versión 19.4.1), utilice v1
en lugar de v2
.