OAuth协议简介

  OAuth协议要解决的问题

    OAuth协议中的各种角色

  OAuth协议运行流程

OAuth协议,在网上也看了一些资料,意思就是给你颁发一个临时的通行证,你拿着这个通行证可以访问我的某些资源,不包括密码等关键信息,最常见的就是第三方登录,如qq登录,微信登录,第三方应用可以访问我们的用户名头像等一些基本信息。

在这里举个例子来说明

比如说你有一个应用,微信助手,可以美化你微信上自拍的照片,这对双方都是有利的,可以快速扩展第三方应用的用户量,这个应用如果想要获取到你微信上的照片,就需要微信授权。

常见的就是微信给你账户和密码,你就能获取到微信的自拍照了,但是这是有问题的:

1,应用可以访问用户在微信上的所有的数据

2,用户只有修改密码,才能收回授权

3,密码泄露的可能性大大提高

OAuth协议就是为了解决这样的问题而生的:

1,用户名/密码-->令牌,令牌的权限是有限的,它只能访问你的微信自拍数据

2,令牌是有有效期的

OAuth协议主要角色

Provider:服务提供商,提供令牌。相当于例子中的微信。

Resources Owner:资源所有者,就是用户,用户拥有自拍照资源。

Client:第三方应用,例子中的微信助手。

Authentication Server:认证服务器,认证用户的身份,并产生令牌。

Resource Server:资源服务器,作用1,存放用户资源,就是例子中的自拍数据,;2,验证令牌。 (认证服务器和资源服务器在物理上可以是一台服务器)

OAuth协议运行流程:

1,用户访问第三方应用

2,第三方应用请求用户授权

3,用户同意授权,第三方应用就会访问服务提供商的认证服务器(如访问微信的服务器,告诉他用户已同意访问自拍数据),问他要一个令牌

4,认证服务器看是不是用户真的同意了,如果是,会发一个令牌给第三方应用

5, 第三方应用就拿着令牌去访问资源服务器去申请获取资源

6,资源服务器会验证获取资源请求的令牌,验证通过,会把申请的资源开发给用户

第二步同意授权是关键,OAuth定义了四种授权模式

授权码模式(authentication code):授权码模式是功能最完整,流程最严密的授权模式。互联网所有服务提供商qq微信淘宝百度微博...都是这种

密码模式(resource ownowner password credentials):app用

简化模式(implicit):用得少

客户端模式(client credcredentials):用得少

授权码模式:

1,用户访问客户端

2,如果第三方应用客户端需要用户授权,会将用户导向认证服务器,用户同意授权这个动作会在认证服务器上完成

3,如果用户同意授权,认证服务器会将第三方应用重新导回到第三方应用一个指定的URL,并携带一个授权码(还不是令牌token)

4,第三方应用拿到授权码再去认证服务器申请令牌(在第三方应用的服务端完成,对用户不可见)

5,认证服务器会核对授权码是不是第三步发回去的,如果是,给客户端发放令牌token

因为这个过程中会产生授权码,其他的授权模式没有,所以叫授权码模式。

主要特点:用户同意授权的动作在认证服务器上完成的,认证服务器可以肯定用户授权的真假。

而其他的密码模式、客户端模式同意授权是在第三方应用上完成的,完成以后第三方应用向认证服务器申请令牌的时候带着一些信息说用户同意我了 ,存在的问题就是认证服务器不知道用户是否真的同意授权了,可能是第三方应用伪造的。

授权码模式要求第三方应用必须有一个服务器,有些网站只有静态页,就可以使用简化模式。

