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

Note

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 :

  1. 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.
  2. 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

Note

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 :

  1. 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.
  2. 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és cancelLabel, 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 surIcône Ensembles de ressources, sélectionnez l'onglet Configuration et modifiez le message de la clé OAuth2AccountLink - <nom de propriété>. Si vous utilisez l'ensemble de ressources de la compétence pour modifier la valeur par défaut, vous n'avez pas à inclure la propriété dans le composant, sauf si vous voulez remplacer la valeur par défaut.

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 : accessToken.

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 : authenticatedUser.

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 à true, la numérotation automatique peut être appliquée aux actions de republication lorsque la configuration de l'option 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 :

${(system.message.channelConversation.channelType=='twilio')?then('true','false')}

Voir Numérotation automatique pour les canaux textuels dans les flux de dialogue YAML et

Numérotation automatique pour les assistants numériques

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 :
${(system.message.channelConversation.channelType=='twilio')?then('false','true')}
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).


Une description de oauth2accountlinksignin1.png suit
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.


Une description de oauth2accountlinksignin2.png suit
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

Note

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

Note

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és cancelLabel, 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 surIcône Ensembles de ressources, sélectionnez l'onglet Configuration et modifiez le message de la clé OAuthAccountLink - <property name>. Si vous utilisez l'ensemble de ressources de la compétence pour modifier la valeur par défaut, vous n'avez pas à inclure la propriété dans le composant, sauf si vous voulez remplacer la valeur par défaut.

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 :
${(system.message.channelConversation.channelType=='twilio')?then('true','false')}
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 :
${(system.message.channelConversation.channelType=='twilio')?then('false','true')}
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'action pass), 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 :

  1. response_type : Réglé à code, car le robot de compétence attend un code d'autorisation.

  2. client_id : Valeur de clé de l'API obtenue lors de l'enregistrement de votre application auprès du fournisseur d'identités.

  3. 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) et r_emailadress; pour Microsoft, elles sont définies à l'aide d'openid email et d'openid profile.

  4. 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'ajoute connectors/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/callbackdoit être ajouté à l'URI.

Note

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.