Graph AuthenticationError ao consultar mailbox no Exchange On-Premises

English 

Com o intuito de realizar alguns testes híbridos, realizei a instalação do Exchange Server 2019 (preview) em um Windows Server 2016 Server Core. Depois de rodar o Hybrid Configuration Wizard fui informado que não foi possível configurar o protocolo OAuth 2.0. Por ser um requisito para o funcionamento do Graph API em cenário híbrido, realizei então a habilitação manual do OAuth seguindo esse artigo. Porém mesmo após ter habilitado o OAuth, os testes que eu realizava a partir do Graph Explorer fazendo GET a uma mailbox no Exchange On-Premises retornava um AuthenticationError:

“Code”: “AuthenticationError”,

“message”: “Error authenticating with resource”

Troubleshooting:

Consultei algumas logs de IIS e REST no Exchange On-Prem e confirmei que a requisição nem mesmo chegava ao Exchange. Realizando algumas buscas, me deparei com algo que estava faltando no meu ambiente. Provavelmente porque o Hybrid Configuration Wizard não conseguiu realizar a configuração do OAuth, não havia sido criado no Exchange o Authentication Provider do EvoSts:

Esse é um requisito para a Graph API em modo hibrido. Na realidade o Azure AD depende desse Authentication Provider para poder emitir tokens em nome do Exchange On-Premises.

Resolução:

O primeiro ponto é descobrir qual o initial domain do nosso tenant. Para obter essa informação, use o seguinte comando a partir da Shell do Exchange Online:

Get-AcceptedDomain | fl Domainname,InitialDomain

Com o initial domain em mãos, execute o seguinte comando composto com seu initial domain:

New-AuthServer -Name EvoSts -Type AzureAD –AuthMetadataUrl https://login.windows.net/<initial domain>/federationmetadata/2007-06/federationmetadata.xml

Faça então um Get-AuthServer e valide que o novo Authentication Provider foi adicionado com sucesso:

Posteriormente é necessário também adicionar os namespaces usados pelo Exchange no AAD secutiry token service. Execute esses comandos para TODOS os nomes usados, incluindo o de Autodiscover:

$x = get-MSOLServicePrincipal - -AppPrincipalId 00000002-0000-0ff1-ce00-00000000000

$x.ServicePrincipalnames.Add("https://<exchange namespace>/")

Set-MSOLServicePrincipal -AppPrincipalId 00000002-0000-0ff1-ce00-000000000000 -ServicePrincipalNames $x.ServicePrincipalNames

Logo após isso, já foi possível através do Graph Explorer executar métodos HTTP no Exchange On-Premises.

4 comentários sobre “Graph AuthenticationError ao consultar mailbox no Exchange On-Premises

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *