OAuth2最经典的Authorization Code模式

本文详细解析OAuth2.0中的Authorization Code模式,阐述了Resource Owner、User-Agent、Authorization Server及Client四方如何协作,实现用户资源的安全授权。特别介绍了用户通过授权页同意后,授权码如何生成并用于换取AccessToken的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在于允许用户在不告知第三方自己的帐号密码情况下,通过授权方式,让第三方服务可以获取自己的资源信息。
详细的协议介绍,开发者可以参考RFC 6749。

下面简单说明OAuth2中最经典的Authorization Code模式,流程如下:

在这里插入图片描述

流程图中,包含四个角色。

ResourceOwner为资源所有者,即为用户
User-Agent为浏览器
AuthorizationServer为认证服务器,可以理解为用户资源托管方,比如企业微信服务端
Client为第三方服务
调用流程为:
A) 用户访问第三方服务,第三方服务通过构造OAuth2链接(参数包括当前第三方服务的身份ID,以及重定向URI),将用户引导到认证服务器的授权页
B) 用户选择是否同意授权
C) 若用户同意授权,则认证服务器将用户重向到第一步指定的重定向URI,同时附上一个授权码。
D) 第三方服务收到授权码,带上授权码来源的重定向URI,向认证服务器申请凭证。
E) 认证服务器检查授权码和重定向URI的有效性,通过后颁发AccessToken(调用凭证)

D)与E)的调用为后台调用,不通过浏览器进行

好的,下面是一个基本的单点登录实例: 1. 用户访问客户端应用程序,并选择通过单点登录进行身份验证。 2. 客户端应用程序将用户重定向到认证服务器的授权端点,以请求授权。 3. 用户在认证服务器上进行身份验证,然后确认授权请求。 4. 认证服务器将用户重定向回客户端应用程序,并提供一个授权代码。 5. 客户端应用程序将授权代码发送到认证服务器的令牌端点,以请求访问令牌。 6. 认证服务器向客户端应用程序提供访问令牌和刷新令牌。 下面是一个简单的示例: 1. 客户端应用程序向认证服务器的 /authorize 端点发出 GET 请求,请求授权。 ``` GET /authorize? response_type=code& client_id=CLIENT_ID& redirect_uri=REDIRECT_URI& scope=openid%20profile%20email& state=STATE ``` 2. 认证服务器要求用户进行身份验证,通常是通过用户名和密码进行身份验证。 3. 一旦用户进行了身份验证,认证服务器会询问用户是否同意客户端应用程序的授权请求。如果用户同意,认证服务器将生成一个授权代码并将其返回给客户端应用程序。 4. 客户端应用程序使用授权代码向认证服务器的 /token 端点发送 POST 请求,请求访问令牌和刷新令牌。 ``` POST /token HTTP/1.1 Host: authorization-server.com Content-Type: application/x-www-form-urlencoded grant_type=authorization_code& code=AUTHORIZATION_CODE_HERE& redirect_uri=REDIRECT_URI& client_id=CLIENT_ID& client_secret=CLIENT_SECRET ``` 5. 认证服务器将访问令牌和刷新令牌返回给客户端应用程序。客户端应用程序可以使用访问令牌来访问受保护的资源,如果访问令牌过期,则可以使用刷新令牌来获取新的访问令牌。 以上就是一个简单的基于OAuth2的单点登录实例,其中包含了授权端点和令牌端点。授权端点用于请求授权,令牌端点用于获取访问令牌和刷新令牌。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值