1.单点登录的特点是:

1、认证系统为独立的系统。
2、各子系统通过Http或其它协议与认证系统通信,完成用户认证。
3、用户身份信息存储在Redis集群。

Java中有很多用户认证的框架都可以实现单点登录:

 1、Apache Shiro. 2、CAS 3、Spring security CAS    

2. Oauth2认证

OAuth(开放授权)是一个开放标准,允许用户授权第三方移动应用访问他们存储在另外的服务提供者上的信息,而不需要将用户名和密码提供给第三方移动应用或分享他们数据的所有内容,OAuth2.0是OAuth协议的延续版本。

2.1 Oauth2认证流程

第三方认证技术方案最主要是解决认证协议的通用标准 问题,因为要实现 跨系统认证,各系统之间要遵循一定的接口协议。 OAUTH协议为用户资源的授权提供了一个安全的、开放而又简易的标准。同时,任何第三方都可以使用OAUTH认证服务,任何服务提供商都可以实现自身的OAUTH认证服务,因而OAUTH是开放的。业界提供了OAUTH的多种实现如PHP、JavaScript,Java,Ruby等各种语言开发包,大大节约了程序员的时间,因而OAUTH是简易的。互联网很多服务如Open API,很多大公司如Google,Yahoo,Microsoft等都提供了OAUTH认证服务,这些都足以说明OAUTH标准逐渐成为开放资源授权的标准。 Oauth协议目前发展到2.0版本,1.0版本过于复杂,2.0版本已得到广泛应用。 参考:oAuth_百度百科 Oauth协议:RFC 6749 - The OAuth 2.0 Authorization Framework 下边分析一个Oauth2认证的例子,网站使用微信认证的过程:

1.客户端请求第三方授权

用户进入登录页面,点击QQ的图标以微信账号登录系统,用户是自己在QQ信息的资源拥有者。

点击“用QQ账号登录”出现一个二维码,此时用户扫描二维码,开始给优就业官网授权。

2.资源拥有者同意给客户端授权

资源拥有者扫描二维码表示资源拥有者同意给客户端授权,QQ会对资源拥有者的身份进行验证, 验证通过后,QQ会询问用户是否给授权优就业官网访问自己的QQ数据,用户点击“确认登录”表示同意授权,QQ认证服务器会 颁发一个授权码,并重定向到优就业官网。

3.客户端获取到授权码,请求认证服务器申请令牌 此过程用户看不到,客户端应用程序请求认证服务器,请求携带授权码。

4.认证服务器向客户端响应令牌 认证服务器验证了客户端请求的授权码,如果合法则给客户端颁发令牌,令牌是客户端访问资源的通行证。 此交互过程用户看不到,当客户端拿到令牌后,用户在优就业官网看到已经登录成功。

5.客户端请求资源服务器的资源 客户端携带令牌访问资源服务器的资源。 优就业官网携带令牌请求访问微信服务器获取用户的基本信息。

6.资源服务器返回受保护资源 资源服务器校验令牌的合法性,如果合法则向用户响应资源信息内容。 注意:资源服务器和认证服务器可以是一个服务也可以分开的服务,如果是分开的服务资源服务器通常要请求认证 服务器来校验令牌的合法性。

Oauth2.0认证流程如下: 引自Oauth2.0协议rfc6749 RFC 6749 - The OAuth 2.0 Authorization Framework

Oauth2包括以下角色:

1、客户端 本身不存储资源,需要通过资源拥有者的授权去请求资源服务器的资源,比如:东易买IOS客户端、东易买Web客户端(浏览器端)、微信客户端等。

2、资源拥有者 通常为用户,也可以是应用程序,即该资源的拥有者。

3、授权服务器(也称认证服务器) 用来对资源拥有的身份进行认证、对访问资源进行授权。客户端要想访问资源需要通过认证服务器由资源拥有者授 权后方可访问。

4、资源服务器 存储资源的服务器,比如,东易买商城用户管理服务器存储了东易买的用户信息等。客户端最终访问资源服务器获取资源信息。

