Sicurezza

Questi sono i componenti disponibili nella categoria Sicurezza dell'editor di flussi di finestre di dialogo basato su YAML.

System.OAuth2Client

Nota

In questo argomento viene descritto l'uso di questo componente in modalità YAML. Per informazioni sull'utilizzo in Visual Flow Designer, vedere OAuth 2.0 Client.

Utilizzare questo componente per ottenere un token di accesso OAuth2 del tipo di privilegio Credenziali client. Cioè, lo usi per ottenere un token di accesso basato sulle credenziali del client, e non sul nome e sulla password dell'utente. È possibile utilizzare questo componente per ottenere un token che abilita l'accesso alle risorse client protette da Oracle Identity Cloud Service o Oracle Access Manager (OAM).

Se è necessario accedere alle risorse per conto di un utente, vedere System.OAuth2AccountLink e System.OAuthAccountLink.

Per poter utilizzare questo componente in uno skill, è necessario eseguire i task riportati di seguito.

  1. Se non è già registrato, registrare il client con il provider di identità come descritto nella sezione Registrazione provider di identità.
  2. Aggiungere un servizio di autenticazione client-credenziali per il provider di identità, come descritto in Authentication Services.
Proprietà descrizione; Richiesto?
authenticationService Il nome del servizio client-credenziali creato nell'interfaccia utente di Authentication Services per il provider di identità OAuth2.
accessTokenVariableName Specifica la variabile in cui memorizzare il token di accesso. È possibile dichiararlo nel nodo context come variabile, stringa o altro tipo di variabile supportato. Può anche essere una variabile con ambito utente. Ad esempio: user.accessToken.

Questo componente non ha azioni. Per gestire i problemi di sistema che potrebbero verificarsi, aggiungere una transizione successiva che passa a uno stato in grado di gestire tali errori.

Di seguito è riportato un esempio di stato che utilizza questo componente.

  getAccessToken:
    component: "System.OAuth2Client"
    properties:
      authenticationService: "myAuthenticationService"
      accessTokenVariableName: "myAuthServiceToken"
    transitions:
      next: "next"
      error: "error" # handle auth service issues

System.OAuth2AccountLink

Nota

In questo argomento viene descritto l'uso di questo componente in modalità YAML. Per informazioni sull'utilizzo in Visual Flow Designer, vedere OAuth 2.0 Collegamento Account.

Utilizzare questo componente per ottenere un token di accesso utente OAuth2 (codice autorizzazione tipo di concessione) per le risorse protette da OCI IAM, Oracle Access Manager (OAM), dalla piattaforma di identità Microsoft o dall'autorizzazione Google OAuth 2.0. Questo componente completa tutti i passi per il flusso OAuth2 a 3 fasi e restituisce il token di accesso OAuth2.

È possibile utilizzare l'impostazione requiresAuthorization per indicare gli stati che richiedono l'autorizzazione prima di poter essere richiamati. Per gli stati che richiedono l'autorizzazione, se l'utente non ha ancora effettuato l'autorizzazione, viene richiamato lo stato System.OAuth2AccountLink, quindi il flusso richiama lo stato che richiede l'autorizzazione. È possibile imparare a utilizzare questa funzione in Autorizzazione utente nelle chat di gruppo (funziona per tutti i tipi di chat, non solo per le chat di gruppo).

Se è necessario ottenere un token di accesso di tipo Credenziali client di tipo grant per accedere alle risorse client, vedere System.OAuth2Client.

Per poter utilizzare questo componente in uno skill, è necessario eseguire i task riportati di seguito.

  1. Se non è già stata registrata, registrare il client con il provider di identità come descritto nella sezione Registrazione provider di identità.
  2. Aggiungere un servizio di autenticazione per il provider di identità, come descritto in Servizi di autenticazione.

Alcuni provider di identità emettono token di aggiornamento. Quando si utilizza questo componente, Digital Assistant memorizza il token di aggiornamento per il periodo di conservazione specificato per il servizio di autenticazione. Il backend di Digital Assistant può utilizzare il token di aggiornamento, se disponibile, per ottenere un nuovo token di accesso senza che l'utente debba eseguire di nuovo l'accesso.

Suggerimento

