oAuth2 的授权码授予类型

Posted

技术标签:

【中文标题】oAuth2 的授权码授予类型【英文标题】:Authorization code grant type of oAuth2 【发布时间】:2018-05-26 06:15:37 【问题描述】:

我正在尝试实现 oAuth2(授权代码授予类型)的资源所有者部分。在浏览 oAuth2 规范时,我发现以下有关初始客户端授权请求的文本:

"客户端使用一个 HTTP 重定向响应,或通过其他可用的方式通过 用户代理。"

我对“HTTP 重定向响应”部分有点困惑。谁能解释一下客户端使用 HTTP 重定向响应将资源所有者定向到授权端点的场景。

【问题讨论】:

【参考方案1】:

假设用户(资源所有者)想要通过应用程序(客户端)访问资源(资源服务器)。用户使用 Web 浏览器发送 HTTP 请求以在应用程序上执行操作。无法授权对资源的访问,因为 HTTP 请求的 Authorization Header 中不包含 Access Token。在这种情况下,应用程序会将用户重定向到授权服务器,而不是使用错误消息进行响应。通过向授权服务器提供登录凭据,用户可以发起授权请求。

【讨论】:

资源所有者是角色而不是实体。 OAuth2 中资源所有者(用户)的角色通常是在授权服务器请求上向客户端提供身份验证并批准访问同意。资源所有者(用户)从不通过客户端发出访问请求。 可能我表达得不好,但我不想说明资源所有者提出了访问请求。你显然是对的。 我只是对术语感到困惑。正是您所说的,客户端将资源所有者的用户代理重定向到授权服务器。

以上是关于oAuth2 的授权码授予类型的主要内容,如果未能解决你的问题,请参考以下文章

oauth2-server-php-docs 授权类型

OAuth 2 中隐式授权类型的目的是啥?

如何从单页应用程序实现 OAuth 2.0 授权码授予?

OAuth2(授权代码授予类型)的重定向 URI 中是不是应该存在动态查询参数

OAuth2:JWT授权授予和客户端凭据授权与JWT客户端身份验证之间的区别是什么?

oAuth2.0:为啥需要“授权码”,然后才需要令牌?