Oauth2客户端+用户访问令牌流


Oauth2 client + user access tokens flow

我使用的是Oauth2 php库。我看了这里和这里的医生这是我目前所看到的:

  • 客户端应用程序使用客户端id &amp请求令牌;客户的秘密到client_credential端点
  • 一个令牌返回给客户端应用程序,具有基本作用域
  • 用户从客户端登录
  • 客户端应用程序使用用户id &amp请求一个新的令牌;用户到user_credential端点的密码
  • 客户端应用程序接收一个新的令牌,该令牌具有用户
  • 的新作用域

一切正常。

对我来说唯一没有意义的事情是我必须再次传递客户端id &在进行用户授权时使用客户端机密(grant_type:'password'),否则它不起作用。

{"error":"invalid_client","error_description":"客户端凭证未在标头或正文中找到"}

我的理解是,既然我首先获得了一个客户端令牌,我就不必再次识别客户端。我已经尝试传递令牌而不是客户端id &用户授权的客户端密码,但不允许。什么是合适的授权类型组合呢

一个(单一)客户端要么是public,即它没有与之关联的client_secret,要么是confidential,即它使用client_secret来标识自己。两者不可能同时发生。您可以做的是使用不同的client_id将第二个客户机注册为公共客户机,这样它就不必使用client_secret向授权服务器标识自己。然后,您可以在所需流程的第二部分中使用(单个)客户端应用程序中的第二个client_id