Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
si applica a: SDK v4
A volte un bot deve accedere alle risorse online protette per conto dell'utente, ad esempio controllare la posta elettronica, controllare lo stato dei voli o effettuare un ordine. L'utente deve autorizzare il bot a farlo per suo conto e, per autorizzare il bot, l'utente deve autenticare la propria identità. OAuth viene usato per autenticare l'utente e autorizzare il bot. Vedere anche Tipi di autenticazione.
Per aggiornare le conoscenze di OAuth, vedere quanto segue:
- Panoramica di OAuth, più facile da seguire rispetto alla specifica formale.
- Specifica OAuth
Autenticazione utente in una conversazione
Per eseguire determinate operazioni per conto di un utente, ad esempio il controllo della posta elettronica, il riferimento a un calendario, il controllo dello stato dei voli o l'inserimento di un ordine, il bot dovrà chiamare un servizio esterno, ad esempio Microsoft Graph, GitHub o il servizio REST di una società. Ogni servizio esterno ha un modo per proteggere tali chiamate. Un modo comune per eseguire tali richieste consiste nell'usare un token utente che identifica in modo univoco l'utente in tale servizio esterno (talvolta definito token JSON Web (JWT).
Per proteggere la chiamata a un servizio esterno, il bot deve chiedere all'utente di eseguire l'accesso, in modo che possa acquisire il token dell'utente per tale servizio. Molti servizi supportano il recupero di token tramite il protocollo OAuth o OAuth2 .
Il servizio Azure AI Bot offre schede di accesso e servizi specializzati che funzionano con il protocollo OAuth e gestiscono il ciclo di vita del token. Un bot può usare queste funzionalità per acquisire un token utente.
Come parte della configurazione del bot, una connessione OAuth viene registrata all'interno della risorsa del servizio Azure AI Bot in Azure.
La connessione contiene informazioni sul provider di identità da usare, insieme a un ID client OAuth e un segreto OAuth validi, agli ambiti OAuth da abilitare e a tutti gli altri metadati di connessione richiesti da tale provider di identità.
Nel codice del bot, la connessione OAuth viene usata per consentire l'accesso dell'utente e ottenere il token utente.
L'immagine seguente mostra gli elementi coinvolti nel processo di autenticazione.
Informazioni sul servizio token bot Framework
Il servizio token del Bot Framework è responsabile di:
- Facilitare l'uso del protocollo OAuth con un'ampia gamma di servizi esterni.
- Archiviazione sicura dei token per un determinato bot, canale, conversazione e utente.
- Acquisizione di token utente.
Suggerimento
Se il bot ha un token utente scaduto, il bot deve:
- Disconnettere l'utente
- Avviare di nuovo il flusso di accesso
Ad esempio, un bot in grado di controllare i messaggi di posta elettronica recenti di un utente, usando l'API Microsoft Graph, richiede un token utente da un provider di identità, in questo caso l'ID Microsoft Entra. In fase di progettazione, lo sviluppatore di bot esegue questi due passaggi importanti:
- Registra un'applicazione Microsoft Entra ID, un provider di identità, con il Bot Framework Token Service, tramite il portale di Azure.
- Configura una connessione OAuth (denominata ad esempio
GraphConnection
) per il bot.
L'immagine seguente mostra la sequenza temporale dell'interazione dell'utente con un bot quando viene effettuata una richiesta di posta elettronica usando il servizio Microsoft Graph.
L'utente effettua una richiesta di posta elettronica al bot.
Un'attività con questo messaggio viene inviata dall'utente al servizio del canale Bot Framework. Il servizio di canale garantisce che il
userid
campo all'interno dell'attività sia stato impostato e che il messaggio venga inviato al bot.Annotazioni
Gli ID utente sono specifici del canale, ad esempio l'ID Facebook dell'utente o il numero di telefono SMS.
Il bot effettua una richiesta al Bot Framework Token Service chiedendo se ha già un token per l'UserId per la connessione OAuth
GraphConnection
.Poiché questa è la prima volta che l'utente ha interagito con il bot, il servizio token bot Framework non ha ancora un token per questo utente e restituisce un risultato NotFound al bot.
Annotazioni
Se il token viene trovato, i passaggi di autenticazione vengono ignorati e il bot può effettuare la richiesta di posta elettronica usando il token archiviato.
Il bot crea una OAuthCard con un nome di connessione di
GraphConnection
e risponde all'utente chiedendo di accedere utilizzando questa scheda.L'attività passa attraverso il servizio canale Bot Framework, che chiama il servizio token Bot Framework per creare un URL di accesso OAuth valido per questa richiesta. Questo URL di accesso viene aggiunto all'OAuthCard e la scheda viene restituita all'utente.
All'utente viene visualizzato un messaggio per accedere facendo clic sul pulsante di accesso di OAuthCard.
Quando l'utente fa clic sul pulsante di accesso, il servizio canale apre un Web browser e chiama il servizio esterno per caricare la relativa pagina di accesso.
L'utente accede a questa pagina per il servizio esterno. Il servizio esterno completa quindi lo scambio del protocollo OAuth con il servizio token di Bot Framework, risultato nel fatto che il servizio esterno invia al servizio token di Bot Framework il token utente. Il servizio token bot Framework archivia in modo sicuro questo token e invia un'attività al bot con questo token.
Il bot riceve l'attività con il token ed è in grado di usarla per effettuare chiamate all'API Microsoft Graph.
Protezione dell'URL di accesso
Una considerazione importante quando Bot Framework facilita l'accesso utente è come proteggere l'URL di accesso. Quando un utente viene presentato con un URL di accesso, questo URL viene associato a un ID conversazione e a un ID utente specifici per tale bot. Non condividere questo URL, poiché potrebbe causare un accesso errato durante una particolare conversazione con un bot. Per attenuare gli attacchi di sicurezza che usano un URL di accesso condiviso, assicurarsi che il computer e la persona che fa clic sull'URL di accesso sia la persona proprietaria della finestra di conversazione.
Alcuni canali, ad esempio Microsoft Teams, Direct Line e WebChat, sono in grado di eseguire questa operazione senza che l'utente noti. Ad esempio, WebChat usa i cookie di sessione per garantire che il flusso di accesso sia stato eseguito nello stesso browser della conversazione WebChat. Tuttavia, per altri canali l'utente viene spesso presentato con un codice magic a 6 cifre. Si tratta di un'autenticazione a più fattori integrata, perché il Bot Framework Token Service non rilascia il token al bot a meno che l'utente non completi l'autenticazione finale, dimostrando che la persona che ha effettuato l'accesso abbia accesso all'esperienza di chat inserendo il codice a 6 cifre.
Importante
Tenere presente queste importanti considerazioni sulla sicurezza. Per altre informazioni, vedere questo post di blog: Uso di WebChat con l'autenticazione del servizio Azure AI Bot.
Passaggi successivi
Ora che si conosce l'autenticazione utente, si esaminerà come applicarlo al bot.