详细接触Oauth2.0!!
Posted 燕山雷震子
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了详细接触Oauth2.0!!相关的知识,希望对你有一定的参考价值。
近期公司组织技术分享,正在为难从何搞起,忽然发现很多小伙伴对Oauth认证一知半解,正好作为一个切入点,下面听我细细道来。
什么是Oauth
Oaut可以简单理解为一种授权协议,授权方和被授权方遵守此协议去交互的过程,便是Oauth模式。
使用场景
在我们是想登陆一个新奇的app时,因为之前没有注册使用过,所以想尽快登陆后使用,但是传统的认证方式,需要经过注册,想一个未被占用的名字,一个符合校验规则的密码,甚至一些又酸又腐的密码找回问题,有时真的让人想放弃注册使用这款app(emmmmmm....)
这时使用Oauth2.0认证,可以用对用户十分友好便捷的方式登录使用目标app的功能,最常见的处理为在app的登录界面,选择登陆方式,步骤流程大致为,先通过用户授权,然后调用第三方登录,然后第三方服务器返回认证数据。如图
4种模式与实现原理
·授权码模式
此模式最为完整、安全、严谨,流程为:
1)用户访问客户端,客户端将用户的访问导向认证服务器;
2)用户选择是否给予访问的客户端授权;
·授权码简化模式
1)客户端将用户导向认证服务器;
2)用户同意给客户端授权后,认证服务器将用户导向客户端制定的重定向uri,并在uri的hash部分包含访问令牌;
3)浏览器向资源服务器发出请求,其中不包括上一步接受的hash值;
4)资源服务器返回一个网页,其中包含的代码可以获取hash值中令牌;
5)浏览器执行上一步的js提取出令牌;
6)浏览器将令牌发给客户端;
·密码模式
1)用户向客户端提供用户名和密码;
2)客户端将用户名、密码发给认证服务器,向服务器请求令牌;
3)认证服务器确认后,向客户端提供反问令牌;
·客户端模式
1)客户端向认证服务器进行身份认证,并要求访问令牌;
2)认证服务器确认无误后,向客户端提供访问令牌;
以上4种方式均为获取access_token,请求需要添加下列必要参数:
·client_id: 客户端id
·response_type/grant_type: 授权类型
·scope: 申请的权限范围
·redirect_uri: 重定向的uri
·state: 客户端当前状态,可以指定任意值,认证服务会将此值原样返回;
·code: 授权码,一般有效期为10分钟,客户端只能使用该码一次,否则会被拒绝,该码与客户端id和重定向uri一一对应。
以上是关于详细接触Oauth2.0!!的主要内容,如果未能解决你的问题,请参考以下文章