Configurar el inicio de sesión único con un proveedor de OAuth genérico
Copilot Studio admite inicio de sesión único (SSO) con proveedores de autenticación compatibles con OAuth 2.0. SSO permite que los agentes de su sitio web registren a los clientes si iniciaron sesión en la página o aplicación donde está implementado agente.
Requisitos previos
- Configurar la autenticación de usuario con un proveedor de OAuth 2.0 genérico.
- Agregar autenticación de usuario final a temas.
- Personaliza la apariencia de un agente.
Cree o utilice un lienzo personalizado que admita el flujo SSO genérico del proveedor OAuth
Cuando se activa la autenticación tema en agentes conectados con un proveedor genérico 2.0, se envía un mensaje que contiene una URL segura, que se utiliza para publicar la token de acceso del usuario. OAuth Copilot Studio
El lienzo personalizado o una página donde esté incrustado el lienzo debe implementar el siguiente patrón:
Obtenga un token de acceso para el usuario que ha iniciado sesión del proveedor de autenticación OAuth 2.0 mediante el método que prefiera.
Interceptar un mensaje entrante de Copilot Studio y extraer la URL segura.
Publique el token de acceso en la URL segura.
Extraiga la URL segura y publique el token
El lienzo personalizado intercepta los mensajes entrantes utilizando un concepto de middleware, que es un código que se ejecuta en el contexto de la recepción de mensajes de Copilot Studio.
Para responder a las solicitudes de inicio de sesión, el lienzo personalizado debe interceptar mensajes con archivos adjuntos que tengan el código tipo de contenido application/vnd.microsoft.card.oauth
. Los archivos adjuntos OAuthCard contienen una propiedad content.tokenPostResource.sasUrl
, de la cual se puede extraer la URL segura. Finalmente, el lienzo personalizado debe publicar el token de acceso del usuario en la URL segura.
El siguiente código JavaScript es un ejemplo de código middleware que extrae la URL segura y publica un token. Si la publicación tiene éxito, el middleware devuelve false
. Si la publicación no tiene éxito, o si la actividad no tiene la propiedad application/vnd.microsoft.card.oauth
, devuelve next(…args)
.
const activityMiddleware = () => next => (...args) => {
if (args[0].activity.attachments?.[0]?.contentType === 'application/vnd.microsoft.card.oauth') {
var postEndpoint = args[0].activity.attachments?.[0].content.tokenPostResource.sasUrl;
// Perform an HTTP POST to the secure URL with the body of:
// {
// "token": <user_token>
// }
if(success)
return false;
else
return next(...args);
} else {
return next(...args);
}
};
Ejemplo completo de código
La implementación de un lienzo o aplicación personalizada que obtiene un token para un usuario que ha iniciado sesión y lo publica en Copilot Studio varía según su proveedor de autenticación. Para obtener más información, consulte la documentación de su proveedor de autenticación para obtener más detalles sobre los flujos de inicio de sesión y la obtención de tokens de acceso. Para obtener un ejemplo de referencia utilizando OKTA, consulte SSO de terceros con OKTA.
Usar el token en Copilot Studio
Los tokens que se publican utilizando la URL segura se completan en la variable System.User.AccessToken
en Copilot Studio. Los creadores de agente pueden usar esta variable del sistema para acceder a las API protegidas que están conectadas al proveedor autenticado que generó el token.
En el siguiente ejemplo, una llamada HTTP se configura con un encabezado de autorización que utiliza System.User.AccessToken
.
Canales admitidos
SSO con un proveedor de autenticación OAuth genérico es un patrón personalizado, que puede implementarse mediante un lienzo personalizado o cualquier otro cliente que trabaje con la API de Directline.