Share 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 Gerenciador 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 ausente.
Quando Microsoft Entra ID recebe uma solicitação para acessar um recurso do Microsoft Graph, ele verifica se o usuário do aplicativo ou administrador de locatário deu consentimento para esse recurso. Se não houver nenhum registro de consentimento do usuário ou administrador, Microsoft Entra ID enviará uma mensagem de erro ao seu serviço Web.

Seu código deve informar ao cliente (por exemplo, no corpo de uma resposta proibida 403) 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: escopo ausente (permissão).
Este erro é visto somente durante o desenvolvimento.

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


3. Erro: Público inválido no token de acesso do Microsoft Graph.
O código do lado do servidor deve enviar uma resposta proibida 403 ao cliente para mostrar uma mensagem ao usuário. É recomendável que ele também registre o erro no console ou registre-o em um log.

4. Erro: o nome do host não deve ser baseado em um domínio já proprietário.
Você pode obter este erro em um dos dois cenários:
  1. O domínio personalizado não é adicionado à ID Microsoft Entra. Para adicionar domínio personalizado ao Microsoft Entra ID e registrá-lo, siga o procedimento adicionar um nome de domínio personalizado ao procedimento de ID de Microsoft Entra. Em seguida, siga as etapas para configurar o escopo do token de acesso novamente.
  2. Você não está conectado com credenciais de administrador no locatário do Microsoft 365. Entre no Microsoft 365 como um administrador.

5. Erro: O UPN (Nome da Entidade de Usuário) não foi recebido no token de acesso retornado.
Você pode adicionar UPN como uma declaraçã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: recurso desabilitado.
Para evitar esse erro, verifique se o URI da ID do aplicativo está configurado corretamente em Microsoft Entra registro do aplicativo 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 o aplicativo de guias.
Um erro genérico pode aparecer quando uma ou mais configurações de aplicativo feitas em Microsoft Entra ID estiverem incorretas. Para resolve esse erro, marcar se os detalhes do aplicativo configurados em seu código e o manifesto do aplicativo (anteriormente chamado de manifesto do aplicativo Teams) corresponderem aos valores em Microsoft Entra ID.

A imagem a seguir mostra um exemplo dos detalhes do aplicativo configurados em Microsoft Entra ID.

Valores de configuração de aplicativo em Microsoft Entra ID

Verifique se os valores a seguir correspondem entre Microsoft Entra ID, código do lado do cliente e manifesto do aplicativo:

  • ID do aplicativo: a ID do aplicativo gerada em Microsoft Entra ID deve ser a mesma no código e no arquivo de manifesto do aplicativo. Verifique se a ID do aplicativo no esquema de manifesto do aplicativo corresponde à ID do aplicativo (cliente) no Microsoft Entra ID.

  • Segredo do aplicativo: o segredo do aplicativo configurado no back-end do aplicativo deve corresponder às credenciais do cliente em Microsoft Entra ID. Você também deve verificar se o segredo do cliente está expirado.

  • URI da ID do aplicativo: o URI da ID do aplicativo no código e no arquivo de manifesto do aplicativo deve corresponder ao URI da ID do Aplicativo em 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. Nesse caso, marcar se eles tivessem sido concedidos ao usuário 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 a ID do aplicativo no token está correta, conforme fornecido em Microsoft Entra ID.
  • ID do locatário(tid): verifique se o locatário mencionado no token está correto.
  • Identidade do usuário (preferred_username): verifique se a identidade do usuário corresponde ao nome de usuário na solicitação de token de acesso, para o escopo que o usuário atual deseja acessar.
  • Escopos (scp): verifique se o escopo para o qual o token de acesso é solicitado está correto e conforme definido em 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 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 entender o comportamento do bot quando a troca de tokens não disparar um prompt de consentimento, confira as seguintes etapas:

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 intercepta o cartão OAuth antes de exibi-lo para o usuário do aplicativo. Ele verifica se ele contém uma TokenExchangeResource propriedade.

  4. Se a propriedade existir, o cliente enviará um TokenExchangeInvokeRequest ao bot. O cliente deve ter um token trocável para o usuário. Esse token deve ser um token Azure AD v2 cujo público-alvo deve ser o mesmo que TokenExchangeResource.Uri a 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 prompt de senha não aparece, pois há uma sessão de Microsoft Entra ativa no navegador, que é usada para autenticação e para adquirir um token. No cliente da área de trabalho do Teams, o prompt de senha é exibido porque o cliente da área de trabalho não tem nenhuma sessão Microsoft Entra a ser compartilhada e é solicitado a fazer logon.

Confira também

Práticas recomendadas de segurança para propriedades de aplicativo em Microsoft Entra ID