IT新手之路关于oauth2.0的简单理解

Posted 花粉帮

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IT新手之路关于oauth2.0的简单理解相关的知识,希望对你有一定的参考价值。


【IT新手之路】关于oauth2.0的简单理解





  • oauth2.0 是什么?

oauth2.0 是一个关于授权(authorization)的开放网络标准,在全世界得到广泛应用。




  • oauth2.0 的作用

oauth2.0 主要是解决什么问题呢?目前主要介绍两大使用场景

1.公司内部sso解决方案,分资源服务器,客户端,h5浏览器,认证服务器,公司认证服务器统一登录,每个资源服务器自动登录,oauth2.0只是其中的一部分解决方案。




  • oauth2.0的介绍

OAuth2.0定义了四种授权方式:

1.授权码模式(authorization code)

2.简化模式(implicit)

3.密码模式(resource owner password credentials)

4.客户端模式(client credentials)


1.授权码模式

授权码模式非常常见,例如微信授权码模式,我们工作中经常会碰到获取微信用户信息的需求。
https://open.weixin.qq.com/connect/oauth2/authorize?response_type=code&redirect_uri=**&appid=**&scope=**&state=**

步骤如下:

(1)用户访问资源服务器,后者将前者导向认证服务器;

(3)回调到资源服务器,资源服务器获取code,走codeToToken模式;

(4)拿到token令牌,继续跟认证服务器交互获取userinfo,此时此刻已经获取用户信息。

【IT新手之路】关于oauth2.0的简单理解

2.简化模式

简化模式(implicit grant type),直接在浏览器中向认证服务器申请令牌,跳过了"授权码"这个步骤,令牌对访问者是可见的,且客户端不需要认证。也就是说浏览器上可以直接查看token令牌,常见于跟第三方推广机构合作,合作方推广范围获取我方token令牌

简化模式有两种:

(1)简化版,就是response_type=token&redirect_uri=***,请求认证服务器,认证服务器直接回调redirect_uri,并带上token令牌;

(2)复杂版,回调的时候带上是Hash部分包含了访问令牌,需要请求资源服务器,资源服务器返回一个网页,其中包含的代码可以获取Hash值中的令牌。通过代码提取出真正的令牌。

【IT新手之路】关于oauth2.0的简单理解
3.密码模式

用户向客户端提供自己的用户名和密码。客户端使用这些信息,向"服务商提供商"索要授权。我们常见的app,直接用户密码登录,直接跟认证服务器交互,步骤也很简单:

(1)用户向客户端提供用户名和密码。
(2)客户端将用户名和密码发给认证服务器,向后者请求令牌。
(3)认证服务器确认无误后,向客户端提供访问令牌。
(4)通过访问令牌去资源服务器获取资源信息,(资源服务器拿到用户令牌去认证服务器认证鉴权,成功之后返回用户信息给资源服务器)
【IT新手之路】关于oauth2.0的简单理解

4.客户端模式

在这种模式中,用户直接向客户端注册,客户端以自己的名义要求"服务提供商"提供服务,实际上就是用户将信息交于客户端,客户端自身跟认证服务器交互,请求方式如下:

responsetype=clientcredentials&clientid=##&clientsecret=##&scope=##
Authorization中配置 Username 和Password type 选取Basic Auth
可以获取token令牌,区别就是客户端可以获取用户信息,继而直接去跟认证服务器交互获取token令牌

【IT新手之路】关于oauth2.0的简单理解





以上是关于IT新手之路关于oauth2.0的简单理解的主要内容,如果未能解决你的问题,请参考以下文章

Web 三方登录实现(基于OAuth2.0,包含Github和QQ登录)

理解Oauth2.0

(实用篇)微信网页授权(OAuth2.0) PHP 源码简单实现

IT新手之路Netty学习之旅

OAuth2.0的理解&基础

程序员的自我救赎---3.1:理解Oauth2.0