我使用的是Oauth2 php库。我看了这里和这里的医生这是我目前所看到的:
- 客户端应用程序使用客户端id &请求令牌;客户的秘密到client_credential端点
- 一个令牌返回给客户端应用程序,具有基本作用域
- 用户从客户端登录
- 客户端应用程序使用用户id &请求一个新的令牌;用户到user_credential端点的密码
- 客户端应用程序接收一个新的令牌,该令牌具有用户 的新作用域
一切正常。
对我来说唯一没有意义的事情是我必须再次传递客户端id &在进行用户授权时使用客户端机密(grant_type:'password'),否则它不起作用。
{"error":"invalid_client","error_description":"客户端凭证未在标头或正文中找到"}
我的理解是,既然我首先获得了一个客户端令牌,我就不必再次识别客户端。我已经尝试传递令牌而不是客户端id &用户授权的客户端密码,但不允许。什么是合适的授权类型组合呢
一个(单一)客户端要么是public
,即它没有与之关联的client_secret
,要么是confidential
,即它使用client_secret
来标识自己。两者不可能同时发生。您可以做的是使用不同的client_id
将第二个客户机注册为公共客户机,这样它就不必使用client_secret
向授权服务器标识自己。然后,您可以在所需流程的第二部分中使用(单个)客户端应用程序中的第二个client_id
。