Trocar um token SAML emitido por AD FS para um token de acesso Microsoft Graph

Para habilitar o SSO (logon único) em aplicativos que usam tokens SAML emitidos pelo Serviços de Federação do Active Directory (AD FS) e também exigem acesso ao Microsoft Graph, siga as etapas neste artigo.

Você habilitará o fluxo de declaração de portador SAML para trocar um token SAMLv1 emitido pela instância de AD FS federada para um token de acesso OAuth 2,0 para Microsoft Graph. Quando o navegador do usuário é redirecionado para o Microsoft Entra ID a fim de autenticá-lo, o navegador pega a sessão do login SAML em vez de pedir ao usuário para inserir suas credenciais.

Importante

Esse cenário funciona somente quando AD FS é o provedor de identidade federada que emitiu o token SAMLv1 original. Você não pode trocar um token SAMLv2 emitido pelo Microsoft Entra ID para um token de acesso do Microsoft Graph.

Pré-requisitos

Visão geral do cenário

O fluxo de declaração do portador SAML do OAuth 2.0 permite solicitar um token de acesso OAuth usando uma declaração SAML quando um cliente precisa usar uma relação de confiança existente. A assinatura aplicada à declaração SAML fornece autenticação do aplicativo autorizado. Uma declaração SAML é um token de segurança XML emitido por um provedor de identidade e consumido por um provedor de serviços. O provedor de serviços depende do conteúdo para identificar a entidade da declaração para fins relacionados à segurança.

A declaração SAML é postada no ponto de extremidade do token OAuth. O ponto de extremidade processa a declaração e emite um token de acesso com base na aprovação anterior do aplicativo. O cliente não precisa ter nem armazenar um token de atualização, tampouco o segredo do cliente deve ser passado para o ponto de extremidade do token.

OAuth flow

Registrar o aplicativo com Microsoft Entra ID

Comece registrando o aplicativo no portal:

  1. Faça login na página de registro do aplicativo do portal (observe que estamos usando os pontos de extremidade v2.0 para a API do Graph e, portanto, precisamos registrar o aplicativo no centro de administração do Microsoft Entra. Caso contrário, poderíamos ter usado os registros no Microsoft Entra ID).
  2. Selecione Novo registro.
  3. Quando a página Registrar um aplicativo for exibida, insira as informações de registro do aplicativo:
    1. Nome: insira um nome de aplicativo relevante que será exibido aos usuários do aplicativo.
    2. Tipos de conta com suporte: selecione as contas às quais você gostaria que seu aplicativo desse suporte.
    3. URI de redirecionamento (opcional): selecione o tipo de aplicativo que você está compilando, Web ou Cliente público (dispositivos móvel e desktop) e insira o URI de redirecionamento (ou a URL de resposta) do aplicativo.
    4. Ao terminar, selecione Registrar.
  4. Anote a ID do aplicativo (cliente).
  5. No painel esquerdo, selecione Certificados e segredos. Clique em Novo segredo do cliente na seção Segredos do cliente. Copie o novo segredo do cliente, pois você não poderá recuperá-lo quando sair da página.
  6. No painel esquerdo, selecione Permissões de API e Adicionar uma permissão. Selecione Microsoft Graph, Permissões delegadas e Tasks.read, pois pretendemos usar a API do Graph do Outlook.

Obter a declaração SAML do ADFS

Crie uma solicitação POST ao ponto de extremidade do AD FS usando o envelope SOAP para efetuar fetch da declaração SAML:

Get SAML assertion

Valores do cabeçalho:

Header values

Corpo da solicitação do AD FS:

AD FS request body

Depois que a solicitação for postada com êxito, você deverá receber uma declaração SAML do AD FS. Somente os dados da marca SAML:Assertion são necessários; converta-os na codificação Base64 para usá-los em solicitações posteriores.

Obter o token OAuth 2.0 usando a declaração SAML

Efetue fetch de um token OAuth 2.0 usando a resposta de declaração do AD FS.

  1. Crie uma solicitação POST, conforme mostrado abaixo, com os valores de cabeçalho:

    POST request

  2. No corpo da solicitação, substitua id_do_cliente, segredo_do_cliente e declaração (a declaração SAML codificada em Base64 obtida na etapa anterior):

    Request body

  3. Se a solicitação for bem-sucedida, você receberá um token de acesso do Microsoft Entra ID.

Obter os dados com o token OAuth 2.0

Depois de receber o token de acesso, chame as APIs do Graph (tarefas do Outlook, neste exemplo).

  1. Crie uma solicitação GET com o token de acesso buscado na etapa anterior:

    GET request

  2. Após a solicitação bem-sucedida, você receberá uma resposta JSON.

Próximas etapas

Para saber mais sobre o fluxo de autenticação e registro do aplicativo, confira: