我们在ADFS中有一个声明规则,以便将用户的电子邮件地址作为NameID发送: -
c:[Type ==" http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress"] => issue(Type =" http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier",Issuer = c.Issuer,OriginalIssuer = c.OriginalIssuer,Value = c.Value,ValueType = c.ValueType,Properties [" {{ 3}}"] =" urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress");
但是我们需要能够在发送此信息之前检查我们从AD读取的电子邮件地址,如果SMTP域是外部SMTP域,例如@ Microsoft.com,我们需要更改发送到的值是用户的UPN,而不是该用户的电子邮件。
这甚至可能吗?
答案 0 :(得分:0)
不是完整的答案,但方法如下
这假设您在输入工作集中同时具有两种声明类型。这就是你需要'&&'的原因指示。如果没有,更简单的方法是直接读取Active Directory以解决该问题。你不需要'&&'在这种情况下。
https://social.technet.microsoft.com/wiki/contents/articles/4792.understanding-claim-rule-language-in-ad-fs-2-0-higher.aspx是一篇很棒的文章,可以使用声明规则语言进行更复杂的转换。
由于 // Sam(@MrADFS)