Negli skill con versione piattaforma 21.04 e successive, i valori predefiniti per le proprietà cancelLabel, linkLabel e prompt vengono memorizzati nel bundle di risorse dello skill. Per modificare un'impostazione predefinita, aprire la pagina Bundle delle risorse della competenza, fare clic su Icona Bundle risorse, selezionare la scheda Configurazione e modificare il messaggio per la chiave OAuth2AccountLink - <property name>. Se si utilizza il bundle di risorse dello skill per modificare l'impostazione predefinita, non è necessario includere la proprietà nel componente a meno che non si desideri sostituire l'impostazione predefinita.

È inoltre possibile modificare i messaggi Altro - oauthCancelPrompt e Altro - oauthSuccessPrompt nel bundle di configurazione.

Proprietà descrizione; Richiesto?
accessTokenVariableName Specifica la variabile in cui memorizzare il token di accesso. Se la variabile è definita dall'utente, ad esempio user.accessToken, può essere condivisa tra gli skill.

L'impostazione predefinita è accessToken.

No
authenticatedUserVariableName Specifica la variabile in cui memorizzare il nome utente autenticato (il nome noto dal provider di identità). Se la variabile è definita dall'utente, ad esempio user.authenticatedUser, può essere condivisa tra gli skill.

L'impostazione predefinita è authenticatedUser.

No
authenticationService Nome del servizio di codice di autorizzazione creato nell'interfaccia utente di Authentication Services per il provider di identità OAuth2.
autoNumberPostbackActions Quando è impostata su true, questa opzione antepone un numero all'opzione di annullamento, che è un'azione di postback lato server. Non antepone un numero all'opzione per ottenere un token di accesso perché si tratta di un'azione URL, che è un'azione lato client che non può essere preceduta da un numero di sequenza.

Anche se questa opzione non è stata impostata su true, è possibile applicare la numerazione automatica alle azioni di postback quando la configurazione di Abilita numerazione automatica su azioni postback dell'assistente digitale è impostata su true. La numerazione automatica specifica del canale può essere applicata a qualsiasi bot di competenze registrato a un assistente digitale:

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

Vedere Numerazione automatica per i canali di solo testo nei flussi di finestre di dialogo YAML e

Numerazione automatica per assistenti digitali

No
cancelLabel Consente di sostituire l'etichetta del pulsante su cui gli utenti possono fare clic per lasciare lo stato senza richiamare la finestra di dialogo di autenticazione. L'etichetta predefinita è Cancel. No
enableSingleSignOn (Solo per i team MS) Se è stato impostato il Single Sign-On (SSO) di Microsoft Teams, è possibile impostarlo su true in modo che gli utenti che hanno già effettuato l'accesso a MS Teams non debbano accedere allo skill. L'impostazione predefinita è false. Vedere Configurazione di SSO per canali Microsoft Teams.

SSO non supportato per l'uso con i componenti del calendario.

No
footerText Migliora la finestra di dialogo di accesso aggiungendo testo sotto le opzioni di accesso e annullamento. Come descritto in Piè di pagina, è possibile utilizzare le espressioni FreeMarker per condizionare il testo del piè di pagina per i canali di solo testo. No
linkLabel Consente di sostituire l'etichetta del pulsante su cui gli utenti possono fare clic per richiamare la finestra di dialogo di autenticazione. L'etichetta predefinita è Get an access token. No
prompt La stringa da utilizzare per richiedere all'utente anziché il valore predefinito Please sign in. No
showCancelOption (Facoltativo) Consente di specificare se visualizzare o meno il pulsante Annulla. Per impostazione predefinita, questa opzione è impostata su true, ovvero viene visualizzato il pulsante Annulla. In alcuni casi, ad esempio per i canali SMS, potrebbe non essere necessario visualizzare questo pulsante. È possibile configurare tale comportamento con un'espressione simile alla seguente:
${(system.message.channelConversation.channelType=='twilio')?then('false','true')}
No
translate Utilizzare questa proprietà booleana facoltativa per sostituire il valore booleano della variabile di contesto autoTranslate. Si noti che autoTranslate è false (escludi dalla traduzione automatica) a meno che tale variabile di contesto non sia stata impostata in modo esplicito su true. No
updateUserProfile Se il provider di identità è un dominio di Identity IAM OCI e si desidera memorizzare il profilo dell'utente da IAM per la durata della sessione, impostare questa proprietà su true. Quando viene richiesta la verifica dell'autenticazione a un utente, se questa proprietà è impostata su true, il componente tenterà di recuperare i dati del profilo utente dal provider di identità e di impostare i risultati nella mappa userProfile.<authorization service>. Per impostazione predefinita, il valore è false. Vedere Memorizza profilo utente per la durata della sessione. No

