联合环境中的 ADFS 声明配置

ADFS claims configuration in a federated environment

我正在尝试使用 ADFS 身份验证,但我对应该在哪里进行配置有一些疑问。

我公司有一个配置了 Active Directory 的 ADFS。我能够使用 oauth 并从该 AD 验证用户:我得到一个访问令牌和一个 id_token.

我还需要对另一家公司的用户进行身份验证,该公司也有 ADFS。所以,我相信两者之间存在联盟。在我的 ADFS 方面,我们为该 ADFS 创建了一个声明提供者信任。我能够使用 oauth 获取访问令牌。但是,我无法获得 id_token。我也无法在访问令牌中获取一些用户信息(声明)。

我在我的 ADFS 端尝试了所有可能的方法,更具体地说,我对声明提供者信任和应用程序组中的所有声明应用了一个通路。 Hoerver,我只能看到与用户信息无关的其他声明。

所以我的第一个问题是:因为用户是在外部 ADFS 中进行身份验证的,所以这个 ADFS 是否有责任包含所需的声明?如果是,那么这就解释了为什么我自己的 ADFS 上的更改可能只会导致添加标准声明。

这是否也意味着 AnchorClaimType 应该添加到外部 ADFS 而不是我自己的? (参见:)因为我尝试了所有操作,但仍然出现相同的错误。它只适用于我自己的 Active Directory。

谢谢!

我想通了:

在外部 ADFS(将对用户进行身份验证的那个)配置中,有一个依赖方。这必须提供所需的声明。所以我们需要请求外部 ADFS 的管理员来设置它。我要名字和upn声明。

在我公司这边,它为外部 ADFS 创建了一个 Claims Provider Trust 和一个用于 oauth 身份验证的应用程序组。在两者中我们都可以过滤声明,因此在两者中都必须提供所需的声明:name 和 upn。

有了这些声明(或其中一个或与用户信息相关的任何其他声明),用户信息将在令牌中可用。默认情况下,ADFS 不 return 用户 ID 信息。

最后,关于AnchorClaimType声明,这必须在我公司的ADFS中设置。这必须指向名称或 upn 声明。配置此声明后,id_token 将可用。

问候