![ADFS - 如何在没有域的情况下发送 sAMAccountName](https://linux22.com/image/757722/ADFS%20-%20%E5%A6%82%E4%BD%95%E5%9C%A8%E6%B2%A1%E6%9C%89%E5%9F%9F%E7%9A%84%E6%83%85%E5%86%B5%E4%B8%8B%E5%8F%91%E9%80%81%20sAMAccountName.png)
我正在使用 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,否则不建议这样做。