900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > java实现单点登录_JAVA实现SSO单点登录

java实现单点登录_JAVA实现SSO单点登录

时间:2019-11-21 09:35:03

相关推荐

java实现单点登录_JAVA实现SSO单点登录

一、概述

1.1、SSO介绍

SSO全称:SingleSignOn,几个相互信任的应用之间,在其中一个应用进行登录以后,其他信任的应用直接免登。

例如:新浪下的博客和微博。在网页上同时打开后都没登录,当登录了其中一个之后,再刷新另一个会自动登录。

1.2、SSO核心技术分析

通过cookie验证用户的身份,配置拦截器拦截所有请求,当访问站点时,拦截方法中判断客户端是否存在指定cookie以及是否有效,满足条件则跳主页面,否则跳登录页面。当登录并验证成功后定义cookie并写入客户端。

二、同域SSO

2.1、同域SSO准备工作

本案例基于Spring+Struts2开发,具体的框架搭建本处不在赘述,需要的可自行百度

2.2、编写统一登录接口

1、统一登录页面,除了用户名和密码,需要在页面隐藏一个gotourl,用来记录验证通过后需要跳转的地址

请登录

用户名:

密码:

2、输入用户名、密码后请求后台的dologin方法,如果用户名密码验证通过,把信息存入cookie的顶层目录下。

publicString dologin(){

//同域下的sso

booleanok = SSOCheck.checklogin(username, password);

if(ok){

Cookie cookie = newCookie("ssocookie", "sso");

cookie.setPath("/");//设置到顶层

HttpServletResponse response = ServletActionContext.getResponse();

response.addCookie(cookie);

returnSUCCESS;

}

return"login";

}

2.3、编写登陆校验接口

系统拿到统一登录页面传过来的cookie进行验证,验证通过则跳过本系统的登陆直接进入系统

public static booleancheckcookie(HttpServletRequest request){

Cookie[] cookies = request.getCookies();

if(cookies!=null){

for(Cookie cookie:cookies){

if(cookie.getName().equals("ssocookie")&& cookie.getValue().equals("sso")){

return true;

}

}

}

return false;

}

2.4、编写DEMO1和DEMO2的主页

先访问demo1或者demo2的主页,验证如果cookie不存在,则跳转到登录页面

//先校验cookie的有效性 在校验登录

public classDemo1Action extendsActionSupport{

privateString gotourl;

publicString main(){

HttpServletRequest request = ServletActionContext.getRequest();

booleanok = SSOCheck.checkcookie(request);

if(ok){

returnSUCCESS;

}

gotourl= "/demo1/main.action";

return"login";

}

publicString getGotourl() {

returngotourl;

}

public voidsetGotourl(String gotourl) {

this.gotourl= gotourl;

}

}

三、同父域sso

/demo1/main.action

/demo2/main.action

统一校验接口:

/sso/checkCookie.action

3.1、编写统一的登录接口

大部分逻辑跟同域sso类似,区别在于cookie的共享问题

cookie.setDomain(".");//设置父域

cookie.setPath("/");//设置顶层

3.2、编写登陆校验接口

3.3、编写DEMO1和DEMO2主页

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。