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
- AD FS federado como um provedor de identidade para logon único; confira Configurando o AD FS e habilitando Logon Único para o Office 365 para obter um exemplo.
- Postman para solicitações de teste.
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.
Registrar o aplicativo com Microsoft Entra ID
Comece registrando o aplicativo no portal:
- 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).
- Selecione Novo registro.
- Quando a página Registrar um aplicativo for exibida, insira as informações de registro do aplicativo:
- Nome: insira um nome de aplicativo relevante que será exibido aos usuários do aplicativo.
- Tipos de conta com suporte: selecione as contas às quais você gostaria que seu aplicativo desse suporte.
- 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.
- Ao terminar, selecione Registrar.
- Anote a ID do aplicativo (cliente).
- 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.
- 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:
Valores do cabeçalho:
Corpo da solicitação do AD FS:
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.
Crie uma solicitação POST, conforme mostrado abaixo, com os valores de cabeçalho:
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):
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).
Crie uma solicitação GET com o token de acesso buscado na etapa anterior:
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: