2 votes

ADFS. Règle de réclamation vraie de tiers nécessaire pour retourner le `domaine \user `

J'ai configuré Claims Provider Trust dans l'ADFS et j'obtiens seulement Email en NameID . Je ne peux pas apporter de modifications à Third party Claims Provider Trust, donc je dois obtenir WindowsAccountName en utilisant l'adresse e-mail, que j'ai reçue dans NameID de l'IDP tiers et en la transférant à Outlook Web Access (sur site).

J'ai constaté que lorsque j'utilise la règle de réclamation suivante, la connexion fonctionne, mais uniquement si le NUP et l'adresse électronique de l'utilisateur correspondent. S'il y a des différences entre eux (par exemple, sAMAccountName=jdoe ; UPN=jdoe@contoso.com ; Email= Jonathan.Doe @contoso.com), la valeur transmise à Exchange provoque une erreur.

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);

Comment puis-je rechercher un utilisateur par le biais de son adresse électronique, et renvoyer son numéro de téléphone ? WindowsAccountName en domain\username format ?

2voto

Tim Points 83

Si quelqu'un rencontre ce problème. Vous avez besoin de deux règles.

Règle #1 : sAMAccountName to temp Ceci indique à l'ADFS de regarder dans ActiveDirectory et de retourner tous les comptes pour lesquels l'UPN ou l'adresse e-mail correspond. La règle stocke ensuite la valeur dans une variable temporaire que nous utiliserons dans la règle suivante.

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(store = "Active Directory", types = ("claims:temp/attribute1"), query = "(&(objectCategory=person)(objectClass=user)(|(userPrincipalName={0})(mail={0})));sAMAccountName;contoso\adfs_service_account", param = c.Value);

NB. Le site contoso\adfs_service_account est important. L'ADFS en a besoin pour détecter automatiquement un contrôleur de domaine. Utilisez N'IMPORTE QUEL compte AD, du moment qu'il s'agit d'un compte réel.

Règle n°2 : temp à WindowsAccountName La règle ci-dessus ne renvoie que le sAMAccountName, pas le domaine. Dans mon cas, je n'avais qu'un seul domaine. En tant que tel, je l'ai codé en dur ci-dessous.

c:[Type == "claims:temp/attribute1"] => issue(Type = "http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname", Issuer = "AD AUTHORITY", OriginalIssuer = "https://contoso.verify.ibm.com/saml/sps/saml20ip/saml20", Value = "contoso\" + c.Value);

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X