`
wusuoya
  • 浏览: 637731 次
  • 性别: Icon_minigender_2
  • 来自: 成都
社区版块
存档分类
最新评论

OAuth 2.0 工作流程

    博客分类:
  • SSO
 
阅读更多

原文链接:http://www-01.ibm.com/support/knowledgecenter/SSELE6_8.0.0.3/com.ibm.ammob.doc_8.0.0.3/config/concept/con_oauth20_workflow.html%23con_oauth20_workflow?lang=zh

两种认证模式区别见:http://stackoverflow.com/questions/7522831/what-is-the-purpose-of-the-implicit-grant-authorization-type-in-oauth-2

OAuth 2.0 工作流程

IBM Security Access Manager 中的 OAuth 2.0 支持使 OAuth 客户机能够通过四种不同的方式获取对受保护资源的访问权。

OAuth 2.0 工作流程

Security Access Manager for Mobile 支持下列 OAuth 2.0 工作流程。

授权代码流程(适用于有服务器端的应用)

授权代码授予类型适用于那些向授权服务器进行认证时可以对其客户机凭证进行保密的 OAuth 客户机。例如,在安全服务器上实现的客户机。作为基于重定向的流程,OAuth 客户机必须能够与资源所有者的用户代理进行交互。它还必须能够通过重定向接收来自授权服务器的传入请求。

授权代码工作流程图包括下列步骤:

  1. OAuth 客户机会在将资源所有者的用户代理定向到授权端点时启动流程。OAuth 客户机包括其客户机标识、所请求的作用域、本地状态以及重定向 URI。在准予或拒绝访问之后,授权服务器会将用户代理发回到重定向 URI。
  2. 授权服务器通过用户代理对资源所有者进行认证,并确定资源所有者是准予还是拒绝访问请求。
  3. 如果资源所有者准予访问,那么 OAuth 客户机将使用先前提供的重定向 URI 将用户代理重定向回 OAuth 客户机。重定向 URI 包括授权代码以及 OAuth 客户机先前提供的所有本地状态。
  4. OAuth 客户机通过令牌端点从授权服务器请求访问令牌。OAuth 客户机使用其客户机凭证进行认证,并包括上一步中接收到的授权代码。OAuth 客户机还提供了用于获取授权代码以进行验证的重定向 URI。
  5. 授权服务器验证客户机凭证和授权代码。此服务器还将确保接收到的重定向 URI 与步骤 3 中用于重定向客户机的 URI 相匹配。如果有效,那么授权服务器将使用访问令牌进行回应。

授权服务器可以是资源服务器,也可以是另一实体。单个授权服务器可以发放多个资源服务器接受的访问令牌。

使用刷新令牌的授权代码流程

使用刷新令牌的授权代码工作流程图包括下列步骤:

  1. OAuth 客户机通过使用其客户机凭证向授权服务器进行认证并出示权限授予来请求访问令牌。
  2. 授权服务器验证客户机凭证和权限授予。如果有效,那么授权服务器将发放访问令牌和刷新令牌。
  3. OAuth 客户机通过出示访问令牌向资源服务器发出访问受保护资源的请求。
  4. 资源服务器验证访问令牌。如果访问令牌有效,那么资源所有者将为该请求提供服务。
  5. 重复步骤 3 和 4,直到访问令牌到期。如果 OAuth 客户机知道访问令牌已到期,请跳至步骤 7。否则,OAuth 客户机将发出访问另一个受保护资源的请求。
  6. 如果访问令牌无效,那么资源服务器将返回错误。
  7. OAuth 客户机通过使用其客户机凭证向授权服务器进行认证并出示刷新令牌来请求新的访问令牌。
  8. 授权服务器验证客户机凭证和刷新令牌,并且在这些凭证和令牌有效的情况下发放新的访问令牌和新的刷新令牌。

隐式授予流程

隐式授予类型适用于那些无法对其用于向授权服务器认证的客户机凭证进行保密的客户机。例如用户代理中的客户机应用程序,这些应用程序通常使用 JavaScript 之类的脚本语言在浏览器中进行实现。

作为基于重定向的流程,OAuth 客户机必须能够与资源所有者的用户代理(通常是 Web 浏览器)进行交互。OAuth 客户机还必须能够通过重定向接收来自授权服务器的传入请求。

隐式授予工作流程图包含下列步骤:

  1. OAuth 客户机通过将资源所有者的用户代理定向到授权端点来启动流程。OAuth 客户机包括其客户机标识、所请求的作用域、本地状态以及重定向 URI。在准予或拒绝访问之后,授权服务器会将用户代理发回到重定向 URI。
  2. 授权服务器通过用户代理对资源所有者进行认证,并确定资源所有者是准予还是拒绝访问请求。
  3. 如果资源所有者准予访问,那么授权服务器将使用先前提供的重定向 URI 将用户代理重定向回客户机。重定向 URI 将访问令牌包括在 URI 片段中。
  4. 用户代理通过向 Web 服务器发出不包含该片段的请求来按重定向指示信息进行操作。用户代理将在本地保留片段信息。
  5. Web 服务器返回一个 Web 页面,此页面通常是包含嵌入式脚本的 HTML 文档。此 Web 页面将访问完全重定向 URI,其中包括用户代理所保留的片段。它还可以抽取该片段中包含的访问令牌及其他参数。
  6. 用户代理在本地运行 Web 服务器提供的脚本,这将抽取访问令牌并将其传递到客户机。

资源所有者密码凭证流程

资源所有者密码凭证授予类型适用于资源所有者与客户机之间具有信任关系的情况。例如,资源所有者可以是 OAuth 客户机的计算机操作系统,也可以是具有高级别特权的应用程序。

只有当 OAuth 客户机已获取资源所有者的凭证时,您才能使用此授予类型。此授予类型还可以通过将存储的凭证转换为访问令牌,对使用直接认证方案的现有客户机进行迁移。

资源所有者密码凭证工作流程图包括下列步骤:

  1. 资源所有者为客户机提供其用户名和密码。
  2. OAuth 客户机通过令牌端点从授权服务器请求访问令牌。OAuth 客户机使用其客户机凭证进行认证,并包括从资源所有者接收到的凭证。
  3. 在验证资源所有者凭证和客户机凭证之后,授权服务器发放访问令牌和(可选)刷新令牌。

客户机凭证流程

当 OAuth 客户机仅使用其客户机凭证请求访问令牌时,将使用客户机凭证流程。此流程适用于下列其中一种情况:

  • OAuth 客户机请求在其控制下访问受保护资源。
  • OAuth 客户机请求访问其他受保护资源,而该资源的授权先前已通过授权服务器进行安排。

客户机凭证工作流程图包括下列步骤:

  1. OAuth 客户机通过使用其客户机凭证进行认证来从令牌端点请求访问令牌。
  2. 在验证客户机凭证之后,授权服务器发放访问令牌。

用户代理在Authorization Code下为web server端服务,在Implicit_Grant下可以为浏览器

分享到:
评论

相关推荐

    完整Oauth 2.0实现实例

    在本文中,我们将深入探讨 OAuth 2.0 的核心概念,并结合 Java 实现来理解其工作原理。 OAuth 2.0 主要分为四个角色:资源所有者(Resource Owner)、客户端(Client)、授权服务器(Authorization Server)和资源...

    cas3.5.0集成oauth2.0协议

    3. **测试用例**:可能包含了一些自动化测试脚本,用来验证OAuth2.0集成是否正常工作。 4. **文档**:解释了如何部署和运行示例,以及如何调整配置以适应你的具体需求。 要充分利用这个示例,你需要根据自己的环境...

    微信oauth2.0授权

    在本文中,我们将详细探讨微信OAuth2.0的原理、实现流程以及如何在实际项目中应用。 一、OAuth2.0概述 OAuth2.0是一个授权框架,允许第三方应用在用户许可的情况下访问其存储在特定服务提供商(如微信)上的资源。...

    webapi基于Owin中间件的oauth2.0身份认证

    **OAuth2.0简介** OAuth2.0是一种授权框架,广泛应用于Web API的身份验证和授权。...OAuth2.0的核心是将认证和...在实践中,理解OAuth2.0的工作流程和Owin中间件的用法是至关重要的,这有助于构建健壮、安全的Web服务。

    OAuth2.0协议原理与实现

    OAuth2.0协议的核心在于实现了一个安全的三方授权流程,允许第三方应用在获取用户明确授权的情况下访问用户存储在资源服务器上的受保护资源。 #### 二、OAuth2.0的应用场景——第三方登录 在日常生活中,我们经常...

    基于Django2.1.2的OAuth2.0授权登录

    OAuth2.0的核心是授权流程,包括四个主要角色:资源所有者(用户)、客户端(第三方应用)、资源服务器(用户数据所在的服务器)和授权服务器(处理授权请求的服务器)。流程通常包括授权码获取、访问令牌获取和...

    Oauth2.0 协议 服务端 客户端 thinkphp5.0

    OAuth2.0是一种广泛使用的开放授权协议,它允许第三方应用在用户无需透露其登录凭证的情况下,获取有限的访问权限去...在这个小demo中,我们可以学习到如何在实际项目中应用OAuth2.0,提高应用程序的健壮性和安全性。

    java实现oauth2.0服务端+客户端(含JWT)

    OAuth 2.0 是一个授权框架,用于安全地允许第三方应用访问用户存储在另一服务上的资源,而无需共享用户凭证。...通过这个项目,开发者可以深入理解OAuth 2.0的工作原理,并掌握如何在Java环境中安全地实现这一标准。

    Jwt.zip_jwt_oauth2.0_oauth2.0 加解密_php解密工具

    使用这个库,你可以轻松地在 OAuth 2.0 流程中生成 JWT 访问令牌,并在接收请求时验证它们。 从提供的压缩包文件名 "Jwt.php" 来看,这可能是一个 PHP 类或函数库,用于处理 JWT 相关的操作,包括但不限于创建、...

    OAuth2.0最简向导.pdf

    OAuth 2.0的最简向导将帮助开发者理解这一授权流程,从而能够使应用程序安全地与资源服务器进行通信。 在OAuth 2.0的授权过程中,存在几个核心概念: 1. **资源所有者**:通常指的是用户,拥有对受保护资源的控制...

    oauth2.0第三方 qq、sina、baidu、renren、osc、豆瓣 等,登陆的简易封装!

    1. **OAuth2.0工作流程**: - **授权请求**:用户访问应用时,如果需要通过第三方账户登录,应用会重定向到第三方平台的授权页面。 - **用户授权**:用户在第三方平台授权应用访问其部分信息。 - **授权码获取**...

    OAuth2.0授权系统实现单点登录

    OAuth2.0的核心概念包括四个主要角色:资源所有者(Resource Owner)、客户端(Client)、授权服务器(Authorization Server)和资源服务器(Resource Server)。资源所有者是拥有数据的用户,客户端是需要访问这些...

    springboot OAuth2.0-demo

    通过分析和运行这个项目,你可以深入理解OAuth2.0的工作原理及其在Spring Boot中的实现。同时,也可以作为模板,为自己的项目添加OAuth2.0认证功能。在实际开发中,还可以考虑添加刷新令牌功能,以及更复杂的权限...

    OAuth2.0 使用到的jar包

    这些jar包包含了处理OAuth2.0流程所需的核心类、接口和方法。 在Java开发中,OAuth2.0的实现主要涉及到以下几个关键组件: 1. **Authorization Server(授权服务器)**:这是核心组件,负责验证用户身份并授予访问...

    springboot集成oauth2.0

    SpringBoot集成OAuth2.0是将流行的OAuth2.0安全框架与SpringBoot应用程序相结合的过程,以便为API和Web应用提供安全的访问控制。OAuth2.0是一个授权框架,允许第三方应用在用户授权的情况下访问其受保护的资源,而...

    Java的oauth2.0 服务端与客户端的实现(源码)

    通过理解OAuth 2.0的授权流程和关键概念,以及掌握Spring Security OAuth2的配置方法,开发者可以创建安全且易于扩展的API访问控制系统。在`oauthserver`和`oauthclient01`这两个Maven项目中,你可以看到实际的代码...

    spring security + oauth 2.0 实现单点登录、认证授权

    Spring Security和OAuth 2.0是两个在Web应用安全领域广泛应用的框架,它们结合使用可以构建强大的单点登录(SSO)和认证授权系统。在这个系统中,`xp-sso-server`代表了认证服务器,而`xp-sso-client-a`和`xp-sso-...

    Spring Security OAuth2.0学习笔记.zip

    Spring Security OAuth2.0学习笔记 什么是认证、授权、会话。 Java Servlet为支持http会话做了哪些事儿。 基于session认证机制的运作流程。 基于token认证机制的运作流程。 理解Spring Security的工作原理,Spring ...

Global site tag (gtag.js) - Google Analytics