spring mvc配置cas客户端
来源:互联网 发布:jquery 数组删除对象 编辑:程序博客网 时间:2024/06/03 16:06
1:在WEB-INF/lib中导入cas jar包
点击打开链接
2、导入证书
(1)将证书server.cer文件拷贝至业务系统所在服务器上的某路径下(如c盘根目录),在cmd命令界面切换至证书所在路径,执行以下命令(jdk路径自行修改),并信任该认证(输入Y,回车):
keytool -import -trustcacerts -alias casserver -file server.cer -keystore "C:\Program Files\Java\jdk1.6.0_21\jre\lib\security\cacerts" -storepass changeit
(2)如果安装了jre,务必再执行一遍以下命令:
keytool -import -trustcacerts -alias casserver -file server.cer -keystore "C:\Program Files\Java\jre6\lib\security\cacerts" -storepass changeit
导入证书界面如下图:
3:配置web.xml
<!-- CAS退出url --> <context-param> <param-name>casServerLogoutUrl</param-name> <param-value>http://casserver.sdcloud.net:8090/cas/logout</param-value> </context-param> <!--单点退出配置,一定要放在其他filter之前--> <listener> <listener-class>org.jasig.cas.client.session.SingleSignOutHttpSessionListener</listener-class> </listener> <filter> <filter-name>CAS Single Sign Out Filter</filter-name> <filter-class>org.jasig.cas.client.session.SingleSignOutFilter</filter-class> </filter> <filter-mapping> <filter-name>CAS Single Sign Out Filter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!-- CAS 客户端配置 这个filter负责对请求进行登录验证拦截,--> <filter> <filter-name>CAS Authentication Filter</filter-name> <filter-class> org.jasig.cas.client.authentication.AuthenticationFilter </filter-class> <!-- CAS验证服务器地址,有域名填写域名 --> <init-param> <param-name>casServerLoginUrl</param-name> <param-value> https://casserver.sdcloud.net:8443/cas/login </param-value> </init-param> <init-param> <param-name>renew</param-name> <param-value>false</param-value> </init-param> <init-param> <param-name>gateway</param-name> <param-value>false</param-value> </init-param> <!-- 客户端应用服务器地址,utl_pattern用来控制需要过滤的url--> <!-- 这里将对http://localhost:8080/xxx/logon/xx.jsp的所有路径进行过滤--> <init-param> <param-name>serverName</param-name> <param-value>http://localhost:8080</param-value> </init-param> </filter> <filter-mapping> <filter-name>CAS Authentication Filter</filter-name> <url-pattern>/logon/*</url-pattern> </filter-mapping> <!--负责Ticket校验 这个filter负责对请求参数ticket进行验证(ticket参数是负责子系统与CAS进行验证交互的凭证)--> <filter> <filter-name>CAS Validation Filter</filter-name> <filter-class> org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter </filter-class> <init-param> <param-name>casServerUrlPrefix</param-name> <param-value>https://casserver.sdcloud.net:8443/cas/</param-value> </init-param> <init-param> <param-name>serverName</param-name> <param-value>http://localhost:8080</param-value> </init-param> <init-param> <param-name>useSession</param-name> <param-value>true</param-value> </init-param> <init-param> <param-name>redirectAfterValidation</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>CAS Validation Filter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!-- 这个是HttpServletRequet的包裹类,让他支持getUserPrincipal,getRemoteUser方法来取得用户信息 --> <filter> <filter-name>CAS HttpServletRequest Wrapper Filter</filter-name> <filter-class> org.jasig.cas.client.util.HttpServletRequestWrapperFilter </filter-class> </filter> <filter-mapping> <filter-name>CAS HttpServletRequest Wrapper Filter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!-- 这个类把Assertion信息放在ThreadLocal变量中,这样应用程序不在web层也能够获取到当前登录信息 --> <filter> <filter-name>CAS Assertion Thread Local Filter</filter-name> <filter-class> org.jasig.cas.client.util.AssertionThreadLocalFilter </filter-class> </filter> <filter-mapping> <filter-name>CAS Assertion Thread Local Filter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
4:修改源程序
假设原业务系统中(参看test测试应用),系统登录页面为test/login.jsp,用户验证页面为test/checkUser.jsp,验证成功后的页面为test/index.jsp,退出后的页面为test/logout.jsp。
原业务流程为:用户在login.jsp中输入用户名、密码,通过checkUser.jsp进行相关业务逻辑的验证,然后登录到index.jsp,退出系统到logout.jsp;如果未登录访问index.jsp,则自动转到login.jsp。
使用CAS单点登录服务器,需要做以下修改(参看castest测试应用)。
(1) 修改原来的用户登录验证页面checkUser.jsp,将其中从request中获取用户名、密码的语句,改为通过CAS的类AttributePrincipal进行获取。其他的验证业务逻辑不变。(参考castest/checkUserWithCAS.jsp)
//获取在CAS登录窗口输入的用户名密码
AttributePrincipal principal = (AttributePrincipal)request.getUserPrincipal();
String username = principal.getName();
String password = principal.getProxyTicketFor(username);
(2) 修改index.jsp页面中,原来判断如果未登录的转向页面,原来是转向登录页面,修改为用户登录验证页面。(参考castest/index.jsp)或者改相应的配置文件,web.xml.
(3) 修改退出处理页面logout.jsp。在使session失效后,增加CAS退出的语句。
response.sendRedirect("http://casserver.sdcloud.net:8090/cas/logout?service=http://localhost:8080/test/logoutseccess.jsp"); 标黄色为退出后要转到的页面,可自行设置。
5:发布系统
访问业务系统地址:http://localhost:8080/casclient/ 如果出现如下警告信息,点击“继续浏览此网站(不推荐)。”
- spring mvc配置cas客户端
- ASP.NET MVC配置客户端单点登录CAS
- CAS 客户端配置
- Cas 客户端配置
- play cas 客户端配置
- cas 客户端配置说明
- cas 客户端配置
- CAS 客户端配置
- 配置简单cas客户端
- jasig CAS客户端配置
- 配置CAS应用客户端
- cas spring mvc 中文乱码
- spring MVC中的CAS实现
- Spring Security3 + CAS 配置
- play 2.10配置cas客户端
- CAS客户端配置及定制
- sso cas+security客户端配置
- CAS客户端基本配置备忘
- Linux下共享库与静态库的制做
- c与c++易错点之预处理,const,sizeof
- 线程绑定CPU
- servlet请求中post提交表单重定向到跨域网站问题
- 让算法会说话之堆排序
- spring mvc配置cas客户端
- shiwen
- 启动dignostics
- UILabel
- 2C01-View-Layout-Animation-Grid-Fade
- C#面试题
- DirectX游戏开发——从一个小游戏开始
- 那些不能错过的Xcode插件
- 福彩新彩网超级大乐透三招秘诀选号