Oauth 2.0 了解OpenId Connect客户端的身份认证授予

Oauth 2.0 了解OpenId Connect客户端的身份认证授予,oauth-2.0,openid-connect,Oauth 2.0,Openid Connect,我在理解客户的身份方面有困难。我已使用授权代码流使用OpenId Connect保护我的web应用程序。这将按预期工作,并从授权服务器返回正确的访问和id令牌。到目前为止还不错 现在我有了一些公共API,我想让我的客户能够访问。通过我们提供的不同客户端库访问此API 在许多示例中,client\u凭证流用于提供client\u ID和client\u SECRET以获取访问令牌。根据规范,此流程不涉及最终用户,因此不会返回任何身份令牌 现在我有麻烦了,因为我不知道打电话的人的身份。我唯一能说的是

我在理解客户的身份方面有困难。我已使用授权代码流使用OpenId Connect保护我的web应用程序。这将按预期工作,并从授权服务器返回正确的访问和id令牌。到目前为止还不错

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

在许多示例中,
client\u凭证
流用于提供client\u IDclient\u SECRET以获取访问令牌。根据规范,此流程不涉及最终用户,因此不会返回任何身份令牌

现在我有麻烦了,因为我不知道打电话的人的身份。我唯一能说的是访问令牌是有效的,但在实践中如何做到这一点

使用此流时,您如何知道哪个用户调用了您的服务?我是否必须保存从用户\帐户到客户\ id/客户机密的映射,并在api端点中查询该映射以获取用户?我必须根据呼叫服务的身份做出一些访问决定

如果这是真的,那么当我无法在该流中获得id令牌时,OpendId Connect以这种方式为我提供了什么好处?使用简单的Oauth2客户端\u凭证流执行此操作将导致相同的结果


有人能给我一些提示吗?

客户端凭据流不适用于您想要识别最终用户的场景。事实上,
client\u凭证
grant类型在OpenID Connect中未定义。您应该像您建议的那样依赖授权码授予。

但这是否意味着我的客户在没有与用户代理交互之前永远无法访问我的API?@Jay客户端和API之间的交互不需要OpenID Connect。在这种情况下,OAuth2就足够了。我如何知道谁在调用我的API?例如,当我没有任何类型的身份信息时,是哪个客户?如上所述,当您想要(可靠地)识别最终用户时,您不能使用
client\u凭证