通过 SamAccountName 名称 ID 将 AD FS 3.0 连接到 Shibboleth

Connect AD FS 3.0 to Shibboleth via SamAccountName Name ID

我需要将 AD FS 3.0 身份提供商 (idP) 连接到不受我控制的 Shibboleth 服务提供商/依赖方。不幸的是,AD FS 和 Shibboleth 对 claims/attributes.

使用的格式并不完全相同

网络上有很多关于此的信息,并且需要两条规则(一条从 Active Directory 检索值,一条转换它以匹配 Shibboleth 的预期),但其中大部分是为 AD FS 2.0 编写的或使用电子邮件地址作为名称 ID(为此我真的需要 SamAccountName)。

如何让我的 AD FS idP 使用 Shibboleth 将接受的 windows-account-name 生成声明?

我终于在这里找到了答案:

https://cccnext.jira.com/wiki/spaces/CSF/pages/147817839/Attributes+for+the+Proxy+AD+FS

link 列出了一些 Active Directory 字段的自定义规则对,包括 SamAccountName / windows-account-name。

我使用的规则是这样的:

@Rulename="Get sAMAaccountName"

c:[Type == "http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname", Issuer == "AD AUTHORITY"]
 => add(store = "Active Directory", types = ("urn:oid:1.2.840.113556.1.4.221"), query = ";sAMAccountName;{0}", param = c.Value);

@Rulename="Convert sAMAccountName / uid xml"

c:[Type == "urn:oid:1.2.840.113556.1.4.221"]
 => issue(Type = "urn:oid:0.9.2342.19200300.100.1.1", Value = c.Value, Properties["http://schemas.xmlsoap.org/ws/2005/05/identity/claimproperties/attributename"] = "urn:oasis:names:tc:SAML:2.0:attrname-format:uri");

这些已作为 PowerShell 脚本的一部分包含在内,但您可以通过添加自定义声明规则通过 AD FS 界面添加它们。

这可能仍需要在 Shibboleth 端进行更改。在我走到这一步之前,另一端的服务技术人员报告说看到了被排除的属性,并进行了更改以允许该属性。然而,那是一套不同的规则。我不知道这套规则是否利用了这一变化。