Questo componente può restituire le seguenti azioni:

Azione descrizione;
fail L'utente ha fatto clic sul pulsante Annulla.
pass Recupero del token di accesso riuscito.
textReceived L'utente ha immesso il testo anziché fare clic sul pulsante Annulla o eseguire l'autenticazione.

Quando il motore della finestra di dialogo incontra il componente, il bot skill richiede all'utente due collegamenti: Ottieni un token di accesso e Annulla (è possibile utilizzare linkLabel e cancelLabel per modificare il testo del collegamento).


Descrizione di oauth2accountlinksignin1.png
Descrizione dell'immagine oauth2accountlinksignin1.png

Se l'utente fa clic sul collegamento per ottenere un token di accesso, visualizza la pagina di login o la finestra di dialogo di autenticazione del provider di identità, come specificato dal servizio di autenticazione. Dopo aver eseguito correttamente il login, ottiene il token di accesso, imposta i valori per le variabili identificate da accessTokenVariableName e authenticatedUserVariableName, quindi passa allo stato denominato dall'azione pass o allo stato successivo se non esiste un'azione pass. Se l'utente annulla l'operazione di postback viene impostata su fail. Se l'utente immette testo, restituisce l'azione textReceived.


Descrizione di oauth2accountlinksignin2.png
Descrizione dell'immagine oauth2accountlinksignin2.png

Come accennato in precedenza, è possibile impostare requiresAuthorization per uno stato per assicurarsi che l'utente sia autorizzato prima di richiamare il componente dello stato. Se l'utente non ha ancora ricevuto l'autorizzazione, la finestra di dialogo richiama l'azione system.authorizeUser in defaultTransitions. Esempio:

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"     

Memorizza il profilo utente per la durata della sessione

Se lo skill deve controllare il flusso di finestre di dialogo in base al profilo del dominio di Identity IAM OCI dell'utente, impostare la proprietà updateUserProfile del componente System.OAuth2AccountLink su true. Ciò consente di ottenere le informazioni sul profilo dell'utente IAM dalla mappa userProfile.<authorization service>.

Quando updateUserProfile è impostato su true, il componente System.OAuth2AccountLink recupera il profilo utente da IAM e memorizza i dati in un oggetto nella mappa userProfile.<authorization service>.

Si supponga, ad esempio, che il flusso della finestra di dialogo abbia questo stato:

  oauth2AccountLink:
    component: "System.OAuth2AccountLink"
    properties:
      authenticationService: "myIAMProvider"
      authenticatedUserVariableName: "user.authuser"
      accessTokenVariableName: "user.accessToken"
      updateUserProfile: true
    transitions:
      actions:
        pass: "askGreeting"
        fail: "fail"
        textReceived: "authTextReceived"

Dopo l'accesso dell'utente, l'oggetto userProfile.myIAMProvider viene popolato con il profilo dell'utente da IAM, come illustrato nel seguente esempio:

"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"
    }
  ]
}

Gestisci più servizi di autenticazione

Se il bot skill richiede token di accesso da più servizi di autenticazione, è possibile specificare nomi di variabile utente con token di accesso e autenticati univoci per ogni utilizzo di questo componente, come illustrato nell'esempio riportato di seguito.

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

Nota

In questo argomento viene descritto l'uso di questo componente in modalità YAML. Per informazioni sull'utilizzo in Visual Flow Designer, vedere Reimpostare i token OAuth 2.0.

Utilizzare questo componente per revocare tutti i token di aggiornamento e accesso utente dell'utente collegato dal provider di identità rappresentato dal servizio di autenticazione. Rimuove inoltre i token di aggiornamento dal database. Per utilizzare questo componente, è necessario fornire l'URL del token di aggiornamento di revoca del provider di identità nell'interfaccia utente del servizio di autenticazione.

La competenza deve includere uno stato che utilizza il componente OAuth2AccountLink per lo stesso servizio di autenticazione e deve essere richiamata prima dello stato che utilizza il componente System.OAuth2ResetTokens.

Proprietà descrizione; Richiesto?
authenticationService Il nome del servizio creato nell'interfaccia utente del servizio di autenticazione per il provider di identità OAuth2. Questo servizio deve avere un URL di revoca del token di aggiornamento valido.

