Compartilhar via


Solucionar problemas de autenticação de logon único no Teams

Aqui está uma lista de problemas e perguntas sobre o logon único e como você pode corrigi-los.

Suporte para o Microsoft Graph


1. O API do Graph funciona no Postman?
Você pode usar a coleção do Microsoft Graph Postman com as APIs do Microsoft Graph.

Para obter mais informações, confira Usar o Postman com a API do Microsoft Graph.


2. O API do Graph funciona no explorador do Microsoft Graph?
Sim, a API do Graph funciona no Explorador do Graph da Microsoft.

Para saber mais, consulte Explorador do Graph.


Mensagens de erro e como lidar com elas


1. Erro: consentimento em falta.
Quando Microsoft Entra ID recebe um pedido de acesso a um recurso do Microsoft Graph, verifica se o utilizador ou administrador da aplicação deu consentimento para este recurso. Se não existir nenhum registo de consentimento do utilizador ou administrador, Microsoft Entra ID envia uma mensagem de erro para o seu serviço Web.

O código tem de indicar ao cliente (por exemplo, no corpo de uma resposta 403 Proibido) como lidar com o erro:

  • Se o aplicativo guia precisar de escopos do Microsoft Graph para os quais apenas um administrador pode dar consentimento, seu código deve 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.

2. Erro: Âmbito em falta (permissão).
Este erro é visto somente durante o desenvolvimento.

Para lidar com este erro, o código do lado do servidor deve enviar uma resposta 403 Proibido ao cliente. Ele deve registrar o erro no console ou registrá-lo em um log.


3. Erro: Audiência inválida no token de acesso do Microsoft Graph.
O código do lado do servidor deve enviar uma resposta 403 Proibido ao cliente para mostrar uma mensagem ao utilizador. Recomenda-se que também registe o erro na consola ou registe-o num registo.

4. Erro: o nome do anfitrião não pode ser baseado num domínio já propriedade.
Você pode obter este erro em um dos dois cenários:
  1. O domínio personalizado não é adicionado ao Microsoft Entra ID. Para adicionar um domínio personalizado ao Microsoft Entra ID e registá-lo, siga o procedimento adicionar um nome de domínio personalizado para Microsoft Entra ID. Em seguida, siga os passos para Configurar novamente o âmbito do token de acesso .
  2. Não tem sessão iniciada com credenciais de Administrador no inquilino do Microsoft 365. Entre no Microsoft 365 como um administrador.

5. Erro: O Nome Principal de Utilizador (UPN) não foi recebido no token de acesso devolvido.
Pode adicionar o UPN como uma afirmação opcional no Microsoft Entra ID.

Para saber mais, consulte Fornecer declarações opcionais ao seu aplicativo e a tokens de acesso.


6. Erro: Erro do SDK do Teams: resourceDisabled.
Para evitar este erro, certifique-se de que o URI do ID da aplicação está configurado corretamente no Microsoft Entra registo de aplicações e no cliente do Teams.

Para saber mais sobre o URI da ID do aplicativo, consulte Para expor uma API.


7. Erro: erro genérico ao executar a aplicação de separador.
Um erro genérico pode aparecer quando uma ou mais configurações de aplicações efetuadas no Microsoft Entra ID estão incorretas. Para resolve este erro, marcar se os detalhes da aplicação configurados no seu código e o manifesto da aplicação (anteriormente denominado manifesto da aplicação Teams) corresponderem aos valores em Microsoft Entra ID.

A imagem seguinte mostra um exemplo dos detalhes da aplicação configurados no Microsoft Entra ID.

Valores de configuração de aplicações no Microsoft Entra ID

Verifique se os seguintes valores correspondem entre Microsoft Entra ID, o código do lado do cliente e o manifesto da aplicação:

  • ID da Aplicação: o ID da aplicação que gerou no Microsoft Entra ID deve ser o mesmo no código e no ficheiro de manifesto da aplicação. Verifique se o ID da aplicação no esquema do manifesto da aplicação corresponde ao ID da Aplicação (cliente) no Microsoft Entra ID.

  • Segredo da aplicação: o segredo da aplicação configurado no back-end da sua aplicação deve corresponder às credenciais do Cliente no Microsoft Entra ID. Você também deve verificar se o segredo do cliente está expirado.

  • URI do ID da Aplicação: o URI do ID da aplicação no código e no ficheiro de manifesto da aplicação deve corresponder ao URI do ID da Aplicação no Microsoft Entra ID.

  • Permissões de aplicativo: verifique se as permissões que você definiu no escopo estão de acordo com o requisito do seu aplicativo. Em caso afirmativo, marcar se o mesmo tivesse sido concedido ao utilizador no token de acesso.

  • Consentimento do administrador: se qualquer escopo exigir consentimento do administrador, verifique se o consentimento foi concedido para o escopo particular ao usuário.

