我正在阅读OAuth2规范:
https://www.rfc-editor.org/rfc/rfc6749#section-4.4.2
特别是关于client_credentials授予类型的部分。
如果访问令牌请求是有效和授权的,则 授权服务器发出一个访问令牌,如5.1节所述。 不应包含刷新令牌。如果请求失败了客户端身份验证或无效,授权服务器将返回一个错误响应,如第5.2节所述。
一个成功的回应例子:
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Cache-Control: no-store
Pragma: no-cache
{
"access_token":"2YotnFZFEjr1zCsicMWpAA",
"token_type":"example",
"expires_in":3600,
"example_parameter":"example_value"
}`
我有点困惑,为什么授权服务器可以返回refresh_tokens,用于password授予类型,而不能返回client_credentials。
我猜想这与refresh_token可以交换为access_token这一事实有关,而且由于client_credentials授予类型不需要用户名和密码,如果应用程序密钥和refresh_token被破坏,那么撤销变得更加困难。
发布于 2017-03-31 21:55:52
理解这一点的关键部分是,refresh概念的设计并不是为了刷新您已经拥有的访问令牌。
“刷新令牌”只是一种跳过终端用户干预的方法,如果您的应用程序正在使用最终用户用户名/密码身份验证(即代表特定的最终用户行事),则仍然可以重新获得一个新的访问令牌。(如果我是设计人员,我可能会将“刷新令牌”命名为“旁路用户干预令牌”,因此不需要问当前的问题。)
但是,如果您的应用程序使用客户端凭据进行身份验证,则它是代表自己进行身份验证的,您根本不需要用户干预,服务器也不需要(也不会)为您提供刷新令牌。
https://stackoverflow.com/questions/29233772
复制相似问题