- 参考
登录那些事儿 http://cnodejs.org/topic/5671441a1d2912ce2a35aaa1
基于OAuth2.0的单点登录系统 - 豆丁网 http://www.docin.com/p-935500768.html
统一用户认证和单点登录解决方案_百度文库 http://wenku.baidu.com/link?url=TOS9NqZ9GMWZMSh2t-bCABG7ylM0k_eSj-Y4IGq7LUWJwPMGTrXfKLgO6CEtjXEpjCyt_m9MBFV-sRiq-XqLwK3Xbui8W0bKAI9x14rW2J7
- 判断用户是否登录
- 方法一:filter
Web.xml
<filter>
<filter-name>SessionFilter</filter-name>
<filter-class>net.zontin.ynsignature.filter.SessionFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>SessionFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
SessionFilter.java
在doFilter方法中:加入session值的判断
完整例子参见:http://blog.csdn.net/judge0531/article/details/1547581
-
- 方法二:在每个入口对session中的变量进行判断
- 方法三:用session监听是否可以呢?
- 单点登录
单点登录就是网络上的“通行证”,通过登录某一站点,可访问其它裙带站点。通行证是业务上的称呼。
英文是SSO,全称Single Sign On。
个人认为单点登录是一个需求或是目标,其实现方法根据当前系统情况、附加要求的不同,有不同的实现方法。
-
- Portal
Portal:中文意思是门户,是广义的交互平台的概念,可以包含:以内容展示为主的WEB网站,也包括以CALL CENTER为代表的接入,还包含WAP的接入等。
-
- OpenID
- CAS
CAS组成:
CAS server:需要独立部署的web应用。
CAS client:各个web应用系统,cas支持多种语言的web应用,包括 Java, .Net, PHP, Perl, Apache, uPortal, Ruby 等。
Cas的认证时序图:
-
- Oauth
包括:开放授权平台(提供Oauth授权服务,如腾讯微博开放平台)、应用(某个使用开放授权平台的网站,通常称为第三方)、用户。
典型示意图:
Oauth提供了开放授权的协议和标准。类似于API,本身并未提供实现。
- 单点登录(服务端)
JSON Web Token (JWT) http://self-issued.info/docs/draft-ietf-oauth-json-web-token.html
- josn web token
八幅漫画理解使用JSON Web Token设计单点登录系统
java实现:https://github.com/unbroken-dome/jsonwebtoken,基于jdk8特性开发,注意运行开发环境,api比较碎,不好上手。
https://github.com/auth0/java-jwt
颁发json web token时,使用用户的登录密码作为签名秘钥。
- jwt规范:
组成:header.payload.signature,JWT 标准的 Token 有三个部分,三个部分中间用点分隔开,并且每部分都使用 Base64 编码。
header:包含两个标准字段
typ:token类型
alg:使用的算法
payload:包含标准字段和自定义字段两种
标准字段:
iss:Issuer,发行者
sub:Subject,主题
aud:Audience,观众
exp:Expiration time,过期时间
nbf:Not before
iat:Issued at,发行时间
jti:JWT ID
自定义字段:业务字段
signature:首先将Base64编码后的Header和Payload用.连接在一起,对这个字符串使用HmacSHA256算法及秘钥进行加密,生成签名字符串。