Solucionar problemas de mensagens de erro no logon único (SSO)
Este artigo fornece algumas orientações sobre como solucionar problemas com o logon único (SSO) nos suplementos do Office e como fazer com que seu suplemento habilitado para SSO lide de forma robusta com os erros ou condições especiais.
Observação
A API de Logon Único é compatível com Word, Excel, Outlook e PowerPoint. Confira mais informações sobre os programas para os quais a API de logon único tem suporte no momento em Conjuntos de requisitos da IdentityAPI. Se estiver a trabalhar com um suplemento do Outlook, certifique-se de que ativa a Autenticação Moderna para o inquilino do Microsoft 365. Para obter informações sobre como fazê-lo, consulte Ativar ou desativar a autenticação moderna para o Outlook no Exchange Online.
Ferramentas de depuração
Recomendamos fortemente que você use uma ferramenta que possa interceptar e exibir as solicitações HTTP a partir de seu serviço Web do suplemento, além de respostas para ele, quando você estiver desenvolvendo. Alguns dos mais populares são:
- Fiddler: gratuito durante 10 dias (Documentação)
- Charles: Gratuita por 30 dias. (Documentação)
- Pedido: serviço básico gratuito. (Documentação)
Causas e tratamento dos erros do getAccessToken
Para acessar exemplos de tratamento de erro descritos nesta seção, confira:
13000
A API getAccessToken não é suportada pelo suplemento ou pela versão do Office.
- A versão do Office não é compatível com o SSO. A versão necessária é a subscrição do Microsoft 365, em qualquer canal mensal.
- O manifesto do suplemento está sem a seção WebApplicationInfo adequada.
O suplemento deverá responder a esse erro recorrendo a um sistema de autenticação de usuário alternativo. Para obter mais informações, confira Requisitos e Melhores Práticas.
13001
O utilizador não tem sessão iniciada no Office. Na maioria dos cenários, você deve evitar que esse erro apareça passando a opção allowSignInPrompt: true
no parâmetro AuthOptions
.
Mas pode haver exceções. Por exemplo, no caso de você desejar que o suplemento seja aberto com recursos que exijam um usuário conectado; mas somente se o usuário já estiver conectado ao Office. Se o utilizador não tiver sessão iniciada, pretende que o suplemento seja aberto com um conjunto alternativo de funcionalidades que não exijam que o utilizador tenha sessão iniciada. Nesse caso, essa é a lógica executada quando o suplemento inicia chamadas getAccessToken
sem allowSignInPrompt: true
. Use o erro 13001 como sinalizador para informar ao suplemento para apresentar o conjunto alternativo de recursos.
Outra opção é responder ao 13001 recorrendo a um sistema alternativo de autenticação de usuário. Isso conectará o usuário ao AAD, mas não o conectará ao Office.
Normalmente, este erro não ocorre no Office na Web. Se o cookie do utilizador expirar, Office na Web devolve o erro 13006. No entanto, se um utilizador aceder a Outlook na Web a partir do Firefox com a Proteção de Controlo Avançada ativada, ocorrerá o erro 13001.
13002
O usuário abortou a entrada ou o consentimento; por exemplo, escolhendo Cancelar no diálogo de consentimento.
- Se o seu suplemento fornece funções que não exigem que o usuário esteja conectado (ou que tenha concedido o consentimento), seu código deve capturar esse erro e permitir que o suplemento permaneça em execução.
- Se o suplemento exigir um usuário conectado que tenha dado consentimento, o código deverá exibir um botão de logon.
13003
Tipo de Usuário não suportado. O utilizador não tem sessão iniciada no Office com uma conta Microsoft válida, Microsoft 365 Education ou conta profissional. Isso pode acontecer se o Office funcionar com uma conta de domínio no local, por exemplo. O código deve retornar a um sistema alternativo de autenticação de usuário. No Outlook, este erro também poderá ocorrer se a autenticação moderna estiver desativada para o inquilino do utilizador no Exchange Online. Para obter mais informações, confira Requisitos e Melhores Práticas.
13004
Recurso inválido. (Este erro só deve ser visto no desenvolvimento.) O manifesto do suplemento não foi configurado corretamente. Atualize o manifesto. Para saber mais, confira Validar o manifesto de suplemento do Office. O problema mais comum é que o <elemento Recurso> (no <elemento WebApplicationInfo> ) tem um domínio que não corresponde ao domínio do suplemento. Embora a parte do protocolo do valor Resource deva ser “api” e não “https”, todas as outras partes do nome de domínio (incluindo a porta, se houver) devem ser as mesmas para o suplemento.
13005
Concessão inválida. Isso geralmente significa que o Office não foi pré-autorizado para o serviço Web do suplemento. Para obter mais informações, consulte Criar a aplicação de serviço e Registar um Suplemento do Office que utiliza o início de sessão único (SSO) com o plataforma de identidade da Microsoft. Isso também pode acontecer se o usuário não concedeu as permissões de aplicativo de serviço para o seu profile
, ou se tiver revogado um consentimento. O código deve retornar a um sistema alternativo de autenticação de usuário.
Outra causa possível durante o desenvolvimento, é que o suplemento esteja usando o Internet Explorer e você um certificado autoassinado. (Para determinar que browser ou webview está a ser utilizado pelo suplemento, consulte Browsers e controlos webview utilizados pelos Suplementos do Office.)
13006
Erro do Cliente. Este erro somente aparece no Office na Web. Seu código deve sugerir que o usuário saia e reinicie a sessão do Office no navegador.
13007
A aplicação do Office não conseguiu obter um token de acesso para o serviço Web do suplemento.
- Se ocorrer este erro durante o desenvolvimento, certifique-se de que o registro e o manifesto do suplemento especifiquem as permissões de
profile
(e a permissão deopenid
, se estiver usando o MSAL.NET). Para obter mais informações, consulte Registar um Suplemento do Office que utiliza o início de sessão único (SSO) com o plataforma de identidade da Microsoft. - Na produção, um erro de correspondência de conta pode causar este erro. Por exemplo, se o utilizador tentar iniciar sessão com uma conta Microsoft pessoal (MSA) quando era esperada uma conta escolar ou profissional. Nestes casos, o código deve reverter para um sistema alternativo de autenticação de utilizador. Para obter mais informações sobre tipos de conta, veja Identidade e tipos de conta para aplicações de inquilino único e multi-inquilino
13008
O usuário desencadeou uma operação que chama o getAccessToken
antes de uma chamada anterior do getAccessToken
concluída. Este erro somente aparece no Office na Web. O código deve solicitar ao usuário que repita a operação após a conclusão da operação anterior.
13010
O utilizador está a executar o suplemento no Office no Microsoft Edge. O domínio do Microsoft 365 do utilizador e o login.microsoftonline.com
domínio encontram-se numa zona de segurança diferente nas definições do browser. Este erro somente aparece no Office na Web. Se esse erro for retornado, o usuário já terá visto uma mensagem explicando o erro e vinculando a uma página sobre como alterar a configuração da zona. Se o seu suplemento fornece funções que não exigem que o usuário esteja conectado, o código deve capturar esse erro e permitir que o suplemento permaneça em execução.
13012
Existem várias causas possíveis.
- O suplemento está em execução em uma plataforma não dá suporte à API
getAccessToken
. Por exemplo, não é suportado no iPad. Veja também Conjuntos de requisitos da API de Identidade. - O documento do Office foi aberto a partir do separador Ficheiros de um canal do Teams com a opção Editar no Teams no menu pendente Abrir . A
getAccessToken
API não é suportada neste cenário. - A opção
forMSGraphAccess
foi passada na chamada aogetAccessToken
e o usuário obteve o suplemento no AppSource. Nesse cenário, o administrador do locatário não deu o consentimento ao suplemento para os escopos (permissões) do Microsoft Graph necessários. Uma nova chamada aogetAccessToken
com oallowConsentPrompt
, não resolverá o problema porque o Office poderá solicitar ao usuário o consentimento apenas para o escopo AAD doprofile
.
O código deve retornar a um sistema alternativo de autenticação de usuário.
No desenvolvimento, o suplemento é sideloaded no Outlook e a opção forMSGraphAccess
foi passada na chamada ao getAccessToken
.
13013
O getAccessToken
foi chamado demasiadas vezes num curto espaço de tempo, pelo que o Office limitava a chamada mais recente. Normalmente, isto é causado por um ciclo infinito de chamadas para o método . Existem cenários em que é aconselhável recuperar o método. No entanto, o código deve utilizar um contador ou uma variável de sinalizador para garantir que o método não é recolhido repetidamente. Se o mesmo caminho de código "repetir" estiver novamente em execução, o código deverá reverter para um sistema alternativo de autenticação de utilizador. Para obter um exemplo de código, veja como a retryGetAccessToken
variável é utilizada em HomeES6.js ou ssoAuthES6.js.
50001
Este erro (que não é específico de getAccessToken
) pode indicar que o browser tem uma cópia antiga dos ficheiros office.js em cache. Quando estiver a desenvolver, limpe a cache do browser. Outra possibilidade é que a versão do Office não seja suficientemente recente para suportar o SSO. No Windows, a versão mínima é a Versão 1911 (Compilação 12215.20006). No Mac, é a Versão 16.32 (19102902).
Em um suplemento de produção, o suplemento deverá responder a esse erro recorrendo a um sistema de autenticação de usuário alternativo. Para obter mais informações, confira Requisitos e Melhores Práticas.
Erros no lado do servidor do Azure Active Directory
Para exemplos do tratamento de erro descritos nesta seção, confira:
Erros no acesso condicional/autenticação multifatorial
Em determinadas configurações de identidade no AAD e no Microsoft 365, é possível que alguns recursos acessíveis com o Microsoft Graph exijam autenticação multifator (MFA), mesmo quando o inquilino do Microsoft 365 do utilizador não. Quando o AAD recebe uma solicitação de um token para o recurso protegido por MFA, através do fluxo Em Nome De, ele retorna ao serviço Web do seu suplemento uma mensagem JSON que contém uma propriedade claims
. A propriedade de reivindicações tem informações sobre quais outros fatores de autenticação são necessários.
O código deve testar essa propriedade de claims
. Dependendo da arquitetura do seu suplemento, você poderá testá-lo no lado do cliente ou testá-lo no lado do servidor e retransmiti-lo ao cliente. Você precisa dessa informação no cliente porque o Office processa a autenticação para os suplementos de SSO. Se você retransmiti-lo do lado do servidor, a mensagem para o cliente pode ser um erro (como 500 Server Error
ou 401 Unauthorized
) ou estar no corpo de uma resposta de sucesso (como 200 OK
). Em ambos os casos, o retorno de chamada (falha ou sucesso) da chamada AJAX do lado do cliente do seu código para a API da Web do seu suplemento deve testar essa resposta.
Independentemente da sua arquitetura, se o valor de afirmações tiver sido enviado do AAD, o código deve recuperar getAccessToken
e transmitir a opção authChallenge: CLAIMS-STRING-HERE
no options
parâmetro . Quando o AAD vê esta cadeia, pede ao utilizador os fatores adicionais e, em seguida, devolve um novo token de acesso que será aceite no fluxo em nome de.
Erros de falta de consentimento
Se o AAD não tiver um registro de que o consentimento (para o recurso Microsoft Graph) foi concedido ao suplemento pelo usuário (ou administrador do locatário), o AAD enviará uma mensagem de erro ao seu serviço Web. Seu código deve dizer ao cliente (no corpo de uma resposta 403 Forbidden
, por exemplo).
Se o suplemento precisar de escopos do Microsoft Graph que só possam ser consentidos por um administrador, seu código deverá gerar um erro. Se os únicos escopos necessários puderem ser consentidos pelo usuário, o código deverá retornar a um sistema alternativo de autenticação de usuário.
Erros de escopos (permissões) inválidos ou ausentes
Esse tipo de erro só deve aparecer no desenvolvimento.
- Seu código do lado do servidor deve enviar a resposta
403 Forbidden
ao cliente, que deve registrar o erro no console ou gravá-lo em um log. - Verifique se a seção de Escopos do manifesto do suplemento especifica todas as permissões necessárias. E certifique-se de que seu registro do serviço Web do suplemento especifique as mesmas permissões. Verifique também os erros de ortografia. Para obter mais informações, consulte Registar um Suplemento do Office que utiliza o início de sessão único (SSO) com o plataforma de identidade da Microsoft.
Erro de audiência inválido no token de acesso do Microsoft Graph
Seu código do lado do servidor deve enviar uma resposta 403 Forbidden
ao cliente que deve apresentar uma mensagem amigável ao usuário e, possivelmente, também registrar o erro no console ou gravá-lo em um registro.