Além disso, inspecionar o token de acesso que foi enviado para o aplicativo guia para verificar se os seguintes valores estão corretos:

  • Audiência (aud): verifique se o ID da aplicação no token está correto, conforme indicado em Microsoft Entra ID.
  • ID do locatário(tid): verifique se o locatário mencionado no token está correto.
  • Identidade do utilizador (preferred_username): verifique se a identidade do utilizador corresponde ao nome de utilizador no pedido de token de acesso para o âmbito ao qual o utilizador atual pretende aceder.
  • Âmbitos (scp): verifique se o âmbito para o qual o token de acesso é pedido está correto e, conforme definido no Microsoft Entra ID.
  • Microsoft Entra versão 1.0 ou 2.0 (ver): verifique se Microsoft Entra versão está correta.

Você pode usar o JWT para inspecionar o token.

Erro de token do SSO do Bot


Falha na troca de tokens.
Se houver uma falha de troca de token, use o seguinte código:
{​​ 
    "status": "<response code>", 
    "body": 
    {​​ 
        "id":"<unique Id>", 
        "connectionName": "<connection Name on the bot (from the OAuth card)>", 
        "failureDetail": "<failure reason if status code is not 200, null otherwise>" 
    }​​ 
}​​

Para compreender o comportamento do bot quando a troca de tokens não aciona um pedido de consentimento, veja os seguintes passos:

Observação

Nenhuma ação do usuário é necessária para ser executada, pois o bot executa as ações quando a troca de token falha.

  1. O cliente inicia uma conversa com o bot disparando um cenário OAuth.

  2. O bot envia de volta um cartão OAuth para o cliente.

  3. O cliente interceta o card OAuth antes de o apresentar ao utilizador da aplicação. Verifica se contém uma TokenExchangeResource propriedade.

  4. Se a propriedade existir, o cliente enviará um TokenExchangeInvokeRequest ao bot. O cliente tem de ter um token permutável para o utilizador. Este token tem de ser um token Azure AD v2 cuja audiência tem de ser igual à TokenExchangeResource.Uri propriedade .

  5. O cliente envia uma atividade de invocação para o bot com o seguinte código:

    {
        "type": "Invoke",
        "name": "signin/tokenExchange",
        "value": 
        {
            "id": "<any unique Id>",
            "connectionName": "<connection Name on the skill bot (from the OAuth card)>",
            "token": "<exchangeable token>"
        }
    }
    
  6. O bot processa o TokenExchangeInvokeRequest e retorna um TokenExchangeInvokeResponse de volta para o cliente. O cliente deve aguardar até receber o 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>"
        }
    }
    
  7. Se o TokenExchangeInvokeResponse tiver um status de 200, o cliente não mostrará o cartão OAuth. Consulte a imagem de fluxo normal. Para qualquer outro status ou se o TokenExchangeInvokeResponse não for recebido, o cliente mostrará o cartão OAuth para o usuário. Consulte a imagem de fluxo fallback. Se houver erros ou dependências não atendidas listadas, como o consentimento do usuário, essa atividade garantirá que o fluxo de SSO volte ao fluxo normal do OAuthCard.

    Observação

    No cliente Web do Teams, o pedido de palavra-passe não aparece porque existe uma sessão de Microsoft Entra ativa no browser, que é utilizada para autenticação e para adquirir um token. No cliente de ambiente de trabalho do Teams, o pedido de palavra-passe é apresentado porque o cliente de ambiente de trabalho não tem Microsoft Entra sessão a partilhar e é-lhe pedido para iniciar sessão.

Confira também

Melhores práticas de segurança para propriedades da aplicação no Microsoft Entra ID