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 traite de l'utilisation de ce composant en mode YAML. Pour plus d'informations sur son utilisation dans le concepteur visuel de flux, reportez-vous à Client OAuth 2.0.
Utilisez ce composant pour obtenir un jeton d'accès OAuth2 de type d'octroi Informations d'identification client. En d'autres termes, vous l'utilisez pour obtenir un jeton d'accès basé sur les informations d'identification du client, mais pas sur son nom ni sur son mot de passe. Vous pouvez utiliser ce composant pour obtenir un jeton qui permet d'accéder aux ressources client protégées par Oracle Identity Cloud Service ou Oracle Access Manager (OAM).
Si vous devez accéder aux ressources pour le compte d'un utilisateur, reportez-vous à System.OAuth2AccountLink et à System.OAuthAccountLink.
Pour pouvoir utiliser ce composant dans une brique, vous devez effectuer les tâches suivantes :
- S'il n'est pas déjà inscrit, inscrivez le client auprès du fournisseur d'identités, comme décrit dans Inscription de fournisseur d'identités.
- Ajoutez un service d'authentification d'informations d'identification client pour le fournisseur d'identités, comme décrit dans Services d'authentification.
Propriété | Description | Requis ? |
---|---|---|
authenticationService |
Nom du service d'informations d'identification client créé dans l'interface utilisateur des services d'authentification du 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 autre type de variable pris en charge. Il peut également s'agir d'une variable de niveau utilisateur. Par exemple : user.accessToken .
|
Oui |
Ce composant n'a aucune action. Pour gérer les problèmes système susceptibles de se produire, ajoutez une transition "next" qui passe à un état permettant de gérer ces 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 traite de l'utilisation de ce composant en mode YAML. Pour plus d'informations sur son utilisation dans le concepteur visuel de flux, reportez-vous à OAuth 2.0 Account Link.
Utilisez ce composant afin d'obtenir un jeton d'accès utilisateur OAuth2 (de type d'octroi Code d'autorisation) 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 effectue toutes les étapes pour le flux OAuth2 à 3 acteurs et renvoie le jeton d'accès OAuth2.
Vous pouvez utiliser le paramètre requiresAuthorization
afin d'indiquer les états nécessitant une autorisation pour être appelés. Pour les états nécessitant une autorisation, si l'utilisateur n'en dispose pas encore, l'état System.OAuth2AccountLink
est appelé, puis le flux appelle l'état nécessitant une autorisation. Pour découvrir comment utiliser cette fonctionnalité, reportez-vous à Autorisation utilisateur dans les discussions de groupe (fonctionne pour tous les types de discussion, pas uniquement pour les discussions de groupe).
Si vous devez obtenir un jeton d'accès de type Informations d'identification client pour accéder aux ressources client, reportez-vous à System.OAuth2Client.
Pour pouvoir utiliser ce composant dans une brique, vous devez effectuer les tâches suivantes :
- S'il n'a pas déjà été inscrit, inscrivez le client auprès du fournisseur d'identités, comme décrit dans Inscription de 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 durée de conservation spécifiée pour le service d'authentification. Le back-end Digital Assistant peut utiliser le jeton d'actualisation, s'il est disponible, pour obtenir un nouveau jeton d'accès sans nécessiter de nouvelle connexion de la part de l'utilisateur.
Conseil :
Dans les briques avec les versions 21.04 et ultérieures de la plate-forme, les valeurs par défaut des propriétéscancelLabel
, linkLabel
et prompt
sont stockées dans le groupe de ressources de la brique. Pour modifier une valeur par défaut, ouvrez la page Groupe de ressources de la brique, cliquez sur 
Vous pouvez également modifier les messages Autre - oauthCancelPrompt et Autre - oauthSuccessPrompt dans le groupe de configuration.
Propriété | Description | Requis ? |
---|---|---|
accessTokenVariableName
|
Spécifie la variable dans laquelle stocker le jeton d'accès. S'il s'agit d'une variable de niveau utilisateur, par exemple user.accessToken , elle peut être partagée entre les briques.
Valeur par défaut : |
Non |
authenticatedUserVariableName
|
Définit la variable dans laquelle stocker le nom utilisateur authentifié (nom connu par le fournisseur d'identités). S'il s'agit d'une variable de niveau utilisateur, par exemple user.authenticatedUser , elle peut être partagée entre les briques.
Valeur par défaut : |
Non |
authenticationService
|
Nom du service de code d'autorisation créé dans l'interface utilisateur des services d'authentification du fournisseur d'identités OAuth2. | Oui |
autoNumberPostbackActions
|
Lorsqu'elle est définie sur true , cette option ajoute un nombre en tant que préfixe à l'option d'annulation, qui est une action de postback côté serveur. Aucun numéro n'est ajouté en tant que préfixe à l'option d'obtention de jeton d'accès car il s'agit d'une action d'URL, qui est une action côté client qui ne peut pas porter un numéro de séquence en tant que préfixe.
Même si vous n'avez pas défini cette option sur
Reportez-vous à Numérotation automatique pour les canaux de texte uniquement dans les flux de dialogue YAML et à |
Non |
cancelLabel
|
Utilisez cette option pour remplacer le libellé du bouton sur lequel les utilisateurs peuvent cliquer pour quitter l'état sans appeler la boîte de dialogue d'authentification. Le libellé par défaut est Cancel .
|
Non |
enableSingleSignOn
|
(MS Teams uniquement) Si vous avez configuré l'accès avec connexion unique (SSO) Microsoft Teams, vous pouvez définir cette propriété sur true afin que les utilisateurs qui se sont déjà connectés à MS Teams n'aient pas besoin de se connecter à la brique. La valeur par défaut est false . Reportez-vous à Configuration de l'authentification unique pour les canaux Microsoft Teams.
SSO n'est pas pris en charge avec les composants de calendrier. |
Non |
footerText
|
Améliore la boîte de dialogue de connexion en ajoutant du texte sous les options de connexion et d'annulation. Comme décrit dans Pieds de page, vous pouvez utiliser des expressions FreeMarker afin d'appliquer des conditions au texte de pied de page pour les canaux de texte uniquement. | Non |
linkLabel
|
Utilisez cette option pour remplacer le libellé du bouton sur lequel les utilisateurs peuvent cliquer pour appeler la boîte de dialogue d'authentification. Le libellé par défaut est Get an access token .
|
Non |
prompt
|
Chaîne à utiliser pour inviter l'utilisateur au lieu de la valeur par défaut Please sign in .
|
Non |
showCancelOption
|
(Facultatif) Permet d'indiquer si vous souhaitez afficher ou non le bouton Annuler. Par défaut, cette option est définie sur true , ce qui signifie que le bouton Annuler est affiché. Dans certains cas, par exemple pour les canaux SMS, vous pouvez ne pas afficher ce bouton. Vous pouvez configurer ce comportement à l'aide d'une expression du type :
|
Non |
translate
|
Utilisez cette propriété booléenne facultative pour remplacer la valeur booléenne de la variable de contexte autoTranslate . autoTranslate est false (exclusion de la traduction automatique), sauf si cette variable de contexte a été explicitement définie sur true .
|
Non |
updateUserProfile
|
Si le fournisseur d'identités est un domaine d'identité OCI IAM et que vous voulez stocker le profil de l'utilisateur à partir d'IAM pendant la durée de la session, définissez cette propriété sur true . Lorsqu'une question de vérification est posée à l'utilisateur à des fins d'authentification, si cette propriété est définie sur true , le composant tente d'extraire les données de profil utilisateur du fournisseur d'identités et de définir les résultats dans la correspondance userProfile.<authorization service> . La valeur par défaut est false . Reportez-vous à Stockage du profil utilisateur pour la durée de la session.
|
Non |
Ce composant peut renvoyer les actions suivantes :
Action | Description |
---|---|
fail
|
L'utilisateur a cliqué sur le bouton Annuler. |
pass
|
Le jeton d'accès a été extrait. |
textReceived
|
L'utilisateur a saisi du texte au lieu de cliquer sur le bouton d'annulation ou de s'authentifier. |
Lorsque le moteur de dialogue rencontre le composant, le bot de brique 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'image oauth2accountlinksignin1.png
Si l'utilisateur clique sur le lien permettant d'obtenir un jeton d'accès, cela affiche la page de connexion ou la boîte de dialogue d'authentification du fournisseur d'identités, telle que définie par le service d'authentification. Une fois la connexion établie, il obtient le jeton d'accès, définit les valeurs des variables identifiées par accessTokenVariableName
et authenticatedUserVariableName
, puis passe à l'état nommé par l'action pass
(ou à l'état suivant si l'action pass
n'existe pas). Si l'utilisateur annule, l'action de postback est définie sur fail
. Si l'utilisateur saisit du texte, il renvoie l'action textReceived
.

Description de l'image oauth2accountlinksignin2.png
Comme indiqué précédemment, vous pouvez définir requiresAuthorization
pour un état afin de vous assurer que l'utilisateur dispose des autorisations nécessaires avant d'appeler le composant de l'état. Si l'utilisateur ne dispose pas encore des autorisations, 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"
Stockage du profil utilisateur pour la durée de la session
Si votre brique doit contrôler le flux de dialogue en fonction du profil de domaine d'identité OCI IAM de l'utilisateur, définissez la propriété updateUserProfile
du composant System.OAuth2AccountLink
sur true
. Permet d'obtenir les informations de profil de l'utilisateur IAM à partir de la correspondance userProfile.<authorization service>
.
Lorsque updateUserProfile
est défini sur true
, le composant System.OAuth2AccountLink
extrait le profil utilisateur d'IAM et stocke les données dans un objet de la correspondance userProfile.<authorization service>
.
Supposons, par exemple, que l'état de votre flux de dialogue est le suivant :
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 à partir d'IAM, comme illustré dans l'exemple ci-dessous :
"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"
}
]
}
Gestion de plusieurs services d'authentification
Si le bot de brique a besoin de jetons d'accès provenant de plusieurs services d'authentification, vous pouvez indiquer des noms uniques de variable d'utilisateur authentifié et de jeton d'accès pour chaque utilisation de ce composant, comme indiqué dans l'exemple suivant :
...
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 traite de l'utilisation de ce composant en mode YAML. Pour plus d'informations sur son utilisation dans le concepteur de flux visuel, reportez-vous à 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é du fournisseur d'identités représenté par le service d'authentification. Il enlève également les jetons d'actualisation de la base de données. Pour utiliser ce composant, vous devez fournir l'URL de révocation de jeton d'actualisation du fournisseur d'identités dans l'interface utilisateur du service d'authentification.
La brique doit inclure un état qui utilise le composant OAuth2AccountLink
pour le même service d'authentification, et doit être appelée avant l'état qui utilise le composant System.OAuth2ResetTokens
.
Propriété | Description | Requis ? |
---|---|---|
authenticationService |
Nom du service créé dans l'interface utilisateur du service d'authentification du fournisseur d'identités OAuth2. Le service doit disposer d'une URL de révocation de jeton d'actualisation valide. | Oui |
Ce composant peut renvoyer l'action suivante :
Action | Description |
---|---|
noRefreshTokenFound |
Aucun jeton d'actualisation n'est associé au service d'authentification pour l'utilisateur. |
System.OAuthAccountLink
Cette rubrique traite de l'utilisation de ce composant en mode YAML. Pour plus d'informations sur son utilisation dans le concepteur visuel de flux, reportez-vous à OAuth Lien de compte.
Utilisez ce composant pour obtenir le code d'autorisation des services sécurisés par le flux d'octroi de code d'autorisation, comme LinkedIn, Twitter, Google ou Microsoft. Les composants personnalisés de la brique peuvent échanger le code d'autorisation avec un jeton d'accès, qui sera ensuite utilisé pour appeler le service de fin.
Le composant dirige d'abord l'utilisateur vers la page de connexion du fournisseur d'identités. Une fois la connexion établie, le composant renvoie le code d'autorisation dans une variable, que vous utilisez pour transmettre le code d'autorisation au composant personnalisé. L'API du composant personnalisé doit échanger le code d'autorisation, l'ID client et la clé secrète du client avec un jeton d'accès utilisateur OAuth2.
Vous pouvez utiliser le paramètre requiresAuthorization
afin d'indiquer les états nécessitant une autorisation pour être appelés. Pour les états nécessitant une autorisation, si l'utilisateur n'en dispose pas encore, l'état System.OAuthAccountLink
est appelé, puis le flux appelle l'état nécessitant une autorisation. Pour découvrir comment utiliser cette fonctionnalité, reportez-vous à Autorisation utilisateur dans les discussions de groupe (fonctionne pour tous les types de discussion, pas uniquement pour les discussions de groupe).
Conseil :
Dans les briques avec les versions 21.04 et ultérieures de la plate-forme, les valeurs par défaut des propriétéscancelLabel
, linkLabel
et prompt
sont stockées dans le groupe de ressources de la brique. Pour modifier une valeur par défaut, ouvrez la page Groupe de ressources de la brique, cliquez sur 
Vous pouvez également modifier les messages Autre - oauthCancelPrompt et Autre - oauthSuccessPrompt dans le groupe de configuration.
Propriété | Description | Requis ? |
---|---|---|
authorizeURL |
URL de connexion. La section Propriété authorizeURL décrit la procédure de configuration de cette URL. | Oui |
autoNumberPostbackActions |
Lorsqu'elle est définie sur true , cette option ajoute un nombre en tant que préfixe à l'option d'annulation. Même si vous n'avez pas défini cette option sur true , la numérotation automatique peut être appliquée aux éléments de liste lorsque la configuration Activer la numérotation automatique sur les actions de postback de l'assistant numérique est définie sur true . La numérotation automatique propre au canal peut être appliquée à tous les bots de brique enregistrés dans un assistant numérique :
|
Non |
cancelLabel |
Utilisez cette option pour remplacer le libellé du bouton sur lequel les utilisateurs peuvent cliquer pour quitter l'état sans appeler la boîte de dialogue d'authentification. Le libellé par défaut est Cancel .
|
Non |
footerText |
Améliore la boîte de dialogue de connexion en ajoutant du texte sous les options de connexion et d'annulation. Comme décrit dans Pieds de page, vous pouvez utiliser des expressions FreeMarker afin d'appliquer des conditions au texte de pied de page pour les canaux de texte uniquement. | Non |
linkLabel |
Utilisez cette option pour remplacer le libellé du bouton sur lequel les utilisateurs peuvent cliquer pour appeler la boîte de dialogue d'authentification. Le libellé par défaut est Log In .
|
Non |
prompt |
Chaîne à utiliser pour inviter l'utilisateur à se connecter. | Oui |
showCancelOption |
(Facultatif) Permet d'indiquer si vous souhaitez afficher ou non le bouton Annuler. Par défaut, cette option est définie sur true , ce qui signifie que le bouton Annuler est affiché. Dans certains cas, par exemple pour les canaux SMS, vous pouvez ne pas afficher ce bouton. Vous pouvez configurer ce comportement à l'aide d'une expression du type :
|
Oui |
translate |
Utilisez cette propriété booléenne facultative pour remplacer la valeur booléenne de la variable de contexte autoTranslate . autoTranslate est false (exclusion de la traduction automatique), sauf si cette variable de contexte a été explicitement définie sur 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 que variable, chaîne ou autre type de variable pris en charge. Il peut également s'agir d'une variable utilisateur. | Oui |
Ce composant peut renvoyer les actions suivantes :
Action | Description |
---|---|
fail |
L'utilisateur a cliqué sur le bouton Annuler. |
pass |
Le code d'autorisation a été extrait. |
textReceived |
L'utilisateur a saisi du texte au lieu de cliquer sur le bouton d'annulation ou de s'authentifier. |
Cet exemple présente les propriétés requises que vous devez définir pour le composant System.OAuthAccountLink
: prompt
, qui spécifie le message de connexion, variable
, qui indique au composant où stocker le code d'autorisation et authorizeURL
qui définit l'URL OAuth du fournisseur et l'URL de réacheminement 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 rencontre ce composant, le bot de brique invite l'utilisateur à interagir avec deux liens : Connexion et 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 nommé par l'action
fail
. -
L'utilisateur ne clique sur aucun bouton, mais saisit du texte à la place. Le composant passe à l'état 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 sous forme de vue Web, comme illustré dans l'exemple ci-dessous. Après l'autorisation, le composant passe à l'état nommé par l'action
pass
(ou à l'état suivant s'il n'existe pas d'actionpass
), qui appelle généralement un composant personnalisé qui échange le code d'autorisation avec 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. Ensuite, ajoutez les paramètres OAuth suivants à cette URL :
-
response_type
: définie surcode
car le bot de brique attend un code d'autorisation. -
client_id
: valeur de clé d'API obtenue lorsque vous avez inscrit l'application auprès du fournisseur d'identités. -
scope
: liste des droits d'accès permettant d'accéder aux ressources au nom de l'utilisateur. Il s'agit des droits d'accès que vous définissez lorsque vous inscrivez votre application auprès du fournisseur. Ils peuvent varier selon le fournisseur : pour LinkedIn, il s'agit des éléments suivants :r_basicprofile
(illustrés dans l'exemple) etr_emailadress
; pour Microsoft, ils sont définis à l'aide des élémentsopenid email
etopenid profile
. -
redirect_uri
: il s'agit de l'URI de réacheminement que vous avez utilisé pour inscrire votre application auprès du fournisseur d'identités et qui indique au fournisseur où rediriger les utilisateurs. Ce paramètre, qui est le nom d'hôte du service Digital Assistant avec l'ajout deconnectors/v2/callback
, est l'adresse qui reçoit le code d'autorisation, puis qui l'associe au canal actif. La propriétéredirect_uri
est basée sur l'URL de webhook générée lors de la création d'un canal. Reportez-vous à Qu'est-ce qu'un canal ?Assurez-vous que la valeur saisie pour
redirect_uri
correspond à l'URI de réacheminement fourni lors de l'inscription exacte de l'application. Dans les deux cas, l'URI doit avoir le suffixeconnectors/v2/callback
.
Si votre instance est provisionnée sur Oracle Cloud Platform (comme toutes les instances de la version 19.4.1), utilisez v1
au lieu de v2
.