Identity Server 4 - 如何定义支持的授权类型等

3
在一个当前的ASP.NET Core项目 (v2.1.6) 中,Identity Server 4 (v2.2.0) 被实现用于用户和API身份验证,并且它的工作效果很好。客户端设置的唯一grant_typeclient-credentials,并且scopes被设置为一些自定义范围,在这些范围内不允许使用offline_access
在访问.well-known/openid-configuration后,发现支持更多的grant_types,即使已禁用offline_access(出于简洁起见缩短)。
{
  "scopes_supported": [
    "custom_scope_1",
    "custom_scope_2",
    "offline_access"
  ],
  "grant_types_supported": [
    "authorization_code",
    "client_credentials",
    "refresh_token",
    "implicit",
    "password"
  ],
}

我查看了IdentityServer4的文档,但没有找到如何设置此选项的线索。我偶然发现了可能是较旧版本的文档,但这似乎不是当前版本的一部分。
在配置期间是否有明确定义支持的授权类型的可能性,这是我错过的吗?或者它是自动生成的,根本无法设置?
1个回答

6
我相信这些都是IdentityServer4支持的,也就是它的能力。
你可以在这里看到它们是如何添加的(第223行);简单来说,它们基于服务器的能力/配置,而不是个别客户端。

您可以使用ClientGrantTypes集合为每个客户端单独配置授权类型。

如果您正在使用内存中的客户端集合,则称其为AllowedGrantTypes


补充说明:由于 .well-known/openid-configuration 是一个开放标准概念,而不是 IdentityServer 的概念,因此您可以在这里看到上述内容的确认。

grant_types_supported

可选。JSON 数组,包含此 OP 支持的 OAuth 2.0 授权类型值列表


好的 - 因此,文档是基于服务器总体支持生成的,无论实际客户端支持什么?如果身份验证成功,则取决于客户端的实际设置(按预期工作)。 - mmr
我会检查第一部分,但肯定第二部分是正确的(尽管显然你只能添加客户端授权类型,这些类型在服务器的能力范围内)。 - sellotape
非常感谢@sellotape!我现在明白它是如何工作的了。授权类型由认证服务器/OP支持,在这种情况下是IDS4,并且如果需要可以通过自定义授权进行扩展-请参阅文档。 - mmr
在服务器级别上限制授权类型是否可行?如果所有客户端都不使用某些授权类型,则在服务器级别禁用它将是有帮助的。 - liang

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接