的基本流程为:
1、用户访问第三方应用。
2、第三方应用请求用户授权。
3、用户同意授权,并返回一个凭证(code)。
4、第三方应用通过第二步的凭证(code)向授权服务器请求授权。
5、授权服务器验证凭证(code)通过后,同意授权,并返回一个资源访问的凭证(Access Token)。
6、第三方应用通过第四步的凭证(Access Token)向资源服务器请求相关资源。
7、资源服务器验证凭证(Access Token)通过后,将第三方应用请求的资源返回。
解释:
在用户授权这一步中,我们将得到一个用户凭证(code),我们的应用可以通过该用户凭证(code)来和授权服务器交换一个资源访问凭证(Access Token)
当用户点击按钮同意授权后,授权服务器将生成一个用户凭证(code),此时授权服务器如何将用户凭证(code)传递给第三方应用呢?
当我们向授权服务器提交应用信息时,通常需要填写一个redirect_uri,当我们引导用户进入授权页面时,也会附带一个redirect_uri的信息(如https://github.com/login/oauth/authorize?client_id=xxx&redirect_uri=http%3A%2F%2Ftianmaying.com%2Foauth%2Fgithub%2Fcallback&state=XXX),当授权服务器验证两个URL一致时,会通知浏览器跳转到redirect_uri,同时,在redirect_uri后附加用户凭证(code)的相关信息,此时,浏览器返回第三方应用同时携带用户凭证(code)的相关信息。授权后访问的redirect_uri如下:
http://tianmaying.com/oauth/github/callback?code=9e3efa6cea739f9aaab2&state=XXX
浏览器端的行为实际上是不安全的,甚至安全凭证的传递都是通过URL直接传递的。但是由于用户凭证(code)不是那么敏感,其他攻击者拿到用户凭证(code)后依然无法获取到相应的用户资源,所以之前的行为是允许的。
要拿到授权服务器的授权,需要以下几个信息:
* client_id 标识第三方应用的id,由授权服务器(Github)在第三方应用提交时颁发给第三方应用
* client_secret 第三方应用和授权服务器之间的安全凭证,由授权服务器(Github)在第三方应用提交时颁发给第三方应用
* code 第一步中返回的用户凭证redirect_uri 第一步生成用户凭证后跳转到第二步时的地址
* state 由第三方应用给出的随机码
我们看到,上述信息还涉及到第三方应用的安全凭证(client_secret),因此要求OAuth要求该请求必须时POST请求,同时,还必须时HTTPS服务,以此保证获取到的验证凭证(Access Token)的安全性。
拿到验证凭证(Access Token)后,剩下的事情就很简单了,资源服务器会提供一系列关于用户资源的API,拿验证凭证(Access Token)访问相应的API即可
相关推荐
#### 一、OAuth2简介 OAuth2是一种广泛使用的授权框架,主要用于客户端应用程序安全地访问用户资源的服务。它通过提供一个简单且标准化的方法来实现授权流程,使得各种应用能够安全地交换API密钥,并在不泄露用户...
#### 二、OAuth2简介与核心价值 **章节1:什么是OAuth2.0以及为什么你应该关心它?** - **定义**:OAuth2.0是一种开放标准协议,用于授权应用程序访问用户在另一个服务上的资源(如数据或服务),而无需直接提供其...
#### 一、Spring Security OAuth2简介 Spring Security OAuth2是Spring Security框架中的一个扩展模块,用于实现OAuth2协议的安全认证与授权功能。它为开发人员提供了一种简单的方式去实现OAuth2协议的支持,使得...
### OAuth2简介 OAuth2是一种安全的授权标准,它允许用户授予第三方应用访问其在特定服务上的数据,而无需共享他们的用户名和密码。这种协议广泛应用于社交媒体登录、API访问控制等领域。 ### Laravel OAuth2 社交...
1. **OAuth2简介** OAuth2 是一种开放标准,它允许用户让第三方应用在不泄露用户密码的情况下,通过用户代理(通常是浏览器)获取授权来访问其私有资源。这个标准定义了四种授权模式:授权码模式、简化模式、密码...
1. **OAuth2 简介**: OAuth2 是一个开放标准,允许用户让第三方应用在无需用户提供用户名和密码的情况下,获取和使用用户的特定资源。它定义了四种角色:资源所有者(Resource Owner)、客户端(Client)、资源...
**OAuth2 简介** OAuth2 是一个开放标准,用于授权第三方应用访问特定资源,如社交媒体账号、云存储服务等。它通过授权码流、隐式流、客户端凭据流和密码凭据流等多种方式实现安全授权。在 Laravel 中,我们可以...
#### OAuth2简介 OAuth2是一个广泛应用于互联网的开放式授权协议,主要用于解决授权问题。与之前的版本相比,OAuth2.0更加注重简单性和安全性,使得第三方应用能够安全地获取到所需的权限而不必直接接触用户的凭据...
OAuth2简介** OAuth2是一种开放标准授权协议,它定义了一种客户端应用程序获取受保护资源的访问权限的方法。其核心思想是通过颁发临时授权令牌而不是直接使用用户名和密码来进行认证。这种方式不仅可以提高安全性...
"Spring Cloud与OAuth2整合简介" Spring Cloud与OAuth2整合简介是指将Spring Cloud框架与OAuth2认证协议进行整合,以实现微服务架构中的身份验证和授权管理。OAuth2是目前最流行的身份验证和授权协议之一,广泛应用...
**OAuth2 简介** OAuth2 是目前广泛使用的授权框架,允许用户授权第三方应用访问其存储在另一服务器上的资源,而无需分享用户名和密码。OAuth2分为四个角色:资源所有者、客户端、资源服务器和授权服务器。在这个...
一、OAuth2简介 OAuth2是一种授权框架,允许第三方应用在用户授权的情况下,访问特定的资源。Facebook提供了一套基于OAuth2的API,允许开发者获取用户的公开信息,甚至包括用户的私人信息(如朋友列表、照片等),...
一、OAuth2简介 OAuth2的主要目标是为第三方应用提供有限的访问权限,用户可以授权第三方应用访问他们存储在特定服务提供商的数据,而无需共享他们的用户名和密码。OAuth2定义了四种授权类型:授权码(Authorization...
#### 一、OAuth2协议简介 OAuth2是一种开放标准授权协议,主要用于客户端应用授权。它不直接关注认证,而是提供了一种安全地授权第三方应用访问用户资源的方式。OAuth2定义了几个主要角色: - **资源所有者**...
**Python制裁(Sanction):超简易OAuth2客户端实现** 在现代互联网开发中,权限管理和身份验证已经成为不可或缺的一部分。OAuth2是一种广泛采用的授权框架,它允许第三方应用在用户许可的情况下访问其私有资源,而...
### OAuth2协议简介 OAuth2 是一个开放标准,允许用户授权第三方应用访问他们存储在特定服务提供商的数据,而无需分享他们的用户名和密码。它通过令牌(tokens)系统确保安全性,使得第三方应用能够获取访问权限,...
**二、OAuth2 协议简介** OAuth2 是一个授权框架,允许第三方应用以用户的名义访问受保护的资源,而无需获取用户的用户名和密码。它通过令牌(access token)进行身份验证和授权,确保了用户数据的安全性。 主要...
OAuth2授权之基于JWT完成单点登录 OAuth2授权是一种industry标准的授权协议,用于对第三方应用程序的访问控制。OAuth2授权协议可以实现单点登录功能,即用户只需登录一次,即可访问多个需要登录的系统。 在本文中...
1. **安装**:通常通过Composer来安装此库,运行 `composer require league/oauth2-server`。 2. **配置**:设置各种参数,如数据库连接、客户端信息、授权类型等。 3. **授权流程**:创建授权端点,处理用户的登录...