Spring Security构建Rest服务-1000-使用SpringSocial开发第三方登录之大白话OAuth协议
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协议的更多相关文章
- Spring Security构建Rest服务-1001-spring social开发第三方登录之spring social基本原理
OAuth协议是一个授权协议,目的是让用户在不将服务提供商的用户名密码交给第三方应用的条件下,让第三方应用可以有权限访问用户存在服务提供商上的资源. 接着上一篇说的,在第三方应用获取到用户资源后,如果 ...
- Spring Security构建Rest服务-1200-SpringSecurity OAuth开发APP认证框架
基于服务器Session的认证方式: 前边说的用户名密码登录.短信登录.第三方登录,都是普通的登录,是基于服务器Session保存用户信息的登录方式.登录信息都是存在服务器的session(服务器的一 ...
- Spring Security构建Rest服务-0102-Spring Social开发第三方登录之qq登录
图一 基于SpringSocial实现qq登录,要走一个OAuth流程,拿到服务提供商qq返回的用户信息. 由上篇介绍的可知,用户信息被封装在了Connection里,所以最终要拿到Connectio ...
- Spring Security构建Rest服务-1300-Spring Security OAuth开发APP认证框架之JWT实现单点登录
基于JWT实现SSO 在淘宝( https://www.taobao.com )上点击登录,已经跳到了 https://login.taobao.com,这是又一个服务器.只要在淘宝登录了,就能直接访 ...
- Spring Security构建Rest服务-1202-Spring Security OAuth开发APP认证框架之重构3种登录方式
SpringSecurityOAuth核心源码解析 蓝色表示接口,绿色表示类 1,TokenEndpoint 整个入口点,相当于一个controller,不同的授权模式获取token的地址都是 /oa ...
- Spring Security构建Rest服务-1201-Spring Security OAuth开发APP认证框架之实现服务提供商
实现服务提供商,就是要实现认证服务器.资源服务器. 现在做的都是app的东西,所以在app项目写代码 认证服务器: 新建 ImoocAuthenticationServerConfig 类,@Ena ...
- Spring Security构建Rest服务-0900-rememberMe记住我
Spring security记住我基本原理: 登录的时候,请求发送给过滤器UsernamePasswordAuthenticationFilter,当该过滤器认证成功后,会调用RememberMeS ...
- Spring Security构建Rest服务-1401-权限表达式
Spring Security 的权限表达式 用法,在自定义的BrowserSecurityConfig extends WebSecurityConfigurerAdapter 配置文件里,每一个a ...
- Spring Security构建Rest服务-1205-Spring Security OAuth开发APP认证框架之Token处理
token处理之二使用JWT替换默认的token JWT(Json Web Token) 特点: 1,自包含:jwt token包含有意义的信息 spring security oauth默认生成的t ...
随机推荐
- python cov()
在PCA中涉及到了方差var和协方差cov,下面详细了解这两个函数的用法.numpy中var和cov函数求法和MATLAB中var和cov函数求法类似. 首先均值,样本方差,样本协方差公式分别为 其中 ...
- 20155216 2016-2017-2 《Java程序设计》第六周学习总结
20155216 2016-2017-2 <Java程序设计>第六周学习总结 教材学习内容总结 流与IO 将数据从来源中取出,可以使用输入串流:将数据写入目的地,可以使用输出串流,串流是有 ...
- Java 窗体居中 通用代码
Toolkit kit = Toolkit.getDefaultToolkit(); // 定义工具包 Dimension screenSize = kit.getScreenSize() ...
- 小强 ROS 机器人教程
首先请您自行依据线标提示将小强接线连接好,完整结构如下两图所示: 小强是属于Turtlebot机器人.它由底盘.主机.Kinect相机(通过USB连接主机)组成,没有显示屏.如果要通过显示器查看主机的 ...
- 20155320 2016-2017-2 《Java程序设计》第7周学习总结
20155320 2016-2017-2 <Java程序设计>第7周学习总结 教材学习内容总结 时间与日期 认识时间与日期 时间的度量 GMT(Greenwich Mean Time)时间 ...
- iOS应用开发最佳实践
<iOS应用开发最佳实践> 基本信息 作者: 王浩 出版社:电子工业出版社 ISBN:9787121207679 上架时间:2013-7-22 出版日期:2013 年8月 开本:16 ...
- mac下能同时安装两个版本的xcode吗
http://www.cocoachina.com/bbs/read.php?tid-288160-page-1.html
- 更改GeoServer的端口号
更改GeoServer的端口号,这一问题在不同的GeoServer版本上的解决办法不禁相同.本文记录GeoServer2.7.6(独立安装)版本更改其端口号的办法. GeoServer默认端口为808 ...
- (转)(WinForm)FormBorderStyle属性
原地址
- C# RS232串口使用
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using Sy ...