隐含赠与

class oauthlib.oauth2.ImplicitGrant(request_validator=None, **kwargs)[源代码]

Implicit Grant

隐式授权类型用于获取访问令牌(它不支持颁发刷新令牌),并且针对已知操作特定重定向URI的公共客户端进行了优化。这些客户端通常在浏览器中使用脚本语言(例如,脚本语言)实现。

与授权码授权类型不同,在授权码授权类型中,客户端分别发出授权请求和访问令牌请求,而客户端接收作为授权请求结果的访问令牌。

隐式授权类型不包括客户端身份验证,并依赖于资源所有者的存在和重定向URI的注册。由于访问令牌被编码到重定向URI中,因此它可能会向资源所有者和驻留在同一设备上的其他应用程序公开:

+----------+
| Resource |
|  Owner   |
|          |
+----------+
     ^
     |
    (B)
+----|-----+          Client Identifier     +---------------+
|         -+----(A)-- & Redirection URI --->|               |
|  User-   |                                | Authorization |
|  Agent  -|----(B)-- User authenticates -->|     Server    |
|          |                                |               |
|          |<---(C)--- Redirection URI ----<|               |
|          |          with Access Token     +---------------+
|          |            in Fragment
|          |                                +---------------+
|          |----(D)--- Redirection URI ---->|   Web-Hosted  |
|          |          without Fragment      |     Client    |
|          |                                |    Resource   |
|     (F)  |<---(E)------- Script ---------<|               |
|          |                                +---------------+
+-|--------+
  |    |
 (A)  (G) Access Token
  |    |
  ^    v
+---------+
|         |
|  Client |
|         |
+---------+

注意:说明步骤(A)和(B)的行在它们通过用户代理时被分成两部分。

图4:隐式授权流程

图4所示的流程包括以下步骤:

  1. 客户端通过将资源所有者的用户代理定向到授权端点来启动流。客户端包括其客户端标识符、请求的作用域、本地状态和重定向URI,一旦允许(或拒绝)访问,授权服务器将把用户代理发送回该重定向URI。

  2. 授权服务器(通过用户代理)对资源所有者进行身份验证,并确定资源所有者是同意还是拒绝客户端的访问请求。

  3. 假设资源所有者授予访问权限,授权服务器使用前面提供的重定向URI将用户代理重定向回客户端。重定向URI在URI片段中包括访问令牌。

  4. 用户代理遵循重定向指令,向网络托管的客户端资源发出请求(其不包括片段PER [RFC2616] )。用户代理在本地保留片段信息。

  5. 网络托管客户端资源返回能够访问包括由用户代理保留的片段的完整重定向URI的网页(通常是具有嵌入脚本的HTML文档),并提取包含在片段中的访问令牌(和其他参数)。

  6. 用户代理在本地执行由网络托管的客户端资源提供的脚本,该脚本提取访问令牌。

  7. 用户代理将访问令牌传递给客户端。

看见 Section 10.3Section 10.16 用于在使用隐式授权时的重要安全注意事项。

add_token(token, token_handler, request)
参数:
  • token --

  • token_handler -- 令牌处理程序实例,例如oauthlib.oauth2.BearerToken类型。

  • request (oauthlib.common.Request) -- OAuthlib请求。

create_authorization_response(request, token_handler)[源代码]

创建授权响应。

参数:
  • request (oauthlib.common.Request) -- OAuthlib请求。

  • token_handler -- 令牌处理程序实例,例如oauthlib.oauth2.BearerToken类型。

客户端通过使用“app/x-www-form-urlencode”格式将以下参数添加到授权端点URI的查询组件来构造请求URI Appendix B

response_type
必填。对于标准OAuth2隐式流,值必须设置为“Token

或“id_Token”或仅“id_Token”用于OIDC隐式流

client_id

必填。中所述的客户端标识符 Section 2.2

redirect_uri

可选。如中所述 Section 3.1.2

作用域

可选。访问请求的范围,如 Section 3.3

状态

推荐的。客户端用来维护请求和回调之间的状态的不透明值。授权服务器在将用户代理重定向回客户端时包括此值。该参数应用于防止跨站点请求伪造,如中所述 Section 10.12

授权服务器验证该请求以确保所有必需的参数都存在并且有效。授权服务器必须验证它将访问令牌重定向到的重定向URI是否与客户端注册的重定向URI匹配,如中所述 Section 3.1.2

create_token_response(request, token_handler)[源代码]

返回URI片段中嵌入的令牌或错误。

参数:
  • request (oauthlib.common.Request) -- OAuthlib请求。

  • token_handler -- 令牌处理程序实例,例如oauthlib.oauth2.BearerToken类型。

如果资源所有者批准访问请求,则授权服务器发布访问令牌并将其传递给客户端,方法是使用“app/x-www-form-urlencode”格式将以下参数添加到重定向URI的片段组件 Appendix B

access_token

必填。授权服务器颁发的访问令牌。

token_type

必填。如中所述颁发的令牌的类型 Section 7.1 。值不区分大小写。

expires_in

推荐的。访问令牌的生存期(秒)。例如,值“3600”表示访问令牌将在生成响应的一小时后过期。如果省略,授权服务器应通过其他方式提供过期时间或记录缺省值。

作用域

如果与客户端请求的范围相同,则为可选项;否则为必填项。访问令牌的作用域,如 Section 3.3

状态

如果客户端授权请求中存在“STATE”参数,则为必填项。从客户端接收的确切值。

授权服务器不得颁发刷新令牌。

prepare_authorization_response(request, token, headers, body, status)

根据响应模式放置令牌。

基类可以为其授权响应定义默认响应模式,方法是重写 default_response_mode 成员。

参数:
  • request (oauthlib.common.Request) -- OAuthlib请求。

  • token --

  • headers --

  • body --

  • status --

validate_authorization_request(request)[源代码]
参数:

request (oauthlib.common.Request) -- OAuthlib请求。

validate_grant_type(request)
参数:

request (oauthlib.common.Request) -- OAuthlib请求。

validate_scopes(request)
参数:

request (oauthlib.common.Request) -- OAuthlib请求。

validate_token_request(request)[源代码]

检查令牌请求是否有正常错误和致命错误。

参数:

request (oauthlib.common.Request) -- OAuthlib请求。

此方法与AuthorizationCodeGrant中的VALIDATE_AUTHORIZATION_REQUEST非常相似,但在一些细微方面有所不同。

正常错误可能是缺少RESPONSE_TYPE参数,或者客户端试图访问不允许其请求授权的范围。正常错误可以安全地包含在重定向URI中并发送回客户端。

当客户端ID或重定向URI无效或缺失时,会出现致命错误。这些问题必须由提供程序捕获并处理,这超出了OAuthLib的范围,但显示一个描述该问题的错误页面是一个好主意。