Autenticar um usuário com um token de identidade para o Exchange

Importante

Tokens de identidade de usuário do Exchange Herdado e tokens de retorno de chamada serão desativados para todos os locatários Exchange Online em outubro de 2024 como parte da Iniciativa Secure Future da Microsoft, que fornece às organizações as ferramentas necessárias para responder ao cenário atual de ameaças. Os tokens de identidade do usuário do Exchange ainda funcionarão para o Exchange local. A autenticação de aplicativo aninhada é a abordagem recomendada para tokens daqui para frente. Para obter mais informações, confira nossa postagem no blog sobre autenticação de aplicativo aninhado e tokens herdados do Exchange.

Os tokens de identidade do usuário do Exchange fornecem uma maneira de o suplemento identificar exclusivamente um usuário do suplemento. Ao estabelecer a identidade do usuário, você pode implementar um esquema de autenticação SSO (logon único) para seu serviço de back-end que permite que os clientes que estão usando suplementos do Outlook se conectem ao seu serviço sem entrar. Confira Token de identidade do usuário do Exchange para saber mais sobre quando usar esse tipo de token. Neste artigo, vamos dar uma olhada em uma forma simples de usar o token de identidade do Exchange para autenticar um usuário para seu back-end.

Importante

Isso é apenas um exemplo simples de uma implementação de SSO. Como sempre, quando você está lidando com identidade e autenticação, deve garantir que seu código atenda aos requisitos de segurança de sua organização.

Enviar o token de ID com cada solicitação

A primeira etapa é que o seu suplemento obtenha o token de identidade do usuário do Exchange do servidor chamando getUserIdentityTokenAsync. Em seguida, o suplemento envia esse token com cada solicitação realizada para o back-end. Isso pode ocorrer em um cabeçalho ou como parte do corpo da solicitação.

Validar o token

O back-end DEVE validar o token antes de aceitá-lo. Esta é uma etapa importante para garantir que o token foi emitido pelo servidor do Exchange do usuário. Para obter informações sobre a validação de tokens de identidade do usuário do Exchange, confira Validar um token de identidade do Exchange.

Depois de validado e decodificado, o conteúdo do token se parece com o seguinte:

{ 
    "aud" : "https://mailhost.contoso.com/IdentityTest.html",
    "iss" : "00000002-0000-0ff1-ce00-000000000000@mailhost.contoso.com",
    "nbf" : "1505749527",
    "exp" : "1505778327",
    "appctxsender":"00000002-0000-0ff1-ce00-000000000000@mailhost.context.com",
    "isbrowserhostedapp":"true",
    "appctx" : {
        "msexchuid" : "53e925fa-76ba-45e1-be0f-4ef08b59d389",
        "version" : "ExIdTok.V1",
        "amurl" : "https://mailhost.contoso.com:443/autodiscover/metadata/json/1"
    }
}

Mapear o token para um usuário em seu back-end

O serviço de back-end pode calcular uma ID de usuário exclusiva a partir do token e mapeá-la para um usuário em seu sistema de usuário interno. Por exemplo, se usar um banco de dados para armazenar os usuários, você poderá adicionar essa ID exclusiva ao registro do usuário no banco de dados.

Gerar uma ID exclusiva

Use uma combinação das msexchuid propriedades e amurl . Você pode, por exemplo, concatenar os dois valores em conjunto e gerar uma cadeia de caracteres codificada em Base64. Esse valor poderá sempre ser confiavelmente gerado a partir do token para que você possa mapear um token de identidade do usuário do Exchange para o usuário em seu sistema.

Verificar o usuário

Com a ID exclusiva gerada, a próxima etapa é verificar se há um usuário em seu sistema com essa ID associada.

  • Se o usuário for encontrado, o back-end tratará a solicitação como autenticada e permitirá o progresso da solicitação.

  • Se o usuário não for encontrado, o back-end retornará um erro indicando que o usuário precisa se conectar. Em seguida, o suplemento solicita que o usuário acesse o back-end usando seu método de autenticação existente. Quando o usuário é autenticado, o token de identidade do usuário do Exchange é enviado com os detalhes da autenticação do usuário. Em seguida, o back-end pode atualizar o registro do usuário no sistema com a identificação exclusiva.