Inicio de sesión únicoSingle sign on

se aplica a: SDK V4APPLIES TO: SDK v4

El inicio de sesión único (SSO) permite que un cliente, como un asistente virtual o WebChat, se comunique con un bot o una aptitud en nombre del usuario.Single Sign on (SSO) allows a client, such as virtual assistant, WebChat and so on, to communicate with a bot or skill on behalf of the user. Actualmente, solo se admite el proveedor de identidades de Azure AD v2.Currently, only the Azure AD v2 identity provider is supported.

El inicio de sesión único se aplica en los siguientes escenarios:SSO applies to the following scenarios:

  • Asistente virtual y uno o más bots de aptitudes.Virtual assistant and one or more skill bots. El usuario puede iniciar sesión una vez en el asistente virtual.The user can sign in once into the virtual assistant. A continuación, el asistente invoca varias aptitudes en nombre del usuario.The assistant then invokes multiple skills on behalf of the user. Consulte también Asistente virtual.See also Virtual assistant.
  • WebChat insertado en un sitio web.Webchat embedded into a website. El usuario inicia sesión en el sitio web.The user sign in the website. A continuación, el sitio web invoca un bot o una aptitud en nombre del usuario.The website then invokes a bot or a skill on behalf of the user.

El inicio de sesión único ofrece las siguientes ventajas:SSO provides the following advantages:

  • El usuario no tiene que iniciar sesión de nuevo si ya ha iniciado sesión en un sitio web o asistente virtual.The user does not have to login over again, if already signed in a virtual assistant or website.
  • El asistente virtual o el sitio web no tienen conocimiento de los permisos del usuario.The virtual assistant or website do not have knowledge of user permissions.

Nota

El inicio de sesión único es una característica nueva de Bot Framework SDK v4.8.SSO is a new feature in Bot Framework SDK v4.8.

Interacción de los componentes del inicio de sesión únicoSSO components interaction

Los siguientes diagramas de secuencia de tiempo muestran las interacciones entre los distintos componentes del inicio de sesión único.The following time sequence diagrams show the interactions between the SSO various components.

  • En el diagrama siguiente se muestra un flujo normal cuando se usa un cliente del asistente virtual.The following diagram shows a normal flow when using a virtual assistant client.

    Asistente virtual de inicio de sesión único del bot

  • A continuación se muestran un flujo normal y uno de reserva cuando se usa un cliente de WebChat.The following shows a normal and a fallback flow when using a WebChat client.

    Inicio de sesión único del bot con WebChat

    En el caso de que se produzca un error, el inicio de sesión único retrocede al comportamiento existente de mostrar la tarjeta de OAuth.In the case of failure, SSO falls back to the existing behavior of showing the OAuth card. Por ejemplo, el error se puede deber a un a que se requiere el consentimiento del usuario o si se produce un error en el intercambio de tokens.The failure may be caused for example if the user consent is required or if the token exchange fails.

Vamos a analizar el flujo.Let's analyze the flow.

  1. El cliente inicia una conversación con el bot que desencadena un escenario de OAuth.The client starts a conversation with the bot triggering an OAuth scenario.

  2. El bot envía una tarjeta de OAuth al cliente.The bot sends back an OAuth Card to the client.

  3. El cliente intercepta la tarjeta de OAuth antes de mostrarla al usuario y comprueba si contiene la propiedad TokenExchangeResource.The client intercepts the OAuth card before displaying it to the user and checks if it contains a TokenExchangeResource property.

  4. Si la propiedad existe, el cliente envía una solicitud TokenExchangeInvokeRequest al bot.If the property exisists, the client sends a TokenExchangeInvokeRequest to the bot. El cliente debe tener un token intercambiable para el usuario, que debe ser un token de Azure AD v2 y cuya audiencia debe ser la misma que la de la propiedad TokenExchangeResource.Uri.The client must have an exchangeable token for the user, which must be an Azure AD v2 token and whose audience must be the same as TokenExchangeResource.Uri property. El cliente envía una actividad Invoke al bot con el cuerpo que se muestra a continuación.The client sends an Invoke activity to the bot with the body shown below.

    {
        "type": "Invoke",
        "name": "signin/tokenExchange",
        "value": {
            "id": "<any unique Id>",
            "connectionName": "<connection Name on the skill bot (from the OAuth Card)>",
            "token": "<exchangeable token>"
        }
    }
    
  5. El bot procesa la solicitud TokenExchangeInvokeRequest y devuelve una respuesta TokenExchangeInvokeResponse al cliente.The bot processes the TokenExchangeInvokeRequest and returns a TokenExchangeInvokeResponse back to the client. El cliente debe esperar hasta que reciba la respuesta TokenExchangeInvokeResponse.The client should wait till it receives the TokenExchangeInvokeResponse.

    {
        "status": "<response code>",
        "body": {
            "id":"<unique Id>",
            "connectionName": "<connection Name on the skill bot (from the OAuth Card)>",
            "failureDetail": "<failure reason if status code is not 200, null otherwise>"
        }
    }
    
  6. Si TokenExchangeInvokeResponse tiene una propiedad status con el valor 200, el cliente no muestra la tarjeta de OAuth.If the TokenExchangeInvokeResponse has a status of 200, then the client does not show the OAuth card. Consulte el diagrama del flujo normal.See the normal flow diagram. Para cualquier otro valor de status o si no se recibe la respuesta TokenExchangeInvokeResponse, el cliente muestra la tarjeta de OAuth al usuario.For any other status or if the TokenExchangeInvokeResponse is not received, then the client shows the OAuth card to the user. Consulte el diagrama del flujo de reserva.See the fallback flow diagram. 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.This ensures that the SSO flow falls back to normal OAuthCard flow, in case of any errors or unmet dependencies like user consent.

Pasos siguientesNext steps