Autenticação do ADFS do Office 365 não funciona para domínios filho

4

Uma empresa está usando o Office 365 com autenticação ADFS; O AD Connect é usado para sincronização de diretório, o ADFS é o servidor Windows versão 2012 R2.

A empresa tem vários domínios do Active Directory:

parent1.com
    child1.parent1.com
    child2.parent1.com
    child3.parent1.com
parent2.com
    ...
...

Os domínios raiz são configurados como domínios federados no Office 365 (os nomes de domínio público e de domínio do AD são idênticos); Isso funciona bem, os usuários podem fazer logon no Office 365 usando seu UPN, como [email protected] e sua senha do AD.

Eu preciso adicionar suporte para domínios filho; Assim, adicionei child1.parent1.com ao Office 365 executando o seguinte comando (depois de conectar-se ao Office 365 com uma conta de administrador usando Connect-MsolService ):

New-MsolFederatedDomain -DomainName child1.parent1.com -SupportMultipleDomain

(N.B. Se eu não usasse o parâmetro SupportMultipleDomain , o PowerShell forneceria um erro informando que era necessário).

Depois, adicionei todos os registros DNS necessários, tanto no DNS privado quanto no público; A validação do Office 365 de registros DNS relatou que tudo estava ok.

O domínio filho foi então adicionado ao AD Connect e a sincronização foi realizada; os usuários do domínio filho apareceram no Office 365, com nomes de usuário como [email protected] . Eu lhes atribuí as licenças apropriadas e tentei fazer o login no portal do Office 365.

No entanto, os usuários do domínio filho não conseguem fazer login. eles recebem um erro de "solicitação inválida", com os seguintes detalhes adicionais:

Correlation ID: b1e47d45-b21c-42e9-9758-265804db7171 
Timestamp: 2016-08-10 20:27:48Z 
AADSTS50107: Requested federation realm
object 'http://child1.parent1.com/adfs/services/trust/' does not exist. 

Há obviamente algo errado no lado do ADFS, mas eu não sou especialista nisso e também não fui eu quem o configurou; como posso corrigir isso para que os usuários em domínios filho possam fazer login com êxito no Office 365?

    
por Massimo 10.08.2016 / 22:37

1 resposta

3

O problema é muito pouco documentado ( uma postagem no blog da Technet e alguma documentação para AD do Azure ), mas na verdade existe, e é causado pelo fato de o ADFS não se comportar corretamente em determinadas situações específicas (vários domínios federados de nível superior e ao lançar domínios filhos federados na mistura); A solução envolve a edição de uma expressão regular em uma regra de declaração do ADFS que é usada para criar o IssuerUri associado ao UPN do usuário. Citando o segundo artigo:

So lets say for example that I have bmcontoso.com and then add
corp.bmcontoso.com. This means that the IssuerUri for a user from
corp.bmcontoso.com will need to be http://bmcontoso.com/adfs/services/trust.
However the standard rule implemented above for Azure AD, will generate a
token with an issuer as http://corp.bmcontoso.com/adfs/services/trust
which will not match the domain's required value and authentication will fail.

Para resolver o problema, a terceira regra de declaração no ADFS deve ser editada, indo de

c:[Type == "http://schemas.xmlsoap.org/claims/UPN"] => issue(Type = "http://schemas.microsoft.com/ws/2008/06/identity/claims/issuerid", Value = regexreplace(c.Value, ".+@(?<domain>.+)","http://${domain}/adfs/services/trust/"));

para

c:[Type == "http://schemas.xmlsoap.org/claims/UPN"] => issue(Type = "http://schemas.microsoft.com/ws/2008/06/identity/claims/issuerid", Value = regexreplace(c.Value, "^((.*)([.|@]))?(?<domain>[^.]*[.].*)$", "http://${domain}/adfs/services/trust/"));

No entanto, lembre-se de que isso pode quebrar a compatibilidade com outros cenários, como um domínio federado de terceiro nível real cujo domínio pai não está federado.

    
por 11.08.2016 / 17:03