ADFS - 如何在没有域的情况下发送 sAMAccountName

ADFS - 如何在没有域的情况下发送 sAMAccountName

我正在使用 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,否则不建议这样做。

相关内容