Configurei a confiança do provedor de declarações no ADFS e estou recebendo apenas Email
no NameID
. Não posso fazer alterações na Confiança do Provedor de Declarações de Terceiros, portanto, preciso WindowsAccountName
usar o Endereço de Email que recebi em NameID do IDP de Terceiros e encaminhá-lo para o Outlook Web Access (on-premise).
Descobri que, quando uso a seguinte regra de declaração, a entrada funciona, mas somente se o UPN e o endereço de email do usuário corresponderem. Se houver diferenças entre eles (por exemplo, sAMAccountName=jdoe; [email protected]; Email= Jonathan.Doe @contoso.com), o valor encaminhado ao Exchange causará um erro.
c:[Type == "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier", Properties["http://schemas.xmlsoap.org/ws/2005/05/identity/claimproperties/format"] == "urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified"]
=> issue(Type = "http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname", Issuer = "AD AUTHORITY", OriginalIssuer = c.OriginalIssuer, Value = regexreplace(c.Value, "(?<user>[^\@]+)\@(.+)", "contoso\${user}"), ValueType = c.ValueType);
Como posso procurar um usuário por meio de seu endereço de e-mail e devolvê-lo WindowsAccountName
no domain\username
formato?
Se alguém se deparar com este problema. Você precisa de duas regras.
Regra nº 1: sAMAccountName to temp Isso informa ao ADFS para procurar no ActiveDirectory e retornar quaisquer contas em que o UPN ou o endereço de email correspondam. Em seguida, a regra armazena o valor em uma variável temporária que usaremos na próxima regra.
NB. O
contoso\adfs_service_account
é importante. O ADFS precisa disso para descobrir automaticamente um controlador de domínio. Use QUALQUER conta AD, desde que seja uma conta real.Regra nº 2: temp para WindowsAccountName A regra acima retorna apenas o sAMAccountName, não o domínio. No meu caso eu só tinha um domínio. Como tal, eu codifiquei abaixo.