Questo componente può restituire l'azione seguente:

Azione descrizione;
noRefreshTokenFound Il servizio di autenticazione non dispone di token di aggiornamento per l'utente.

System.OAuthAccountLink

Nota

In questo argomento viene descritto l'uso di questo componente in modalità YAML. Per informazioni sull'utilizzo in Visual Flow Designer, vedere OAuth Collegamento account.

Utilizzare questo componente per ottenere il codice di autorizzazione per i servizi protetti dal flusso di concessione del codice di autorizzazione, ad esempio LinkedIn, Twitter, Google o Microsoft. I componenti personalizzati dello skill possono scambiare il codice di autorizzazione per un token di accesso, che vengono quindi utilizzati per richiamare il servizio finale.

Il componente indirizza innanzitutto l'utente alla pagina di login del provider di identità. Dopo un login riuscito, il componente restituisce il codice di autorizzazione in una variabile, utilizzato per passare il codice di autorizzazione al componente personalizzato. L'API del componente personalizzato deve scambiare il codice di autorizzazione, l'ID client e il segreto client per un token di accesso utente OAuth2.

È possibile utilizzare l'impostazione requiresAuthorization per indicare gli stati che richiedono l'autorizzazione prima di poter essere richiamati. Per gli stati che richiedono l'autorizzazione, se l'utente non ha ancora effettuato l'autorizzazione, viene richiamato lo stato System.OAuthAccountLink, quindi il flusso richiama lo stato che richiede l'autorizzazione. È possibile imparare a utilizzare questa funzione in Autorizzazione utente nelle chat di gruppo (funziona per tutti i tipi di chat, non solo per le chat di gruppo).

Suggerimento

Negli skill con versione piattaforma 21.04 e successive, i valori predefiniti per le proprietà cancelLabel, linkLabel e prompt vengono memorizzati nel bundle di risorse dello skill. Per modificare un'impostazione predefinita, aprire la pagina Bundle delle risorse della competenza, fare clic su Icona Bundle risorse, selezionare la scheda Configurazione e modificare il messaggio per la chiave OAuthAccountLink - <property name>. Se si utilizza il bundle di risorse dello skill per modificare l'impostazione predefinita, non è necessario includere la proprietà nel componente a meno che non si desideri sostituire l'impostazione predefinita.

È inoltre possibile modificare i messaggi Altro - oauthCancelPrompt e Altro - oauthSuccessPrompt nel bundle di configurazione.

Proprietà descrizione; Richiesto?
authorizeURL L'URL di login. Nella proprietà authorizeURL viene descritto come configurare questo URL.
autoNumberPostbackActions Quando è impostata su true, questa opzione antepone un numero all'opzione di annullamento. Anche se questa opzione non è stata impostata su true, la numerazione automatica può essere applicata alle voci dell'elenco quando la configurazione di Abilita numerazione automatica su azioni postback dell'assistente digitale è impostata su true. La numerazione automatica specifica del canale può essere applicata a qualsiasi bot di competenze registrato a un assistente digitale:
${(system.message.channelConversation.channelType=='twilio')?then('true','false')}
No
cancelLabel Consente di sostituire l'etichetta del pulsante su cui gli utenti possono fare clic per lasciare lo stato senza richiamare la finestra di dialogo di autenticazione. L'etichetta predefinita è Cancel. No
footerText Migliora la finestra di dialogo di accesso aggiungendo testo sotto le opzioni di accesso e annullamento. Come descritto in Piè di pagina, è possibile utilizzare le espressioni FreeMarker per condizionare il testo del piè di pagina per i canali di solo testo. No
linkLabel Consente di sostituire l'etichetta del pulsante su cui gli utenti possono fare clic per richiamare la finestra di dialogo di autenticazione. L'etichetta predefinita è Log In. No
prompt La stringa da utilizzare per richiedere all'utente di accedere.
showCancelOption (Facoltativo) Consente di specificare se visualizzare o meno il pulsante Annulla. Per impostazione predefinita, questa opzione è impostata su true, ovvero viene visualizzato il pulsante Annulla. In alcuni casi, ad esempio per i canali SMS, potrebbe non essere necessario visualizzare questo pulsante. È possibile configurare tale comportamento con un'espressione simile alla seguente:
${(system.message.channelConversation.channelType=='twilio')?then('false','true')}
translate Utilizzare questa proprietà booleana facoltativa per sostituire il valore booleano della variabile di contesto autoTranslate. Si noti che autoTranslate è false (escludi dalla traduzione automatica) a meno che tale variabile di contesto non sia stata impostata in modo esplicito su true. No
variable Specifica la variabile in cui memorizzare il codice di autorizzazione. È possibile dichiararlo nel nodo di contesto come variabile, stringa o altro tipo di variabile supportato. Può anche essere una variabile utente.

