Inicio de sesión único con un Chat en web
SE APLICA A: SDK v4
El inicio de sesión único (SSO) permite que un cliente, como un control de Chat en web, se comunique con un bot en nombre del usuario. Actualmente, solo se admite el proveedor de identidades de Microsoft Entra ID.
Normalmente, un Chat en web se inserta en una página de sitio web. Cuando el usuario inicia sesión en el sitio web, el Chat en web invoca un bot en nombre del usuario. El token del cliente del sitio web, en función de las credenciales del usuario, se intercambia por otro para acceder al bot. De este modo, el usuario no tiene que iniciar sesión dos veces; la primera vez en el sitio web y la segunda vez en el bot, por lo tanto, el término SSO.
En el diagrama siguiente se muestra el flujo de SSO al usar un cliente Chat en web.
En el caso de error, el inicio de sesión único retrocede al comportamiento existente de mostrar la tarjeta de OAuth. Se puede producir un error cuando se requiere el consentimiento del usuario o cuando se produce un error en el intercambio de tokens.
Vamos a analizar el flujo.
El usuario inicia sesión en el sitio web.
El Chat en web recibe una actividad de desencadenador de OAuth.
El Chat en web inicia una conversación con el bot a través de una actividad de desencadenador de OAuth.
El bot devuelve una tarjeta OAuth al Chat en web.
El Chat en web intercepta la tarjeta de OAuth antes de mostrarla al usuario y comprueba si contiene la propiedad
TokenExchangeResource
.Si la propiedad existe, el Chat en web debe obtener un token intercambiable para el usuario, que debe ser un token de Microsoft Entra ID.
El Chat en web envía una actividad Invoke al bot con el cuerpo que se muestra a continuación.
{ "type": "Invoke", "name": "signin/tokenExchange", "value": { "id": "<any unique ID>", "connectionName": "<connection name on the bot (from the OAuth Card)>", "token": "<exchangeable token>" } }
El bot procesa
TokenExchangeInvokeRequest
mediante la emisión de una solicitud al Servicio de Bot de Azure AI para obtener un token intercambiable.El Servicio de Bot de Azure AI envía el token al bot.
El bot devuelve una respuesta
TokenExchangeInvokeResponse
al Chat en web. El Chat en web espera hasta que recibe elTokenExchangeInvokeResponse
.{ "status": "<response code>", "body": { "id":"<unique ID>", "connectionName": "<connection Name on the bot (from the OAuth Card)>", "failureDetail": "<failure reason if status code isn't 200, null otherwise>" } }
Si
TokenExchangeInvokeResponse
tiene una propiedadstatus
con el valor200
, Chat en web no muestra la tarjeta de OAuth. Para cualquier otro valor destatus
o si no se recibe la respuestaTokenExchangeInvokeResponse
, el Chat en web muestra la tarjeta de OAuth al usuario. Esto garantiza que el flujo de inicio de sesión único recurre al flujo de OAuthCard normal en el caso de que se produzcan errores o que no se hayan cumplido las dependencias, como el consentimiento del usuario.
Para obtener un ejemplo de implementación, consulte este ejemplo de SSO.