Graph AuthenticationError ao consultar mailbox no Exchange On-Premises
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.
Show Denis.
Valeu Mada, abraço queridao!!
Show! Isso que é Troubleshooting…
Valeeu meu querido!!