Uso del inicio de sesión único para obtener la identidad del usuario que ha iniciado sesión
Use la getAccessToken
API para obtener un token de acceso que contenga la identidad del usuario actual que inició sesión en Office. El token de acceso también es un token de identificador porque contiene notificaciones de identidad sobre el usuario que ha iniciado sesión, como su nombre y correo electrónico. También puede usar el token de identificador para identificar al usuario al llamar a sus propios servicios web. Para llamar a getAccessToken
, debe configurar el complemento de Office para usar el inicio de sesión único con Office.
En este artículo, creará un complemento de Office que obtiene el token de identificador y muestra el nombre, el correo electrónico y el identificador único del usuario en el panel de tareas.
Nota:
El inicio de sesión único con Office y la getAccessToken
API no funciona en todos los escenarios. Implemente siempre un cuadro de diálogo de reserva para iniciar sesión en el usuario cuando el inicio de sesión único no esté disponible. Para obtener más información, consulte Autenticación y autorización con la API de cuadro de diálogo de Office.
Creación de un registro de aplicación
Para usar el inicio de sesión único con Office, debe crear un registro de aplicación en el Azure Portal para que el Plataforma de identidad de Microsoft pueda proporcionar servicios de autenticación y autorización para el complemento de Office y sus usuarios.
Para registrar la aplicación, vaya a la página Azure Portal - Registros de aplicaciones.
Inicie sesión con las credenciales de administrador en su inquilino de Microsoft 365. Por ejemplo, MyName@contoso.onmicrosoft.com.
Seleccione Nuevo registro. En la página Registrar una aplicación, establezca los valores siguientes.
- Establezca Nombre como
Office-Add-in-SSO
. - Establezca Tipos de cuenta admitidos en Cuentas en cualquier directorio de organización y cuentas personales de Microsoft (por ejemplo, Skype, Xbox, Outlook.com).
- Establezca el tipo de aplicación en Web y, a continuación, establezca URI de redirección en
https://localhost:[port]/dialog.html
. Reemplace por[port]
el número de puerto correcto para la aplicación web. Si creó el complemento con Yo Office, el número de puerto suele ser 3000 y se encuentra en el archivo package.json. Si creó el complemento con Visual Studio 2019, el puerto se encuentra en la propiedad URL SSL del proyecto web. - Elija Registrar.
- Establezca Nombre como
En la página Office-Add-in-SSO, copie y guarde los valores para el identificador de aplicación (cliente) y el identificador de directorio (inquilino). Deberá usar ambos en procedimientos posteriores.
Nota:
Este identificador de aplicación (cliente) es el valor de "audiencia" cuando otras aplicaciones, como la aplicación cliente de Office (por ejemplo, PowerPoint, Word, Excel), buscan acceso autorizado a la aplicación. También es el "identificador de cliente" de la aplicación cuando, a su vez, busca acceso autorizado a Microsoft Graph.
Seleccione Autenticación en Administrar. En la sección Concesión implícita , habilite las casillas para el token de Access y el token de identificador.
Seleccione Guardar en la parte superior del formulario.
Seleccione Exponer una API en Administrar. Seleccione el vínculo Establecer . Esto generará el URI del identificador de aplicación con el formato
api://[app-id-guid]
, donde[app-id-guid]
es el identificador de aplicación (cliente).En el identificador generado, inserte
localhost:[port]/
(anote la barra diagonal "/" anexada al final) entre las barras diagonales dobles y el GUID. Reemplace por[port]
el número de puerto correcto para la aplicación web. Si creó el complemento con Yo Office, el número de puerto suele ser 3000 y se encuentra en el archivo package.json. Si creó el complemento con Visual Studio 2019, el puerto se encuentra en la propiedad URL SSL del proyecto web.Cuando haya terminado, el identificador completo debe tener el formulario
api://localhost:[port]/[app-id-guid]
; por ejemploapi://localhost:44355/c6c1f32b-5e55-4997-881a-753cc1d563b7
, .Seleccione el botón Agregar un ámbito En el panel que se abre, escriba
access_as_user
como nombre del <ámbito> .Establezca ¿Quién puede dar consentimiento? en Administradores y usuarios
Rellene los campos para configurar las solicitudes de consentimiento del administrador y del usuario con los valores adecuados para el
access_as_user
ámbito, lo que permite a la aplicación cliente de Office usar las API web del complemento con los mismos derechos que el usuario actual. Sugerencias:- Administración nombre para mostrar del consentimiento: Office puede actuar como el usuario.
- Descripción de consentimiento de administrador: permitir a Office llamar a las API web del complemento con los mismos derechos que el usuario actual.
- Nombre para mostrar del consentimiento del usuario: Office puede actuar como usted.
- Descripción del consentimiento del usuario: habilite Office para llamar a las API web del complemento con los mismos derechos que tiene.
Asegúrese de que Estado se establece en Habilitado.
Seleccione Agregar ámbito.
Nota:
La parte del dominio del <nombre de ámbito> que se muestra justo debajo del campo de texto debe coincidir automáticamente con el URI del identificador de aplicación que estableció anteriormente, con
/access_as_user
anexado al final; por ejemplo,api://localhost:6789/c6c1f32b-5e55-4997-881a-753cc1d563b7/access_as_user
.En la sección Aplicaciones cliente autorizadas , escriba el siguiente identificador para autorizar previamente todos los puntos de conexión de aplicaciones de Microsoft Office.
-
ea5a67f6-b6f3-4338-b240-c655ddc3cc8e
(Todos los puntos de conexión de aplicaciones de Microsoft Office)
Nota:
El
ea5a67f6-b6f3-4338-b240-c655ddc3cc8e
identificador autoriza previamente a Office en todas las plataformas siguientes. Como alternativa, puede escribir un subconjunto adecuado de los siguientes identificadores si, por cualquier motivo, desea denegar la autorización a Office en algunas plataformas. Simplemente deje fuera los identificadores de las plataformas desde las que desea retener la autorización. Los usuarios del complemento en esas plataformas no podrán llamar a las API web, pero otras funciones del complemento seguirán funcionando.-
d3590ed6-52b3-4102-aeff-aad2292ab01c
(Microsoft Office) -
93d53678-613d-4013-afc1-62e9e444a0a5
(Office en la Web) -
bc59ab01-8403-45c6-8796-ac3ef710b3e3
(Outlook en la Web)
-
Seleccione el botón Agregar una aplicación cliente y, a continuación, en el panel que se abre, establezca en
[app-id-guid]
el identificador de aplicación (cliente) y active la casilla deapi://localhost:44355/[app-id-guid]/access_as_user
.Seleccione Agregar aplicación.
Seleccione permisos de API en Administrar y seleccione Agregar un permiso. En el panel que se abre, elija Microsoft Graph y luego elija Permisos delegados.
Use el cuadro de búsqueda Seleccionar permisos para buscar los permisos que necesita el complemento. Busque y seleccione el permiso de perfil . El
profile
permiso es necesario para que la aplicación de Office obtenga un token en la aplicación web del complemento.- perfil
Nota:
El permiso
User.Read
podría aparecer ya de forma predeterminada. Se recomienda no pedir permisos que no sean necesarios, por lo que se recomienda desactivar la casilla para este permiso si el complemento no lo necesita realmente.Seleccione el botón Agregar permisos de la parte inferior del panel.
En la misma página, elija el botón Conceder consentimiento de administrador para <nombre> de inquilino y, a continuación, seleccione Sí para la confirmación que aparece.
Crear el complemento de Office
- Inicie Visual Studio 2019 y elija Crear un nuevo proyecto.
- Busque y seleccione la plantilla de proyecto complemento web de Excel . A continuación, elija Siguiente. Nota: El inicio de sesión único funciona con cualquier aplicación de Office, pero Excel es la aplicación que se usa con este artículo.
- Escriba un nombre de proyecto, como sso-display-user-info, y elija Crear. Puede dejar los demás campos en los valores predeterminados.
- En el cuadro de diálogo Elegir el tipo de complemento , seleccione Agregar nueva funcionalidad a Excel y elija Finalizar.
El proyecto se crea y contendrá dos proyectos en la solución.
- sso-display-user-info: contiene el manifiesto y los detalles para transferir localmente el complemento a Excel.
- sso-display-user-infoWeb: el proyecto de ASP.NET que hospeda las páginas web del complemento.
Configuración del manifiesto
En Explorador de soluciones, abra sso-display-user-info>sso-display-user-infoManifest>sso-display-user-info.xml.
Cerca de la parte inferior del manifiesto hay un elemento de cierre
</Resources>
. Inserte el siguiente XML justo debajo del</Resources>
elemento, pero antes del elemento de cierre</VersionOverrides>
. Para aplicaciones de Office distintas de Outlook, agregue el marcado al final de la<VersionOverrides ... xsi:type="VersionOverridesV1_0">
sección. Para Outlook, agregue el marcado al final de la sección<VersionOverrides ... xsi:type="VersionOverridesV1_1">
.<WebApplicationInfo> <Id>[application-id]</Id> <Resource>api://localhost:[port]/[application-id]</Resource> <Scopes> <Scope>openid</Scope> <Scope>user.read</Scope> <Scope>profile</Scope> </Scopes> </WebApplicationInfo>
Reemplace por
[port]
el número de puerto correcto para el proyecto. Si creó el complemento con Yo Office, el número de puerto suele ser 3000 y se encuentra en el archivo package.json. Si creó el complemento con Visual Studio 2019, el puerto se encuentra en la propiedad URL SSL del proyecto web.Reemplace ambos
[application-id]
marcadores de posición por el identificador de aplicación real del registro de la aplicación.Guarde el archivo.
El XML que insertó contiene los siguientes elementos e información.
- <WebApplicationInfo> : elemento primario de los siguientes elementos.
- <Id> . : el identificador de cliente del complemento Este es un identificador de aplicación que se obtiene como parte del registro del complemento. Vea Registrar un complemento de Office que use SSO con el extremo de Azure AD versión 2.0.
-
<Recurso> : dirección URL del complemento. Este es el mismo URI (incluido el protocolo
api:
) que usó al registrar el complemento en AAD. La parte de dominio de este URI debe coincidir con el dominio, incluidos los subdominios, que se usan en las direcciones URL de la <sección Recursos> del manifiesto del complemento y el URI debe terminar con el identificador de cliente en el <identificador>. - <Ámbitos> : elemento primario de uno o varios <elementos Scope> .
-
<Ámbito> : especifica un permiso que el complemento necesita para AAD. Los
profile
permisos yopenID
siempre son necesarios y pueden ser los únicos permisos necesarios, si el complemento no tiene acceso a Microsoft Graph. Si lo hace, también necesita <elementos Scope> para los permisos necesarios de Microsoft Graph; por ejemplo,User.Read
,Mail.Read
. Las bibliotecas que usa en su c?digo para acceder a Microsoft Graph pueden necesitar permisos adicionales. Por ejemplo, la Biblioteca de autenticación de Microsoft (MSAL) para .NET requiere eloffline_access
permiso . Para obtener más información, vea Autorizar a Microsoft Graph desde un complemento de Office.
Agregar el paquete jwt-decode
Puede llamar a la getAccessToken
API para obtener el token de identificador de Office. En primer lugar, vamos a agregar el paquete jwt-decode para que sea más fácil descodificar y ver el token de identificador.
Abra la solución de Visual Studio.
En el menú, elija Herramientas>NuGet Package ManagerPackage Manager Console (Consola del Administrador> de paquetes NuGet).
Escriba el siguiente comando en la consola del Administrador de paquetes.
Install-Package jwt-decode -Projectname sso-display-user-infoWeb
Agregar interfaz de usuario al panel de tareas
Modifique el panel de tareas para que pueda mostrar la información de usuario que obtendrá del token de identificador.
Abra el archivo Home.html.
Agregue la siguiente etiqueta de script a la
<head>
sección de la página. Esto incluirá el paquete jwt-decode que se agregó anteriormente.<script src="Scripts/jwt-decode-2.2.0.js" type="text/javascript"></script>
Reemplace la
<body>
sección por el siguiente CÓDIGO HTML.<body> <h1>Welcome</h1> <p> Sign in to Office, then choose the <b>Get ID Token</b> button to see your ID token information. </p> <button id="getIDToken">Get ID Token</button> <div> <span id="userInfo"></span> </div> </body>
Llamada a la API getAccessToken
El último paso es obtener el token de identificador llamando a getAccessToken
.
Abra el archivo Home.js .
Reemplace todo el contenido del archivo por el siguiente código.
(function () { "use strict"; // The initialize function must be run each time a new page is loaded. Office.initialize = function (reason) { $(document).ready(function () { $("#getIDToken").on("click", getIDToken); }); }; async function getIDToken() { try { let userTokenEncoded = await OfficeRuntime.auth.getAccessToken({ allowSignInPrompt: true, }); let userToken = jwt_decode(userTokenEncoded); document.getElementById("userInfo").innerHTML = "name: " + userToken.name + "<br>email: " + userToken.preferred_username + "<br>id: " + userToken.oid; console.log(userToken); } catch (error) { document.getElementById("userInfo").innerHTML = "An error occurred. <br>Name: " + error.name + "<br>Code: " + error.code + "<br>Message: " + error.message; console.log(error); } } })();
Guarde el archivo.
Ejecutar el complemento
Elija Depurar>Iniciar depuración o presione F5.
- Cuando se inicia Excel, inicie sesión en Office con la misma cuenta de inquilino que usó para crear el registro de la aplicación.
- En la cinta inicio , elija Mostrar panel de tareas para abrir el complemento.
- En el panel de tareas del complemento, elija Obtener token de identificador.
El complemento mostrará el nombre, el correo electrónico y el identificador de la cuenta con la que inició sesión.
Nota:
Si encuentra algún error, revise los pasos de registro de este artículo para el registro de aplicaciones. Falta un detalle al configurar el registro de la aplicación es una causa común de problemas que funcionan con el inicio de sesión único. Si aún no puede obtener que el complemento se ejecute correctamente, consulte Solución de problemas de mensajes de error para el inicio de sesión único (SSO).
Detener el complemento
Elija Detener depuración o presione Mayús+F5.