Sécurité
Il s'agit des composants disponibles dans la catégorie Sécurité de l'éditeur de flux de dialogue basé sur YAML.
System.OAuth2Client
Cette rubrique décrit l'utilisation de ce composant en mode YAML. Pour plus d'informations sur son utilisation dans le concepteur de flux visuel, voir OAuth Client 2.0.
Utilisez ce composant pour obtenir un jeton d'accès OAuth2 avec le type d'autorisation Données d'identification de client. Autrement dit, vous l'utilisez pour obtenir un jeton d'accès basé sur les données d'identification du client et non sur le nom et le mot de passe de l'utilisateur. Vous pouvez utiliser ce composant pour obtenir un jeton qui permet l'accès aux ressources de client protégées par le service Oracle Identity Cloud ou Oracle Access Manager (OAM).
Si vous devez accéder aux ressources pour le compte d'un utilisateur, voir System.OAuth2AccountLink et System.OAuthAccountLink.
Afin de pouvoir utiliser ce composant dans une compétence, vous devez effectuer les tâches suivantes :
- Si ce n'est pas encore fait, inscrivez le client auprès du fournisseur d'identités comme décrit dans la rubrique Enregistrement au niveau du fournisseur d'identités.
- Ajoutez un service d'authentification client pour le fournisseur d'identités, comme décrit dans la rubrique Services d'authentification.
Propriété | Description | Obligatoire? |
---|---|---|
authenticationService |
Nom du service de données d'identification du client que vous avez créé dans l'interface utilisateur des services d'authentification pour le fournisseur d'identités OAuth2. | Oui |
accessTokenVariableName |
Spécifie la variable dans laquelle stocker le jeton d'accès. Vous pouvez la déclarer dans le noeud context en tant que variable, chaîne ou un autre type de variable pris en charge. Il peut également s'agir d'une variable de portée utilisateur. Par exemple : user.accessToken .
|
Oui |
Ce composant ne comporte aucune action. Pour gérer les problèmes système qui peuvent survenir, ajoutez une transition next qui passe à un état pouvant traiter de telles erreurs.
Voici un exemple d'état utilisant ce composant :
getAccessToken:
component: "System.OAuth2Client"
properties:
authenticationService: "myAuthenticationService"
accessTokenVariableName: "myAuthServiceToken"
transitions:
next: "next"
error: "error" # handle auth service issues
System.OAuth2AccountLink
Cette rubrique décrit l'utilisation de ce composant en mode YAML. Pour plus d'informations sur son utilisation dans le concepteur de flux visuel, voir OAuth 2.0 Account Link.
Utilisez ce composant pour obtenir un jeton d'accès d'utilisateur OAuth2 (type d'autorisation Code) pour les ressources sécurisées par OCI IAM, Oracle Access Manager (OAM), la plate-forme d'identité Microsoft ou l'autorisation Google OAuth 2.0. Ce composant termine toutes les étapes du flux OAuth2 à trois branches et retourne le jeton d'accès OAuth2.
Vous pouvez utiliser le paramètre requiresAuthorization
pour indiquer les états exigeant une autorisation avant d'être appelés. Pour les états qui nécessitent une autorisation, si l'utilisateur n'en dispose pas encore, l'état System.OAuth2AccountLink
est appelé, puis le flux appelle l'état qui exigeait l'autorisation. Vous pouvez voir comment utiliser cette fonctionnalité dans Autorisation d'utilisateur dans les clavardages en groupe (elle sert à tous les types de clavardage, pas seulement à ceux en groupe).
Si vous devez obtenir un jeton d'accès avec le type d'autorisation Données d'identification client pour accéder aux ressources de client, voir System.OAuth2Client.
Afin de pouvoir utiliser ce composant dans une compétence, vous devez effectuer les tâches suivantes :
- Si ce n'est pas encore fait, inscrivez le client auprès du fournisseur d'identités comme décrit dans la rubrique Enregistrement au niveau du fournisseur d'identités.
- Ajoutez un service d'authentification pour le fournisseur d'identités, comme décrit dans Services d'authentification.
Certains fournisseurs d'identités émettent des jetons d'actualisation. Lorsque vous utilisez ce composant, Digital Assistant stocke le jeton d'actualisation pendant la période de conservation spécifiée pour le service d'authentification. Le système dorsal de l'assistant numérique peut utiliser le jeton d'actualisation, s'il est disponible, pour obtenir un nouveau jeton d'accès sans que l'utilisateur ait à se connecter de nouveau.
Conseil :
Dans les compétences de la plate-forme versions 21.04 et ultérieures, les valeurs par défaut des propriétéscancelLabel
, linkLabel
et prompt
sont stockées dans le groupe de ressources de la compétence. Pour modifier une valeur par défaut, ouvrez la page Ensembles de ressources de la compétence, cliquez sur
Vous pouvez également modifier les messages Other - oauthCancelPrompt et Other - oauthSuccessPrompt dans l'ensemble de configuration.
Propriété | Description | Obligatoire? |
---|---|---|
accessTokenVariableName
|
Spécifie la variable dans laquelle stocker le jeton d'accès. Si la variable est de portée utilisateur, par exemple user.accessToken , elle peut être partagée entre les compétences.
Par défaut : |
Non |
authenticatedUserVariableName
|
Indique la variable dans laquelle stocker le nom d'utilisateur authentifié (le nom connu par le fournisseur d'identités). Si la variable est de portée utilisateur, par exemple user.authenticatedUser , elle peut être partagée entre les compétences.
Par défaut : |
Non |
authenticationService
|
Nom du service de code d'autorisation que vous avez créé dans l'interface utilisateur des services d'authentification pour le fournisseur d'identités OAuth2. | Oui |
autoNumberPostbackActions
|
Lorsque cette option est réglée à true , elle ajoute un préfixe numérique à l'option d'annulation, qui est une action de réplication côté serveur. Elle n'en ajoute pas à l'option d'obtention de jeton d'accès car il s'agit d'une action d'URL côté client qui ne peut pas recevoir de numéro de séquence en préfixe.
Même lorsque vous n'avez pas réglé cette option à
Voir Numérotation automatique pour les canaux textuels dans les flux de dialogue YAML et |
Non |
cancelLabel
|
Utilisez cette option pour remplacer l'étiquette du bouton sur lequel les utilisateurs peuvent cliquer pour quitter l'état sans appeler la boîte de dialogue d'authentification. L'étiquette par défaut est Cancel (Annuler) .
|
Non |
enableSingleSignOn
|
(Équipes MS seulement) Si vous avez configuré l'authentification unique Microsoft Teams (SSO), vous pouvez régler cette propriété à true afin que les utilisateurs déjà connectés à MS Teams n'aient pas à l'être de nouveau à la compétence. La valeur par défaut est false . Voir Configuration de l'authenfication unique pour les canaux Microsoft Teams.
L'authentification unique n'est pas prise en charge pour une utilisation avec les composants de calendrier. |
Non |
footerText
|
Améliore la boîte de dialogue d'ouverture de session en ajoutant du texte sous les options de connexion et d'annulation. Comme indiqué dans la rubrique Pieds de page, vous pouvez utiliser des expressions FreeMarker pour définir le texte du pied de page pour les canaux textuels. | Non |
linkLabel
|
Utilisez cette option pour remplacer l'étiquette du bouton sur lequel les utilisateurs peuvent cliquer pour appeler la boîte de dialogue d'authentification. L'étiquette par défaut est Get an access token (Obtenir un jeton d'accès) .
|
Non |
prompt
|
Chaîne à utiliser pour inviter l'utilisateur à la place du texte par défaut Please sign in (Veuillez vous connecter) .
|
Non |
showCancelOption
|
(Facultatif) Permet de spécifier si le bouton Cancel (Annuler) doit être affiché. Par défaut, cette option est réglée à true , c'est-à-dire que le bouton Cancel est affiché. Dans certains cas, comme pour les canaux de SMS, vous ne souhaitez pas afficher ce bouton. Vous pouvez configurer ce comportement avec une expression comme celle qui suit :
|
Non |
translate
|
Utilisez cette propriété booléenne facultative pour remplacer la valeur booléenne de la variable de contexte autoTranslate . Notez que la variable autoTranslate a la valeur false (exclure de la traduction automatique) sauf si elle a été réglée de manière explicite à true .
|
Non |
updateUserProfile
|
Si le fournisseur d'identités est un domaine d'identité IAM OCI et que vous voulez stocker le profil de l'utilisateur à partir d'IAM pendant la durée de la session, réglez cette propriété à true . Lorsqu'une authentification est demandée à l'utilisateur, si cette propriété est réglée à true , le composant tentera d'obtenir les données de profil d'utilisateur du fournisseur d'identités et de définir les résultats dans le mappage userProfile.<authorization service> . Par défaut, la valeur est false . Voir Stocker un profil d'utilisateur pendant toute la durée de la session.
|
Non |
Ce composant peut retourner les actions suivantes :
Action | Description |
---|---|
fail
|
L'utilisateur a cliqué sur le bouton d'annulation. |
pass
|
Le jeton d'accès a été extrait. |
textReceived
|
L'utilisateur a entré du texte au lieu de cliquer sur le bouton d'annulation ou de s'authentifier. |
Lorsque le moteur de dialogue rencontre le composant, le robot de compétence propose deux liens à l'utilisateur : Obtenir un jeton d'accès et Annuler (vous pouvez utiliser linkLabel
et cancelLabel
pour modifier le texte du lien).

