Sicurezza
Questi sono i componenti disponibili nella categoria Sicurezza dell'editor di flussi di finestre di dialogo basato su YAML.
System.OAuth2Client
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.
- Se non è già registrato, registrare il client con il provider di identità come descritto nella sezione Registrazione provider di identità.
- 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. | Sì |
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 .
|
Sì |
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
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.
- Se non è già stata registrata, registrare il client con il provider di identità come descritto nella sezione Registrazione provider di identità.
- 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 
È 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 è |
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 è |
No |
authenticationService
|
Nome del servizio di codice di autorizzazione creato nell'interfaccia utente di Authentication Services per il provider di identità OAuth2. | Sì |
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
Vedere Numerazione automatica per i canali di solo testo nei flussi di finestre di dialogo YAML e |
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:
|
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 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 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
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. | Sì |
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
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 
È 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. | Sì |
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:
|
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. | Sì |
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:
|
Sì |
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. | Sì |
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'azionepass
), 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:
-
response_type
: impostare sucode
perché il bot skill prevede un codice di autorizzazione. -
client_id
: il valore della chiave API ottenuto durante la registrazione dell'applicazione con il provider di identità. -
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 includonor_basicprofile
(illustrato nell'esempio) er_emailadress
; per Microsoft, vengono definiti utilizzandoopenid email
eopenid profile
. -
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 aconnectors/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 canaliAssicurarsi 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 conconnectors/v2/callback
.
Se il provisioning dell'istanza viene eseguito su Oracle Cloud Platform (come tutte le istanze della versione 19.4.1), utilizzare v1
anziché v2
.