ADFS 中的自定义声明规则
Custom claim rule in ADFS
我们的 ADFS 中有一个声明规则,以便将用户电子邮件地址作为 NameID 发送:-
c:[类型 == "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress"]
=>问题(类型=“http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier", Issuer = c.Issuer, OriginalIssuer = c.OriginalIssuer, Value = c.Value, ValueType = c.ValueType, Properties["http://schemas.xmlsoap.org/ws/2005/05/identity/claimproperties/format”]="urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress");
但我们需要能够在发送此信息之前检查我们从 AD 读取的电子邮件地址,如果 SMTP 域是外部 SMTP 域,例如@Microsoft.com,我们需要更改我们发送的值是用户的 UPN,而不是该用户的电子邮件。
这可能吗?
不是完整答案,但方法如下
- 首先通过 RegExMatch 检查使用 'add'(而不是 'issue')生成一个临时声明。
- 接下来使用 EXISTS 指令检查上面带有电子邮件地址的“&&”子句的临时声明类型,然后对 nameID
执行上述问题
- 接下来使用 NOT EXISTS 指令检查上述临时声明类型和带有 UPN 声明类型的“&&”并将 UPN 作为名称 ID 发布
这假定您在输入工作集中有两种声明类型。这就是为什么你需要 '&&' 指令。如果不是,更简单的方法是直接读取 Active Directory 的问题。在这种情况下你不需要'&&'。
https://social.technet.microsoft.com/wiki/contents/articles/4792.understanding-claim-rule-language-in-ad-fs-2-0-higher.aspx 是一篇关于使用声明规则语言进行更复杂转换的好文章。
谢谢
// 山姆 (@MrADFS)
我们的 ADFS 中有一个声明规则,以便将用户电子邮件地址作为 NameID 发送:-
c:[类型 == "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress"] =>问题(类型=“http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier", Issuer = c.Issuer, OriginalIssuer = c.OriginalIssuer, Value = c.Value, ValueType = c.ValueType, Properties["http://schemas.xmlsoap.org/ws/2005/05/identity/claimproperties/format”]="urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress");
但我们需要能够在发送此信息之前检查我们从 AD 读取的电子邮件地址,如果 SMTP 域是外部 SMTP 域,例如@Microsoft.com,我们需要更改我们发送的值是用户的 UPN,而不是该用户的电子邮件。
这可能吗?
不是完整答案,但方法如下
- 首先通过 RegExMatch 检查使用 'add'(而不是 'issue')生成一个临时声明。
- 接下来使用 EXISTS 指令检查上面带有电子邮件地址的“&&”子句的临时声明类型,然后对 nameID 执行上述问题
- 接下来使用 NOT EXISTS 指令检查上述临时声明类型和带有 UPN 声明类型的“&&”并将 UPN 作为名称 ID 发布
这假定您在输入工作集中有两种声明类型。这就是为什么你需要 '&&' 指令。如果不是,更简单的方法是直接读取 Active Directory 的问题。在这种情况下你不需要'&&'。
https://social.technet.microsoft.com/wiki/contents/articles/4792.understanding-claim-rule-language-in-ad-fs-2-0-higher.aspx 是一篇关于使用声明规则语言进行更复杂转换的好文章。
谢谢 // 山姆 (@MrADFS)