详细接触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!!的主要内容,如果未能解决你的问题,请参考以下文章

Linkedin api oauth2.0 获取用户资料详情

带你全面了解 OAuth2.0

理解Oauth2.0

SSO单点登录之OAuth2.0登录认证

SSO单点登录之OAuth2.0登录认证

带有 OAuth2.0 的 Spring REST 不起作用