Utilizar o SSO para obter a identidade do utilizador com sessão iniciada
Utilize a getAccessToken
API para obter um token de acesso que contenha a identidade do utilizador atual com sessão iniciada no Office. O token de acesso também é um token de ID porque contém afirmações de identidade sobre o utilizador com sessão iniciada, como o respetivo nome e e-mail. Também pode utilizar o token de ID para identificar o utilizador ao chamar os seus próprios serviços Web. Para ligar getAccessToken
para o , tem de configurar o seu Suplemento do Office para utilizar o SSO com o Office.
Neste artigo, irá criar um Suplemento do Office que obtém o token de ID e apresenta o nome, o e-mail e o ID exclusivo do utilizador no painel de tarefas.
Observação
O SSO com o Office e a getAccessToken
API não funciona em todos os cenários. Implemente sempre uma caixa de diálogo de contingência para iniciar sessão do utilizador quando o SSO está indisponível. Para obter mais informações, consulte Autenticar e autorizar com a API de caixa de diálogo do Office.
Criar um registo de aplicações
Para utilizar o SSO com o Office, tem de criar um registo de aplicação no portal do Azure para que o plataforma de identidade da Microsoft possa fornecer serviços de autenticação e autorização para o seu Suplemento do Office e os respetivos utilizadores.
Para registar a sua aplicação, aceda à página portal do Azure - Registros de aplicativo.
Inicie sessão com as credenciais de administrador para o seu inquilino do Microsoft 365. Por exemplo, MyName@contoso.onmicrosoft.com.
Selecione Novo registro. Na página Registrar um aplicativo, defina os valores da seguinte forma.
- Defina Nome para
Office-Add-in-SSO
. - Defina Tipos de conta com suporte para Contas em qualquer diretório organizacional e contas pessoais da Microsoft (por exemplo, Skype, Xbox, Outlook.com).
- Defina o tipo de aplicação como Web e, em seguida, defina o URI de Redirecionamento como
https://localhost:[port]/dialog.html
. Substitua[port]
pelo número de porta correto para a sua aplicação Web. Se tiver criado o suplemento com o Yo Office, o número da porta é normalmente 3000 e encontra-se no ficheiro package.json. Se tiver criado o suplemento com o Visual Studio 2019, a porta encontra-se na propriedade URL de SSL do projeto Web. - Escolha Registrar.
- Defina Nome para
Na página Office-Add-in-SSO, copie e guarde os valores do ID da Aplicação (cliente) e do ID do Diretório (inquilino). Use ambos os valores nos procedimentos posteriores.
Observação
Este ID de Aplicação (cliente) é o valor de "audiência" quando outras aplicações, como a aplicação cliente do Office (por exemplo, PowerPoint, Word, Excel), procuram acesso autorizado à aplicação. É também o "ID de cliente" da aplicação quando, por sua vez, procura acesso autorizado ao Microsoft Graph.
Selecione Autenticação em Gerenciar. Na secção Concessão implícita , ative as caixas de verificação para token de acesso e token de ID.
Na parte superior da página, selecione Salvar.
Selecionar Expor uma API em Gerenciar. Selecione a ligação Definir . Isto irá gerar o URI do ID da Aplicação no formulário
api://[app-id-guid]
, em que[app-id-guid]
é o ID da Aplicação (cliente).No ID gerado, insira
localhost:[port]/
(tenha em atenção a barra "/" anexada ao fim) entre as barras duplas e o GUID. Substitua[port]
pelo número de porta correto para a sua aplicação Web. Se tiver criado o suplemento com o Yo Office, o número da porta é normalmente 3000 e encontra-se no ficheiro package.json. Se tiver criado o suplemento com o Visual Studio 2019, a porta encontra-se na propriedade URL de SSL do projeto Web.Quando tiver terminado, todo o ID deverá ter o formulário
api://localhost:[port]/[app-id-guid]
; por exemploapi://localhost:44355/c6c1f32b-5e55-4997-881a-753cc1d563b7
.Selecione o botão Adicionar um escopo. No painel que é aberto, introduza
access_as_user
como o Nome do <âmbito> .Definir Quem pode consentir? aos Administradores e usuários.
Preencha os campos para configurar os pedidos de consentimento do administrador e do utilizador com valores adequados para o
access_as_user
âmbito que permite à aplicação cliente do Office utilizar as APIs Web do seu suplemento com os mesmos direitos que o utilizador atual. Sugestões:- Administração o nome a apresentar do consentimento: o Office pode atuar como utilizador.
- Descrição de autorização de administrador: Permite ao Office chamar os APIs de suplemento da web com os mesmos direitos que o usuário atual.
- Nome a apresentar do consentimento do utilizador: o Office pode agir como você.
- Descrição do consentimento do utilizador: ative o Office para chamar as APIs Web do suplemento com os mesmos direitos que tem.
Verifique se o Estado está definido como Habilitado.
Selecione Adicionar escopo.
Observação
A parte do domínio do Nome do <âmbito> apresentada imediatamente abaixo do campo de texto deve corresponder automaticamente ao URI do ID da Aplicação que definiu anteriormente, com
/access_as_user
anexado ao fim; por exemplo,api://localhost:6789/c6c1f32b-5e55-4997-881a-753cc1d563b7/access_as_user
.Na secção Aplicações cliente autorizadas , introduza o seguinte ID para pré-autorizar todos os pontos finais de aplicações do Microsoft Office.
-
ea5a67f6-b6f3-4338-b240-c655ddc3cc8e
(Todos os pontos finais de aplicações do Microsoft Office)
Observação
O
ea5a67f6-b6f3-4338-b240-c655ddc3cc8e
ID pré-autoriza o Office em todas as seguintes plataformas. Em alternativa, pode introduzir um subconjunto adequado dos seguintes IDs se, por algum motivo, quiser negar a autorização ao Office em algumas plataformas. Basta deixar de fora os IDs das plataformas a partir das quais pretende reter a autorização. Os utilizadores do seu suplemento nessas plataformas não poderão chamar as suas APIs Web, mas outras funcionalidades no seu suplemento continuarão a funcionar.-
d3590ed6-52b3-4102-aeff-aad2292ab01c
(Microsoft Office) -
93d53678-613d-4013-afc1-62e9e444a0a5
(Office na Web) -
bc59ab01-8403-45c6-8796-ac3ef710b3e3
(Outlook na Web)
-
Selecione o botão Adicionar uma aplicação cliente e, em seguida, no painel que é aberto, defina o
[app-id-guid]
para o ID da Aplicação (cliente) e marcar a caixa paraapi://localhost:44355/[app-id-guid]/access_as_user
.Selecione Adicionar aplicativo.
Selecione Permissões para API em Gerenciar e selecione Adicionar uma permissão. No painel que se abre, escolha Microsoft Graph e, em seguida, escolha Permissões delegadas.
Use a caixa de pesquisa Selecionar permissões para procurar as permissões que o seu suplemento precisa. Procure e selecione a permissão de perfil . A
profile
permissão é necessária para que a aplicação do Office obtenha um token para a sua aplicação Web de suplemento.- perfil
Observação
A permissão
User.Read
pode já estar listada por padrão. É uma boa prática não pedir permissões que não são necessárias, pelo que recomendamos que desmarque a caixa para esta permissão se o seu suplemento não precisar realmente dela.Selecione a botão Adicionar seleção na parte inferior do painel.
Na mesma página, selecione o botão Conceder consentimento do administrador para <nome> de inquilino e, em seguida, selecione Sim para a confirmação apresentada.
Criar o Suplemento do Office
- Inicie o Visual Studio 2019 e escolha Criar um novo projeto.
- Procure e selecione o modelo de projeto do Suplemento Web do Excel . Depois clique em Próximo. Nota: o SSO funciona com qualquer aplicação do Office, mas o Excel é a aplicação que está a ser utilizada com este artigo.
- Introduza um nome de projeto, como sso-display-user-info e selecione Criar. Pode deixar os outros campos nos valores predefinidos.
- Na caixa de diálogo Escolher o tipo de suplemento , selecione Adicionar nova funcionalidade ao Excel e selecione Concluir.
O projeto é criado e conterá dois projetos na solução.
- sso-display-user-info: contém o manifesto e os detalhes do sideload do suplemento para o Excel.
- sso-display-user-infoWeb: o projeto ASP.NET que aloja as páginas Web do suplemento.
Configurar o manifesto
No Gerenciador de Soluções, abra sso-display-user-info>sso-display-user-infoManifest>sso-display-user-info.xml.
Junto à parte inferior do manifesto encontra-se um elemento de fecho
</Resources>
. Insira o seguinte XML imediatamente abaixo do</Resources>
elemento, mas antes do elemento de fecho</VersionOverrides>
. Para aplicações do Office que não o Outlook, adicione a marcação ao final da<VersionOverrides ... xsi:type="VersionOverridesV1_0">
secção. Para o Outlook, adicione a marcação no final da seção<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>
Substitua
[port]
pelo número de porta correto para o projeto. Se tiver criado o suplemento com o Yo Office, o número da porta é normalmente 3000 e encontra-se no ficheiro package.json. Se tiver criado o suplemento com o Visual Studio 2019, a porta encontra-se na propriedade URL de SSL do projeto Web.Substitua ambos os
[application-id]
marcadores de posição pelo ID de aplicação real do registo da aplicação.Salve o arquivo.
O XML que inseriu contém os seguintes elementos e informações.
- <WebApplicationInfo> – o elemento principal dos seguintes elementos.
- <ID> - O ID de cliente do suplemento Este é um ID de aplicação que obtém como parte do registo do suplemento. Confira Registrar um Suplemento do Office que usa SSO com o ponto de extremidade do Azure AD v2.0.
-
<Recurso> – o URL do suplemento. Esse é o mesmo URI (incluindo o protocolo
api:
) que você usou ao registrar o suplemento no AAD. A parte do domínio deste URI tem de corresponder ao domínio, incluindo quaisquer subdomínios, utilizados nos URLs na <secção Recursos> do manifesto do suplemento e o URI tem de terminar com o ID de cliente no <ID>. - <Âmbitos> – o elemento principal de um ou mais <elementos de Âmbito> .
-
<Âmbito> – especifica uma permissão de que o suplemento precisa para o AAD. As
profile
permissões eopenID
são sempre necessárias e podem ser as únicas permissões necessárias se o seu suplemento não aceder ao Microsoft Graph. Se for o caso, também precisa de elementos de <Âmbito> para as permissões necessárias do Microsoft Graph; por exemplo, ,User.Read
Mail.Read
. Bibliotecas que você usa no seu código para acessar o Microsoft Graph pode precisar de permissões adicionais. Por exemplo, a Biblioteca de Autenticação da Microsoft (MSAL) para .NET requer aoffline_access
permissão. Para saber mais, confira autorizar o Microsoft Graph de um suplemento do Office.
Adicionar o pacote jwt-decode
Pode ligar para a getAccessToken
API para obter o token de ID do Office. Primeiro, vamos adicionar o pacote jwt-decode para facilitar a descodificar e ver o token de ID.
Abra a solução visual Studio.
No menu, selecione Ferramentas> Consolado Gestor de Pacotes nuGet>Gestor de Pacotes.
Introduza o seguinte comando na Consola do Gestor de Pacotes.
Install-Package jwt-decode -Projectname sso-display-user-infoWeb
Adicionar IU ao painel de tarefas
Modifique o painel de tarefas para que possa apresentar as informações de utilizador que obterá do token de ID.
Abra o ficheiro Home.html.
Adicione a seguinte etiqueta de script à
<head>
secção da página. Isto incluirá que o pacote jwt-decode foi adicionado anteriormente.<script src="Scripts/jwt-decode-2.2.0.js" type="text/javascript"></script>
Substitua a
<body>
secção pelo seguinte 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>
Chamar a API getAccessToken
O passo final é obter o token de ID ao chamar getAccessToken
.
Abra o ficheiro Home.js .
Substitua todo o conteúdo do arquivo pelo código a seguir.
(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); } } })();
Salve o arquivo.
Execute o suplemento
Selecione Depurar>Iniciar Depuração ou prima F5.
- Quando o Excel é iniciado, inicie sessão no Office com a mesma conta de inquilino que utilizou para criar o registo de aplicações.
- No friso Base , selecione Mostrar Painel de Tarefas para abrir o suplemento.
- No painel de tarefas do suplemento, selecione Obter token de ID.
O suplemento apresentará o nome, o e-mail e o ID da conta com a qual iniciou sessão.
Observação
Se encontrar erros, veja os passos de registo neste artigo para o registo de aplicações. A falta de um detalhe ao configurar o registo de aplicações é uma causa comum de problemas ao trabalhar com o SSO. Se, mesmo assim, não conseguir executar o suplemento com êxito, veja Resolver problemas de mensagens de erro para o início de sessão único (SSO).
Parar o suplemento
Selecione Parar Depuração ou prima Shift+F5.
Confira também
Utilizar afirmações para identificar de forma fiável um utilizador (ID do Assunto e do Objeto)