Condividi tramite


Autenticazione utente

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:

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.

Diagramma che illustra la relazione tra i componenti di autenticazione nel servizio Azure AI Bot.

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:

  1. Registra un'applicazione Microsoft Entra ID, un provider di identità, con il Bot Framework Token Service, tramite il portale di Azure.
  2. 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.

Diagramma di sequenza che delinea i passaggi per un bot per inviare un messaggio di posta elettronica per conto di un utente.

  1. L'utente effettua una richiesta di posta elettronica al bot.

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

  3. Il bot effettua una richiesta al Bot Framework Token Service chiedendo se ha già un token per l'UserId per la connessione OAuth GraphConnection.

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

  5. Il bot crea una OAuthCard con un nome di connessione di GraphConnection e risponde all'utente chiedendo di accedere utilizzando questa scheda.

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

  7. All'utente viene visualizzato un messaggio per accedere facendo clic sul pulsante di accesso di OAuthCard.

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

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

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

Vedere anche