了解 OpenId Connect client_credentials 在身份方面的授予

Jay*_*Jay 5 oauth-2.0 openid-connect

我无法理解 client_credentials 在身份方面的授予。我已使用授权代码流通过 OpenId Connect 保护我的 Web 应用程序。这按预期工作,并且从授权服务器返回正确的访问权限和 ID 令牌。到目前为止,一切都很好。

现在我有一些公共 API,我想让我的客户访问。对此 API 的访问是通过我们提供的不同客户端库完成的。

在许多示例中,该client_credentials流程用于提供CLIENT_IDCLIENT_SECRET来获取访问令牌。根据规范,此流程不涉及最终用户,因此不会返回身份令牌。

现在我遇到了麻烦,因为我不知道来电者的身份。我唯一能说的是访问令牌是有效的,但在实践中这是如何完成的?

您如何知道哪个用户在使用此流程时调用了您的服务?我是否必须保存从 user_account 到 client_id/客户端密钥的映射并在我的 api 端点中查询该映射才能获取用户?我必须根据调用该服务的身份做出一些访问决定。

如果这是真的,当我在该流程中无法获得 id 令牌时,OpendId Connect 会以这种方式为我提供什么好处?使用简单的 Oauth2 client_credentials 流程执行此操作将导致相同的结果。

有人可以给我一些提示吗?

Han*_* Z. 5

client_credentials流程不适用于您想要识别最终用户的场景。事实上,client_credentialsOpenID Connect 中未定义授权类型。您应该按照您的建议依赖授权代码授予。