方方格子授权码_OAuth2入门(三)——Authorization Code授权模式

本文详细介绍了OAuth2授权中的Authorization Code模式,包括流程解析:用户同意授权后,认证服务器返回授权码,第三方服务通过授权码获取AccessToken。并探讨了授权码模式与简化模式的区别,以及代码实现中的关键接口。
摘要由CSDN通过智能技术生成

1.前言

前面的文章讲到,oauth支持四种授权模式:

  • 简化模式(implicit)

  • 授权码模式(authorization code)

  • 密码模式(resource owner password credentials)

  • 客户端模式(client credentials)

  • 扩展模式(Extension)

这篇来讲讲authorization code授权模式

2.流程

用户使用oauth简化模式进行第三方登录的流程主要如下:

dc8f7308d5cd66980f1be61570d21810.png

ResourceOwner:资源所有者,即为用户User-Agent:浏览器AuthorizationServer:认证服务器,可以理解为用户资源托管方,比如企业微信服务端Client:第三方服务

调用流程为:A) 第三方服务通过构造OAuth2链接(传参为client_id以及redirect_uri),将用户引导到认证服务器的授权页B) 用户登录(假设从前未登录)选择是否同意授权C) 若用户同意授权,则认证服务器将用户重向到第一步指定的重定向URI,同时附上一个授权码。D) 第三方服务收到授权码,带上授权码来源的重定向URI,向认证服务器申请凭证。E) 认证服务器检查授权码和重定向URI的有效性,通过后颁发AccessToken

3.代码实现

授权码模式通常需要进行两次请求从而获取token,第一次请求为/oauth/authorize,以获取授权码,之前在implicit模式介绍过这个接口的源码,主要的区别在于type不同。授权码模式下获取code的url示例如下:

http://${host}/oauth/authorize?response_type=code&client_id=${client_id}&redirect_uri=${redirect_uri}

/oauth/authorize

@RequestMapping(value = "/oauth/authorize")    public ModelAndView authorize(Map<String, Object> model, @RequestParam Map<String, String> parameters,            SessionStatus sessionStatus, Principal pr
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值