我正在使用 ADFS,我需要发送 sAMAccountName。
当前使用“转换传入声明”规则:传入声明类型:Windows 帐户名称传出声明类型:名称 ID 传出名称 ID 格式:电子邮件(我知道格式实际上是错误的,但这是提供商想要的格式并且它可以工作)
不幸的是,发送的用户名包含域前缀,例如“域\用户名”。我该如何去掉“域”?
我尝试通过以下方式进行转换
c:[Type == "http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname"]
=> issue(Type = "sswindowsaccountname", Value = RegexReplace(c.Value, "^Domain\\", ""));
不幸的是,它不起作用。
有人知道我该如何解决这个问题吗?谢谢!
答案1
您可以通过从模板创建规则Send LDAP Attributes as Claims
,然后像之前一样转换该声明来实现这一点,而无需自定义规则。
规则 1:Send LDAP Attributes as Claims
属性存储:Active Directory
映射 1 LDAP 属性:SAM-Account-Name
映射 1 传出声明类型:(samaccountname
选择您喜欢的名称)
规则 2:Transform an Incoming Claim
传入声明类型:(samaccountname
使用您在规则 1 中选择的名称)
传出声明类型:(Email Address
不知道确切的英文措辞)
选项:Pass through all claim values
由于向导的构建方式,ADFS 还将发送规则 1 中的中间声明,但这不应该成为问题。如果您创建自定义规则,则可以省略添加该声明,但这需要更深入的语法知识并增加复杂性。除非您每周处理 SAML,否则不建议这样做。