单点登录 Oauth2认证 详解

1.单点登录的特点是:

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

单点登录 Oauth2认证 详解_第1张图片

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认证的例子,网站使用微信认证的过程:

单点登录 Oauth2认证 详解_第2张图片

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认证 详解_第3张图片

Oauth2包括以下角色:

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

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

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

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

你可能感兴趣的:(java,开发语言)