"idp" 在 IdentityServer4 中属于什么范围?

What scope does "idp" belong to in IdentityServer4?

我的 MVC 客户端的访问令牌包含一个“idp”声明,而我的简单服务器到服务器客户端的令牌没有。我没有在任何一个客户端上明确请求 idp,那么这个声明来自哪里?我认为它是“openid”的一部分,并且由于默认情况下它对 MVC 客户端可用,因此您不需要请求它,但我找不到任何 documentation/specification 来确认它。顺便说一下,我无法将 openid 作用域添加到我的服务器到服务器客户端,因为当我这样做时出现“无效作用域”错误。我在这里要做的是将“idp”声明也放入我的服务器到服务器客户端的令牌中,但不确定这是否可能。有人能给我指出正确的方向吗?

idp 在 Identityserver 中声明代表外部身份提供者(例如 Google)。这就是为什么当您使用“service_credentials”流从本地 IdP 请求令牌时它没有任何意义。如果您对有关令牌发行者的信息感兴趣,只需使用 iss 声明即可。如果您确定每个令牌中都需要 idp(或任何其他自定义)声明,您可以按照我在 .

中解释的那样使用自定义 ClaimsService

当您使用 client-credentials flow 进行服务器到服务器通信时,没有用户参与,因此 openid 范围有没有目的。因为它的核心目的是要求主题声明(用户ID)。

idp 声明不属于任何范围,通常由 IdentityServer 添加。

为什么需要 idp 声明?您的 API 和客户端都信任共享的 IdentiyServer。