java单点登录sso的实例_基于CAS的SSO(单点登录)实例

第一步 部署CAS-Server(服务端)

1.从CAS官方网站(http://developer.jasig.org/cas/)下载最新版本的CAS-Server(当前最新版本cas-server-4.0.0-release.zip),将其解压,找到modules/cas-server-webapp-3.5.2.war,复制到本地tomcat下的webapps下,并重命名为cas.war(可以是其他名称),启动tomcat,在webapps下生成了名为cas的web项目。

2.CAS默认使用https协议通信,需要tomcat配置SSL协议(这一部分会在以后详细介绍)。 但是由于一般项目不需要这么高的安全级别, 为了简化操作,将使用http协议通信。

打开webapps\cas\WEB-INF\spring-configuration\warnCookieGenerator.xml,找到如下配置,将p:cookieSecure="true"改为p:cookieSecure="false"

b4c60ca7cd42e84eea6709008a17a992.png

打开webapps\cas\WEB-INF\spring-configuration\ticketGrantingTicketCookieGenerator.xml ,找到如下配置,将p:cookieSecure="true"改为p:cookieSecure="false"

99c047860f7db65919a6e92e04c70951.png

打开webapps\cas\WEB-INF\deployerConfigContext.xml 文件 ,找到如下配置,将p:requireSecure="false"添加到下图标记的位置

ca57dc78bc5a135f0e88dbca8f0d45a6.png

3.重新启动tomcat,访问  http://localhost:8085/cas  则可以看到如下登陆界面。

3613359e6aed51decdfb9ffedc6441df.png

至于下图所显示的错误Non-secure Connection,是由于没有使用HTTPS协议的关系,而默认的登陆界面有对此进行验证的代码,而在实际项目中的登陆界面一般需要自己写,通过修改webapps\cas\WEB-INF\view\jsp\default\ui下的casLoginView.jsp即可。将下图所示代码删掉即可去除错误警告。

f8ca1d214d57c472b9b6207f8eac3f3f.png

4.CAS-Server的默认验证规则:只要用户名和密码相同就认证通过(仅仅用于测试,生成环境需要根据实际情况修改,如何更改认证规则会在以后详细介绍),输入admin/admin 点击登录,就可以看到登录成功的页面。至此CAS服务端配置完成。

96ecd29d8e15717f8faf3aad911f708e.png

第二步 部署CAS-Client(客户端)

1.从网上下载对应CAS-Server版本的CAS-Client(当前对应版本cas-client-3.2.1-release.zip), 解压提取cas-client-3.2.1/modules/cas-client-core-3.2.1.jar,复制到实际web项目的lib下。

2.配置web.xml文件,添加以下代码

org.jasig.cas.client.session.SingleSignOutHttpSessionListener

CAS Single Sign Out Filter

org.jasig.cas.client.session.SingleSignOutFilter

CAS Single Sign Out Filter

/*

CAS Filter

org.jasig.cas.client.authentication.AuthenticationFilter

casServerLoginUrl

http://127.0.0.1:8080/cas/login

serverName

http://127.0.0.1:8080

CAS Filter

/*

CAS Validation Filter

org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter

casServerUrlPrefix

http://127.0.0.1:8080/cas

serverName

http://127.0.0.1:8080

CAS Validation Filter

/*

CAS HttpServletRequest Wrapper Filter

org.jasig.cas.client.util.HttpServletRequestWrapperFilter

CAS HttpServletRequest Wrapper Filter

/*

CAS Assertion Thread Local Filter

org.jasig.cas.client.util.AssertionThreadLocalFilter

CAS Assertion Thread Local Filter

/*

3.模拟两个子系统。

首先,创建两个servlet(App1.java和App2.java)。

App1.java代码

packageservlet;import java.io.*;import javax.servlet.*;import javax.servlet.http.*;public class App1 extendsHttpServlet {private static final long serialVersionUID = -6593274907821061823L;public voiddoGet(HttpServletRequest request, HttpServletResponse response)throwsIOException, ServletException {

response.setContentType("text/html");

PrintWriter out=response.getWriter();

out.println("App1");

}

}

App2.java代码

packageservlet;import java.io.*;import javax.servlet.*;import javax.servlet.http.*;public class App2 extendsHttpServlet {private static final long serialVersionUID = -6593274907821061823L;public voiddoGet(HttpServletRequest request, HttpServletResponse response)throwsIOException, ServletException {

response.setContentType("text/html");

PrintWriter out=response.getWriter();

out.println("App2");

}

}

最终的web.xml代码

http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">

index.jsp

org.jasig.cas.client.session.SingleSignOutHttpSessionListener

CAS Single Sign Out Filter

org.jasig.cas.client.session.SingleSignOutFilter

CAS Single Sign Out Filter

/*

CAS Filter

org.jasig.cas.client.authentication.AuthenticationFilter

casServerLoginUrl

http://127.0.0.1:8080/cas/login

serverName

http://127.0.0.1:8080

CAS Filter

/*

CAS Validation Filter

org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter

casServerUrlPrefix

http://127.0.0.1:8080/cas

serverName

http://127.0.0.1:8080

CAS Validation Filter

/*

CAS HttpServletRequest Wrapper Filter

org.jasig.cas.client.util.HttpServletRequestWrapperFilter

CAS HttpServletRequest Wrapper Filter

/*

CAS Assertion Thread Local Filter

org.jasig.cas.client.util.AssertionThreadLocalFilter

CAS Assertion Thread Local Filter

/*

App1

App1

servlet.App1

App2

App2

servlet.App2

App1

/App1

App2

/App2

4.添加jar依赖包commons-logging.jar(日志工具),如果不添加会报错误,但是没有测试是否影响正常功能的使用。

第三步 测试SSO

1.浏览器中输入地址http://127.0.0.1:8080/SSO_CAS/App1(SSO_CAS为web项目名称),跳转到CAS-Server的默认登陆界面中,输入admin/admin,点击登陆,显示App1。

40c723430993b10668d02227442624d1.png

2.浏览器中输入地址http://127.0.0.1:8080/SSO_CAS/App2,则跳过登陆验证,直接显示App2。

56be2535a10029a39507c26646cdefd9.png

到此已经全部完成了基于CAS的单点登录实例演示。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值