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. A Graph API 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. A Graph API 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 o Microsoft Entra ID recebe um pedido de acesso a um recurso do Microsoft Graph, verifica se o utilizador da aplicação ou o administrador inquilino deu consentimento para este recurso. Se não existir nenhum registo de consentimento do utilizador ou administrador, o ID do Microsoft Entra 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 ID do Microsoft Entra. Para adicionar um domínio personalizado ao Microsoft Entra ID e registá-lo, siga o procedimento adicionar um nome de domínio personalizado ao 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 ID do Microsoft Entra.

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 registo da aplicação Microsoft Entra 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 resolver este erro, verifique se os detalhes da aplicação configurados no seu código e o manifesto da aplicação (anteriormente denominado manifesto de aplicação do Teams) correspondem aos valores no ID do Microsoft Entra.

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

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

Verifique se os seguintes valores correspondem entre o ID do Microsoft Entra, 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 ID do Microsoft Entra 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 ID do Microsoft Entra.

  • 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, verifique se o mesmo foi 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 no 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 ID do Microsoft Entra.
  • Microsoft Entra versão 1.0 ou 2.0 (ver): verifique se a versão do Microsoft Entra 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 cartão 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 do 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 é apresentado porque existe uma sessão ativa do Microsoft Entra 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 nenhuma sessão do Microsoft Entra para ser partilhada e é-lhe pedido para iniciar sessão.

Confira também

Melhores práticas de segurança para propriedades de aplicações no ID do Microsoft Entra