Questo componente può restituire le seguenti azioni:

Azione descrizione;
fail L'utente ha fatto clic sul pulsante Annulla.
pass Recupero del codice di autorizzazione riuscito.
textReceived L'utente ha immesso il testo anziché fare clic sul pulsante Annulla o eseguire l'autenticazione.

Questo esempio mostra le proprietà necessarie da definire per il componente System.OAuthAccountLink: prompt, che specifica il messaggio di login, variable, che indica al componente dove memorizzare il codice di autorizzazione, e authorizeURL che definisce sia l'URL OAuth del provider che l'URL di reindirizzamento che riceve il codice di autorizzazione.

login:
  component: "System.OAuthAccountLink"
  properties:
    prompt: "Please login now."
    linkLabel: "login"
    cancelLabel: "cancel"
    authorizeURL: "https://www.linkedin.com/oauth/v2/authorization?response_type=code&client_id=75k0vq4&scope=r_basicprofile&redirect_uri=https%3A%2F%2FmyBotsinstance%2Fconnectors%2Fv2%2Fcallback"
    variable: "authCode"
  transitions:
      next: getBankUserProfile
      actions:
        textReceived: handleAuthTextResponse
        fail: authCancelled

Quando il motore della finestra di dialogo rileva questo componente, il bot delle competenze richiede all'utente due collegamenti: Login e Annulla.

Esistono diversi modi per eseguire la transizione da questo componente:

  • L'utente fa clic sul pulsante Annulla e il componente passa allo stato indicato dall'azione fail.

  • L'utente non fa clic su alcun pulsante, ma immette testo. Il componente passa allo stato denominato dall'azione textReceived.

  • L'utente fa clic sul collegamento di login e il canale visualizza la pagina di login del provider di identità o la relativa finestra di dialogo di autenticazione come vista Web, come mostrato nell'esempio riportato di seguito. Dopo l'autorizzazione riuscita, il componente passa allo stato denominato dall'azione pass (o allo stato successivo se non è presente un'azione pass), che in genere richiama un componente personalizzato che scambia il codice di autorizzazione per un token di accesso.

Se la finestra di test non visualizza la vista Web, tagliare e incollare il testo del collegamento nel browser.

La proprietà authorizeURL

Per configurare questa proprietà, iniziare con l'URL del provider di identità, ad esempio https://www.linkedin.com/oauth/v2/authorization nell'esempio. Aggiungere quindi i seguenti parametri OAuth a questo URL:

  1. response_type: impostare su code perché il bot skill prevede un codice di autorizzazione.

  2. client_id: il valore della chiave API ottenuto durante la registrazione dell'applicazione con il provider di identità.

  3. scope: una lista di autorizzazioni per accedere alle risorse per conto dell'utente. Queste sono le autorizzazioni impostate quando si registra l'app con il provider. Possono variare in base al provider: per LinkedIn, questi includono r_basicprofile (illustrato nell'esempio) e r_emailadress; per Microsoft, vengono definiti utilizzando openid email e openid profile.

  4. redirect_uri: questo è l'URI di reindirizzamento utilizzato per registrare l'applicazione con il provider di identità e indica al provider dove reindirizzare gli utenti. Questo parametro, che è il nome host del servizio Digital Assistant aggiunto a connectors/v2/callback, è l'endpoint che riceve il codice di autorizzazione e lo associa al canale attivo. La proprietà redirect_uri si basa sull'URL del webhook generato quando si crea un canale. Vedere Informazioni sui canali

    Assicurarsi che il valore immesso per redirect_uri corrisponda esattamente all'URI di reindirizzamento fornito al momento della registrazione dell'applicazione. In entrambi i casi, l'URI deve essere aggiunto con connectors/v2/callback.

Nota

Se il provisioning dell'istanza viene eseguito su Oracle Cloud Platform (come tutte le istanze della versione 19.4.1), utilizzare v1 anziché v2.