我正在使用 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\\", ""));
不幸的是,它不起作用。
有人知道我该如何解决吗?谢谢!
您可以在没有自定义规则的情况下实现此目的,方法是从模板创建规则
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,否则不推荐。