Spring Security构建Rest服务-1000-使用SpringSocial开发第三方登录之大白话OAuth协议的更多相关文章

  1. Spring Security构建Rest服务-1001-spring social开发第三方登录之spring social基本原理

    OAuth协议是一个授权协议,目的是让用户在不将服务提供商的用户名密码交给第三方应用的条件下,让第三方应用可以有权限访问用户存在服务提供商上的资源. 接着上一篇说的,在第三方应用获取到用户资源后,如果 ...

  2. Spring Security构建Rest服务-1200-SpringSecurity OAuth开发APP认证框架

    基于服务器Session的认证方式: 前边说的用户名密码登录.短信登录.第三方登录,都是普通的登录,是基于服务器Session保存用户信息的登录方式.登录信息都是存在服务器的session(服务器的一 ...

  3. Spring Security构建Rest服务-0102-Spring Social开发第三方登录之qq登录

    图一 基于SpringSocial实现qq登录,要走一个OAuth流程,拿到服务提供商qq返回的用户信息. 由上篇介绍的可知,用户信息被封装在了Connection里,所以最终要拿到Connectio ...

  4. Spring Security构建Rest服务-1300-Spring Security OAuth开发APP认证框架之JWT实现单点登录

    基于JWT实现SSO 在淘宝( https://www.taobao.com )上点击登录,已经跳到了 https://login.taobao.com,这是又一个服务器.只要在淘宝登录了,就能直接访 ...

  5. Spring Security构建Rest服务-1202-Spring Security OAuth开发APP认证框架之重构3种登录方式

    SpringSecurityOAuth核心源码解析 蓝色表示接口,绿色表示类 1,TokenEndpoint 整个入口点,相当于一个controller,不同的授权模式获取token的地址都是 /oa ...

  6. Spring Security构建Rest服务-1201-Spring Security OAuth开发APP认证框架之实现服务提供商

    实现服务提供商,就是要实现认证服务器.资源服务器. 现在做的都是app的东西,所以在app项目写代码  认证服务器: 新建 ImoocAuthenticationServerConfig 类,@Ena ...

  7. Spring Security构建Rest服务-0900-rememberMe记住我

    Spring security记住我基本原理: 登录的时候,请求发送给过滤器UsernamePasswordAuthenticationFilter,当该过滤器认证成功后,会调用RememberMeS ...

  8. Spring Security构建Rest服务-1401-权限表达式

    Spring Security 的权限表达式 用法,在自定义的BrowserSecurityConfig extends WebSecurityConfigurerAdapter 配置文件里,每一个a ...

  9. Spring Security构建Rest服务-1205-Spring Security OAuth开发APP认证框架之Token处理

    token处理之二使用JWT替换默认的token JWT(Json Web Token) 特点: 1,自包含:jwt token包含有意义的信息 spring security oauth默认生成的t ...

随机推荐

  1. HDU 2546 饭卡 (01背包问题)

    题意:中文的吧,飘过~ 析:学过DP的都应该感觉到是动态规划吧,就是一个01背包问题,不同的是,这个题又加入一些新的条件,就是不满5元不能消费,过了5元即使超了也行(这个学校真不错,都可以预支),最后 ...

  2. obj-c的优缺点

    优点: 1) Cateogies : 类别 2) Posing : 扮演 3) 动态识别 : 编译时与运行时动态识别类型 4) 指标计算 : 指针计算 指针的 +- * / 5) 弹性信息传递 : 某 ...

  3. (KMP)Count the string -- hdu -- 3336

    http://acm.hdu.edu.cn/showproblem.php?pid=3336 Count the string Time Limit: 2000/1000 MS (Java/Other ...

  4. Tomcat服务器(一)

    一.tomcat目录中重要的文件: bin 存放启动和关闭的脚本 conf  存放配置文件 logs 日志文件 webapps 存放部署的项目 work 工作目录 Web应用开发好后,若想供外界访问, ...

  5. const 用法全面总结

    C++中的const关键字的用法非常灵活,而使用const将大大改善程序的健壮性,本人根据各方面查到的资料进行总结如下,期望对朋友们有所帮助. Const 是C++中常用的类型修饰符,常类型是指使用类 ...

  6. Redis键迁移

    Redis键迁移   在使用Redis的过程中,很多时候我们会遇到需要进行键迁移的问题,需要将指定Redis中的指定数据迁移到其他Redis当中,键迁移有三种方法,我们来进行一一介绍. 一.move ...

  7. 在Windows Server 2012 R2域环境中禁用(取消)密码复杂策略

    windows server 2012域环境默认启用密码复杂策略,例如: 至少有六个字符长,包含以下四类字符中的三类字符:英文大写字母(A 到 Z),英文小写字母(a 到 z),10 个基本数字(0 ...

  8. Dalsa线扫相机配置-一台工控机同时连接多个GigE相机

    如图,我强悍的工控机,有六个网口. 实际用的时候连了多台相机,为了偷懒我就把六个网口的地址分别设为192.168.0.1~192.168.0.6,以为相机的IP只要设在192.168.0这个网段然后随 ...

  9. WPF 重写微调自带的样式,ListView、DataGrid、TreeView等所有控件的默认样式

    不知道各位在开发中有没有遇到这样的窘迫,开发一个UI,设计给出的效果图和自带的样式的区别很大,然后有的样式通过属性是修改不了的,比如TreeView的子项TreeViewItem,想完全透明背景色就做 ...

  10. GSS1 - Can you answer these queries I(线段树)

    前言 线段树菜鸡报告,stO ZCDHJ Orz,GSS基本上都切完了. Solution 考虑一下用线段树维护一段区间左边连续的Max,右边的连续Max,中间的连续Max还有总和,发现这些东西可以相 ...