Description de l'illustration oauth2accountlinksignin1.png
Si l'utilisateur clique sur le lien pour obtenir un jeton d'accès, le moteur affiche la page de connexion ou la boîte de dialogue d'authentification du fournisseur d'identités comme indiqué par le service d'authentification. Une fois la connexion réussie, il obtient le jeton d'accès, définit les variables identifiées par accessTokenVariableName
et authenticatedUserVariableName
, puis passe à l'état qui est nommé par l'action pass
(ou à l'état suivant en l'absence d'action pass
). Si l'utilisateur annule, l'action de republication est réglée à fail
. Si l'utilisateur entre du texte, l'action textReceived
est retournée.

Description de l'illustration oauth2accountlinksignin2.png
Comme mentionné précédemment, vous pouvez définir requiresAuthorization
pour un état afin de garantir que l'utilisateur dispose de l'autorisation nécessaire avant d'appeler le composant de l'état. Si l'utilisateur n'est pas encore autorisé, la boîte de dialogue appelle l'action system.authorizeUser
dans defaultTransitions
. Voici un exemple :
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"
Stocker un profil d'utilisateur pendant toute la durée de la session
Si votre compétence doit contrôler le flux de dialogue en fonction du profil de domaine d'identité IAM OCI de l'utilisateur, réglez la propriété updateUserProfile
du composant System.OAuth2AccountLink
à true
. Cela vous permet d'obtenir les informations de profil de l'utilisateur IAM à partir du mappage userProfile.<authorization service>
.
Lorsque updateUserProfile
est réglé à true
, le composant System.OAuth2AccountLink
extrait le profil d'utilisateur d'IAM et stocke les données dans un objet du mappage userProfile.<authorization service>
.
Par exemple, votre flux de dialogue affiche cet état :
oauth2AccountLink:
component: "System.OAuth2AccountLink"
properties:
authenticationService: "myIAMProvider"
authenticatedUserVariableName: "user.authuser"
accessTokenVariableName: "user.accessToken"
updateUserProfile: true
transitions:
actions:
pass: "askGreeting"
fail: "fail"
textReceived: "authTextReceived"
Après la connexion de l'utilisateur, l'objet userProfile.myIAMProvider
est prédéfini avec le profil de l'utilisateur dans IAM, comme illustré dans cet exemple :
"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"
}
]
}
Gérer plusieurs services d'authentification
Si le robot de compétence doit accéder à des jetons provenant de plusieurs services d'authentification, vous pouvez spécifier des noms de variable de jeton à accès unique et d'utilisateur authentifié pour chaque utilisation de ce composant, comme illustré dans cet exemple :
...
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
Cette rubrique décrit l'utilisation de ce composant en mode YAML. Pour plus d'informations sur son utilisation dans le concepteur de flux visuel, voir Réinitialiser les jetons OAuth 2.0.
Utilisez ce composant pour révoquer tous les jetons d'actualisation et d'accès de l'utilisateur connecté provenant du fournisseur d'identités que représente le service d'authentification. Il supprime également les jetons d'actualisation de la base de données. Pour l'utiliser, vous devez fournir l'URL de révocation du jeton d'actualisation du fournisseur d'identités dans l'interface utilisateur du service d'authentification.
La compétence doit inclure un état qui utilise le composant OAuth2AccountLink
pour le même service d'authentification et ce dernier doit être appelé avant l'état qui utilise le composant System.OAuth2ResetTokens
.
Propriété | Description | Obligatoire? |
---|---|---|
authenticationService |
Nom du service que vous avez créé dans l'interface utilisateur du service d'authentification pour le fournisseur d'identités OAuth2. Ce service doit avoir une URL de révocation du jeton d'actualisation valide. | Oui |
Ce composant peut retourner l'action suivante :
Action | Description |
---|---|
noRefreshTokenFound |
Aucun jeton d'actualisation n'est associé au service d'authentification pour l'utilisateur. |
System.OAuthAccountLink
Cette rubrique décrit l'utilisation de ce composant en mode YAML. Pour plus d'informations sur son utilisation dans le concepteur de flux visuel, voir OAuth Lien de compte.
Utilisez ce composant pour obtenir le code d'autorisation pour les services sécurisés par un code d'autorisation, par exemple LinkedIn, Twitter, Google ou Microsoft. Les composants personnalisés de la compétence peuvent échanger le code d'autorisation contre un jeton d'accès qu'ils utilisent ensuite pour appeler le service final.
Le composant dirige d'abord l'utilisateur vers la page de connexion du fournisseur d'identités. Après la connexion, le composant retourne le code d'autorisation dans une variable, que vous utilisez pour transmettre le code d'autorisation au composant personnalisé. L'API de composant personnalisé doit échanger le code d'autorisation, l'ID client et la clé secrète client contre un jeton d'accès d'utilisateur OAuth2.
Vous pouvez utiliser le paramètre requiresAuthorization
pour indiquer les états exigeant une autorisation avant d'être appelés. Pour les états qui nécessitent une autorisation, si l'utilisateur n'en dispose pas encore, l'état System.OAuthAccountLink
est appelé, puis le flux appelle l'état qui exigeait l'autorisation. Vous pouvez voir comment utiliser cette fonctionnalité dans Autorisation d'utilisateur dans les clavardages en groupe (elle sert à tous les types de clavardage, pas seulement à ceux en groupe).
Conseil :
Dans les compétences de la plate-forme versions 21.04 et ultérieures, les valeurs par défaut des propriétéscancelLabel
, linkLabel
et prompt
sont stockées dans le groupe de ressources de la compétence. Pour modifier une valeur par défaut, ouvrez la page Ensembles de ressources de la compétence, cliquez sur
Vous pouvez également modifier les messages Other - oauthCancelPrompt et Other - oauthSuccessPrompt dans l'ensemble de configuration.
Propriété | Description | Obligatoire? |
---|---|---|
authorizeURL |
L'URL de connexion. La rubrique Propriété authorizeURL décrit comment configurer cette URL. | Oui |
autoNumberPostbackActions |
Lorsque cette option est réglée à true , elle ajoute un préfixe numérique à l'option d'annulation. Même si cette option n'est pas réglée à true , la numérotation automatique peut être appliquée aux éléments de liste lorsque la configuration Enable Auto Numbering on Postback Actions (Activer la numérotation automatique pour les actions de republication) de l'assistant numérique est réglée à true . La numérotation automatique spécifique au canal peut être appliquée à tout robot de compétence enregistré dans un assistant numérique :
|
Non |
cancelLabel |
Utilisez cette option pour remplacer l'étiquette du bouton sur lequel les utilisateurs peuvent cliquer pour quitter l'état sans appeler la boîte de dialogue d'authentification. L'étiquette par défaut est Cancel (Annuler) .
|
Non |
footerText |
Améliore la boîte de dialogue d'ouverture de session en ajoutant du texte sous les options de connexion et d'annulation. Comme indiqué dans la rubrique Pieds de page, vous pouvez utiliser des expressions FreeMarker pour définir le texte du pied de page pour les canaux textuels. | Non |
linkLabel |
Utilisez cette option pour remplacer l'étiquette du bouton sur lequel les utilisateurs peuvent cliquer pour appeler la boîte de dialogue d'authentification. L'étiquette par défaut est Log In (Connexion) .
|
Non |
prompt |
Chaîne à utiliser pour inviter l'utilisateur à se connecter. | Oui |
showCancelOption |
(Facultatif) Permet de spécifier si le bouton Cancel (Annuler) doit être affiché. Par défaut, cette option est réglée à true , c'est-à-dire que le bouton Cancel est affiché. Dans certains cas, comme pour les canaux de SMS, vous ne souhaitez pas afficher ce bouton. Vous pouvez configurer ce comportement avec une expression comme celle qui suit :
|
Oui |
translate |
Utilisez cette propriété booléenne facultative pour remplacer la valeur booléenne de la variable de contexte autoTranslate . Notez que la variable autoTranslate a la valeur false (exclure de la traduction automatique) sauf si elle a été réglée de manière explicite à true .
|
Non |
variable |
Spécifie la variable dans laquelle stocker le code d'autorisation. Vous pouvez la déclarer dans le noeud de contexte en tant quevariable, chaîne ou un autre type de variable pris en charge. Il peut également s'agir d'une variable d'utilisateur. | Oui |
Ce composant peut retourner les actions suivantes :
Action | Description |
---|---|
fail |
L'utilisateur a cliqué sur le bouton d'annulation. |
pass |
Le code d'autorisation a été extrait. |
textReceived |
L'utilisateur a entré du texte au lieu de cliquer sur le bouton d'annulation ou de s'authentifier. |
Cet exemple présente les propriétés obligatoires que vous devez définir pour le composant System.OAuthAccountLink
: prompt
qui précise le message de connexion, variable
qui indique le composant dans lequel stocker le code d'autorisation et authorizeURL
qui définit à la fois l'URL OAuth du fournisseur et l'URL de redirection qui reçoit le code d'autorisation.
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
Lorsque le moteur de dialogue détecte ce composant, le robot de compétence invite l'utilisateur avec deux liens — Login (Connexion) et Cancel (Annuler).
Il existe plusieurs façons d'effectuer une transition à partir de ce composant :
-
L'utilisateur clique sur le bouton d'annulation et le composant passe à l'état qui est nommé par l'action
fail
. -
L'utilisateur ne clique sur aucun bouton mais entre du texte. Le composant passe à l'état qui est nommé par l'action
textReceived
. -
L'utilisateur clique sur le lien de connexion et le canal affiche la page de connexion du fournisseur d'identités ou sa boîte de dialogue d'authentification en tant que vue Web, comme illustré dans l'exemple ci-dessous. Une fois l'autorisation reçue, le composant passe à l'état nommé par l'action
pass
(ou à l'état suivant s'il n'y a pas d'actionpass
), qui appelle généralement un composant personnalisé qui échangé le code d'autorisation contre un jeton d'accès.
Si la fenêtre de test n'affiche pas la vue Web, coupez et collez le texte du lien dans votre navigateur.
Propriété authorizeURL
Pour configurer cette propriété, vous devez commencer par l'URL du fournisseur d'identités, comme https://www.linkedin.com/oauth/v2/authorization
dans l'exemple. Ajoutez ensuite les paramètres OAuth suivants à cette URL :
-
response_type
: Réglé àcode
, car le robot de compétence attend un code d'autorisation. -
client_id
: Valeur de clé de l'API obtenue lors de l'enregistrement de votre application auprès du fournisseur d'identités. -
scope
: Liste des autorisations d'accès aux ressources pour le compte de l'utilisateur. Il s'agit des autorisations que vous définissez lors de l'enregistrement de votre application auprès du fournisseur. Elles peuvent varier en fonction du fournisseur : pour LinkedIn,r_basicprofile
(présentée dans l'exemple) etr_emailadress
; pour Microsoft, elles sont définies à l'aide d'openid email
et d'openid profile
. -
redirect_uri
: URI de réacheminement utilisé pour enregistrer votre application auprès du fournisseur d'identités. Il indique au fournisseur où rediriger les utilisateurs. Ce paramètre, qui est le nom d'hôte du service Digital Assistant auquel s'ajouteconnectors/v2/callback
, est le point d'extrémité qui reçoit le code d'autorisation, puis l'associe au canal actif. La propriétéredirect_uri
est basée sur l'URL Webhook générée lors de la création d'un canal. Voir À quoi servent les canaux?Assurez-vous que la valeur entrée pour
redirect_uri
correspond exactement à l'URI de redirection fourni lorsque vous avez enregistré votre application. Dans les deux instances,connectors/v2/callback
doit être ajouté à l'URI.
Si votre instance est provisionnée sur la plate-forme Oracle Cloud (comme c'est le cas pour toutes les instances de la version 19.4.1), utilisez v1
au lieu de v2
.