单点登录 Oauth2认证 详解相关推荐

  1. php java 单点登录_php实现多站点共用session实现单点登录的方法详解

    本文实例讲述了php实现多站点共用session实现单点登录的方法.分享给大家供大家参考,具体如下: 最近闲来无事,总结整理下单点登录的问题. 单点登录的基本原理为:客户端共享sesionid,服务器 ...

  2. sso单点登录的原理详解

    单点登录全称Single Sign On(以下简称SSO),是指在多系统应用群中登录一个系统,便可在其他所有系统中得到授权而无需再次登录,包括单点登录与单点注销两部分. 单点登录 相比于单系统登录,s ...

  3. 单点登录CAS协议详解

    剖析协议就像剖析设计模式,有些时候,协议让人摸不着头脑. CAS 的代理模式要相对复杂一些,它引入了一些新的概念,我希望能够在这里描述一下其原理,有助于读者在配置和调试 CAS SSO 有更清晰的思路 ...

  4. 详解比springSecurity和shiro更简单优雅的轻量级Sa-Token框架,比如登录认证,权限认证,单点登录,OAuth2.0,分布式Session会话,微服务网关鉴权

    文章目录 1. 技术选型 2. Sa-Token概述 2.1 简单介绍 2.2 登录认证 2.3 权限认证 3. 功能一览 4. Sa-Token使用 4.1 引入Sa-Token依赖 4.2 Sa- ...

  5. JWT(Json web token)认证详解

    JWT(Json web token)认证详解 什么是JWT Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该to ...

  6. MySQL权限授权认证详解

    MySQL权限授权认证详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.MySQL权限系统介绍 1>.权限系统的作用是授予来自某个主机的某个用户可以查询.插入.修改.删 ...

  7. Spring Boot 整合 shiro 之盐值加密认证详解(六)

    Spring Boot 整合 shiro 之盐值加密认证详解 概述 不加盐认证 加入密码认证核心代码 修改 CustomRealm 新增获取密文的方法 修改 doGetAuthenticationIn ...

  8. umeng(友盟)实现第三方登录和分享详解之登录详解

    一.简单介绍 因为一个平台一个平台进行弄太麻烦,也不够统一,所以领导选择了umeng(我的内心是拒绝的),umeng的文档写的便于查找,但是比较分散,对于比较熟悉的很好用,没接触过umeng的肯定一脸 ...

  9. Spring+ Spring cloud + SSO单点登录应用认证

    之前的文章中有介绍spring cloud sso集成的方案,也做过spring + jwt + redis的解决方案,不同系统的无缝隙集成,统一的sso单点登录界面的管理.每个应用集成的权限认证,白 ...

  10. PMP、IPMP、ITPMP、CPMP详解(项目管理认证详解)

    PMP.IPMP.ITPMP.CPMP详解(项目管理认证详解) 多朋友会问相关认证考试的区别和认证体系,现就这一问题专门做讲解,希望大家能对照选取自己的认证考试.其实在我的博客里也有类似的区别对照表, ...

最新文章

  1. 银行的双重生物识别实验,是双重麻烦还是双重安全?
  2. sql 存储过程学习
  3. python爬虫框架排行榜-8个最高效的Python爬虫框架,你用过几个?
  4. 本案例通过ArrayList集合来显示Collection接口中的共性函数
  5. 中求和符号上下标_涨电脑知识:如何在word中编写复杂的公式,写论文必备技能...
  6. 【研究方向是SDN该怎么做?】软件定义网络(SDN)的安全挑战和机遇
  7. oracle监听器无法启动,提示“错误1067:进程意外终止”
  8. 论文阅读 || 语义分割系列 —— deeplabv1 详解
  9. hr标签和注释的总结
  10. 【OJ每日一练】1021 - 细菌个数
  11. 全国天气预报信息数据接口 API
  12. 如何去除Discuz标题栏中的Powered by Discuz!
  13. python编程语言可以做游戏吗_python合不合适用来写游戏
  14. 你被京东“坑”了多少钱?
  15. Phoenix FD(火凤凰全能流体动力学3Dmax插件)
  16. 港科夜闻|香港科大成立亚洲首个跨国人工智能芯片设计研发联盟
  17. git 免用户名密码操作
  18. PyCharm新建脚本开头模板设置
  19. TSearchRec
  20. 施努卡:3d机器视觉检测系统 3d视觉检测应用行业

热门文章

  1. 软件工程师找不到工作的四个原因
  2. 使用fusion app制作b站app
  3. PLUPLOAD插件 ━━ 上传总结(分片上传,php后端处理)
  4. 中医药天池大数据竞赛——中医文献问题生成挑战(三)
  5. 参加天池大数据竞赛是怎样一种体验?
  6. OSI七层协议模型与记忆口诀
  7. 【Excel高效工作1】5分钟,从Excel中批量将联系人信息导入手机电话簿
  8. 软件测试用例设计包括哪些类型?
  9. 计算机英文参考文献近四年,英文参考文献标准格式
  10. 大文件上传插件webupload插件