O365, Outlook e o Modern Authentication
By: Caio Ribeiro César e César Augusto Hara
Com o aumento da utilização do Outlook 2016, mais organizações estão utilizando a funcionalidade de Modern Authentication. O que é o Modern Authentication?
Para entender o Modern Authentication, vamos primeiro explicar quais são os outros métodos de autenticação, também conhecidos como “legacy”, disponíveis para o O365.
Modelo de autenticação utilizado por versões mais antigas de Outlook (2010 + 2013 sem as atualizações necessárias) ou até protocolos como ActiveSync, POP3, IMAP, SMTP.
O Exchange Online é o responsável pela comunicação com o Identity Provider (ADFS). O Outlook em si não faz parte do processo de autenticação, apenas dos resultados do processo. Já discutimos anteriormente neste post, porém vamos revisar de uma maneira mais simples:
• Usuário final faz o request para a utilização de um recurso no Exchange Online (Ol2010);
• Exchange Online faz o pedido de credencial;
• O usuário adiciona a informação para a autenticação (usuário e senha). Estas informações são armazenadas pelo Exchange Online;
• Exchange Online faz o contato com o OrgID (O365). Se a conta é comum/cloud, o usuário é autenticado – caso contrário seguimos com o passo de autenticação ativa e a comunicação é redirecionada para o Identity Provider (ADFS);
• Exchange Online faz contato com o IDP;
• O SAML token é enviado do IDP para o Exchange Online;
• Exchange Online envia o SAML token para o OrgId;
• OrgId retorna o O365 token;
• Exchange Online consome o token e concede acesso para o usuário final.
Modelo mais simples de autenticação, utilizado no OWA e no Portal. Cada passo de autenticação é exposto para o cliente (browser).
• Usuário efetua o acesso para o OWA sem estar logado (importante lembrar que usuários utilizando um cookie persistente com o keep me signed não terão que readicionar as informações de login);
• OWA efetua o redirecionamento para o OrgID (login.microsoftonline.com);
• O usuário adiciona o User Principal Name. Como estamos falando de um ambiente federado, assim que o usuário selecionar a opção de senha, o browser irá redirecionar para a página de acesso “\adfs\ls” da organização;
• Usuário insere as credenciais;
• O Identity Provider retorna o SAML token para o browser e efetua o redirecionamento para o OrgId;
• Browser efetua um POST do Token para o OrgId, que retorna um cookie de autenticação;
• Com o cookie, o browser acessa o OWA.
Por ser um modelo mais simples, o troubleshoot geralmente é feito apenas com traces de Fiddler.
Explicamos para os engenheiros de suporte que o processo em si pode ser explicado com apenas uma imagem:
Brincadeiras a parte, vamos ao último método de autenticação!
O modelo “moderno” de autenticação já é utilizado por muitos de nossos clientes de O365. Também conhecido como “OAuth” ou “ADAL”, utiliza as bibliotecas de autenticação do ADAL (Azure Active Directory Authentication Libraries). Quem lida com o processo de autenticação não é o Exchange Online, e sim o Cliente (Outlook).
Para validar se a sua organização possui o Modern Authentication habilitado, basta executar o procedimento via PowerShell.
Get-OrganizationConfig | fl *oau*
Caso o resultado seja “False”, execute o comando:
Set-OrganizationConfig - OAuth2ClientProfileEnabled $True
Vale ressaltar que as conexões não serão forçadas para Modern Authentication. Se a sua organização ainda possui clientes que utilizam a autenticação Ativa, as comunicações não serão afetadas (iremos apenas aceitar Modern Auth para as versões abaixo).
As versões que suportam este modelo são:
• Outlook 2016 + Outlook 2016 for Mac (15.20);
• Outlook Mobile para IOS/Android;
• PowerShell;
• Outlook 2013, desde que:
a) A versão esteja atualizada. O requerimento mínimo é 15.0.4701, porém sempre recomendamos a última release do produto.
b) O Outlook tenha esta configuração manualmente ativada (hardcoded) no registro:
HKCU\SOFTWARE\Microsoft\Office\15.0\Common\Identity\EnableADAL
REG_DWORD 1
HKCU\SOFTWARE\Microsoft\Office\15.0\Common\Identity\Version
REG_DWORD 1
• Usuário acessa o Outlook, que faz o query autodiscover + conexão para o ExO;
• Exchange Online envia um “401”: token necessário para conexão Outlook;
• Outlook envia um “GET” realm pra o O365, que responde com a informação do STS (Identity Provider);
• Outlook entra em contato com o IDP (sts.domain.com);
• Outlook recebe o prompt de autenticação do IDP;
• A credencial é inserida e enviada ao IDP;
• SAML token enviado do IDP para o Outlook;
• POST do token efetuado do Outlook para o O365;
• Refresh token enviado do O365 para o Outlook;
• Acesso garantido Outlook <> Exchange Online.
Dicas de troubleshooting para Modern Authentication
1) Fiddler
O Fiddler trace ajuda a entender as etapas de autenticação. Geralmente, filtramos para o que ocorre durante ou após o “401”:
x-ms-diagnostics: 4000000;reason="Flighting is not enabled for domain contoso.com.";error_category="oauth_not_available"
trusted_issuers="", error="invalid_token"
2) Credential Manager
Como a autenticação é “trabalhada” pelo Outlook, as credenciais podem ser removidas manualmente via “Control Panel\User Accounts\Credential Manager\Windows Credentials”:
* Os tokens estão localizados em:
HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Common\Identity\Identities
- Anonymous
October 11, 2017
Excelente post. Modern Auth é show!