Autenticazione dell'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 maggiori informazioni su OAuth, vedere gli argomenti seguenti:

Autenticazione utente in una conversazione

Per eseguire determinate operazioni per conto di un utente, ad esempio controllare la posta elettronica, fare riferimento a un calendario, controllare lo stato dei voli o effettuare un ordine, il bot dovrà chiamare un servizio esterno, ad esempio Microsoft Graph, GitHub o un servizio REST aziendale. Ogni servizio esterno prevede un modo per garantire la sicurezza di tali chiamate. Un modo comune per inviare tali richieste consiste nell'usare un token utente che identifica in modo univoco l'utente del servizio esterno (talvolta detto token JSON Web (JWT)).

Per garantire la sicurezza della chiamata a un servizio esterno, il bot deve chiedere all'utente di eseguire l'accesso, in modo da poter acquisire il token dell'utente per tale servizio. Molti servizi supportano il recupero dei token tramite il protocollo OAuth o OAuth2.

L'servizio Bot di intelligenza artificiale di Azure fornisce 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 servizio Bot di intelligenza artificiale di Azure in Azure.

    La connessione contiene informazioni sul provider di identità da usare, nonché un segreto e un ID client OAuth validi, gli ambiti di OAuth da abilitare e altri metadati della connessione richiesti dal provider di identità.

  • Nel codice del bot si usa la connessione OAuth per consentire l'accesso all'utente e ottenere il token utente.

La figura seguente mostra gli elementi necessari per il processo di autenticazione.

Diagram illustrating the relationship between authentication components in Azure AI Bot Service.

Informazioni sul servizio token Bot Framework

Il servizio token Bot Framework è responsabile di:

  • Agevolare l'uso del protocollo OAuth con un'ampia gamma di servizi esterni.
  • Archiviare in modo sicuro i token per un particolare bot, canale, conversazione e utente.
  • Acquisire i token utente.

    Suggerimento

    Se contiene un token utente scaduto, il bot dovrebbe:

    • 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 importanti passaggi:

  1. Registra un'applicazione Microsoft Entra ID, un provider di identità, con il servizio token Bot Framework, tramite il portale di Azure.
  2. Configura una connessione OAuth (denominata ad esempio GraphConnection) per il bot.

La figura seguente mostra la sequenza temporale dell'interazione dell'utente con un bot quando si effettua una richiesta di posta elettronica tramite il servizio Microsoft Graph.

Sequence diagram outlining the steps for a bot to send an email on behalf of a user.

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

  2. Un'attività con il messaggio dell'utente viene inviata dall'utente al servizio canale Bot Framework. Il servizio canale verifica che il campo userid nell'attività sia stato impostato e il messaggio viene inviato al bot.

    Nota

    Gli ID utente sono specifici del canale, ad esempio l'ID di Facebook o il numero di telefono per il servizio SMS.

  3. Il bot effettua una richiesta al servizio token Bot Framework chiedendo se ha già un token per l'ID utente 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.

    Nota

    Se il token viene trovato, i passaggi relativi all'autenticazione vengono ignorati e il bot può effettuare la richiesta di posta elettronica usando il token archiviato.

  5. Il bot crea un oggetto OAuthCard con un nome di connessione GraphConnection e risponde all'utente chiedendogli di accedere usando 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. L'URL di accesso viene aggiunto all'oggetto OAuthCard e la scheda viene restituita all'utente.

  7. L'utente riceve un messaggio che chiede di eseguire l'accesso 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 affinché carichi la pagina di accesso.

  9. L'utente accede a questa pagina per il servizio esterno. Il servizio esterno completa lo scambio del protocollo OAuth con il servizio token Bot Framework e quindi il servizio esterno invia il token utente al servizio token Bot Framework. Il servizio token Bot Framework archivia questo token in modo sicuro e invia un'attività al bot con questo token.

  10. Il bot riceve l'attività con il token e può usarlo per effettuare chiamate all'API MS Graph.

Sicurezza dell'URL di accesso

Una considerazione importante quando Bot Framework agevola l'accesso utente riguarda come garantire la sicurezza dell'URL di accesso. Quando a un utente viene fornito un URL di accesso, questo URL è associato a un ID conversazione specifico e all'ID utente per tale bot. Non condividere l'URL. L'accesso non corretto si verifica per una conversazione di bot specifica. 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. WebChat usa ad esempio i cookie di sessione per assicurarsi che il flusso di accesso sia avvenuto nello stesso browser della conversazione di WebChat. Per altri canali, tuttavia, spesso viene fornito all'utente un codice magic di 6 cifre. Si tratta di un'autenticazione a più fattori predefinita, perché il servizio token bot Framework non rilascia il token al bot a meno che l'utente non finisca l'autenticazione finale, dimostrando che la persona che ha eseguito l'accesso all'esperienza di chat immettendo il codice a 6 cifre.

Importante

Tenere presenti queste importanti considerazioni per la sicurezza. Per altre informazioni, vedere questo post di blog: Uso di WebChat con Azure AI servizio Bot Authentication.You can find additional information in this blog post: Using WebChat with Azure AI servizio Bot Authentication.

Passaggi successivi

Ora che si conosce l'autenticazione utente, si esaminerà come applicarlo al bot.

Vedi anche