Cas单点登录客户端配置
来源:互联网 发布:淘宝女装批发网 编辑:程序博客网 时间:2024/05/02 04:18
一直不喜欢说太多东西,直接上代码。
主要是以下几个步骤:
1、项目加入cas-client-core-3.2.1.jar到lib中
2、导入证书(此步骤根据项目判断是否需要操作)
3、配置web.xml
4、编写客户端代码(filter,servlet,....)
5、进行验证
1、项目加入cas-client-core-3.2.1.jar到lib中
http://download.csdn.net/download/qq741437836/9740128 (不用积分)
2、导入证书(此步骤根据项目判断是否需要操作)
将cacerts文件导入JDK目录(C:\ProgramFiles\Java\jdk1.7.0_67\jre\lib\security)建议直接替换即可。
3、配置web.xml
<filter> <filter-name>CAS Single Sign Out Filter</filter-name> <filter-class>org.jasig.cas.client.session.SingleSignOutFilter</filter-class></filter><filter> <filter-name>CAS Authentication Filter</filter-name> <filter-class>org.jasig.cas.client.authentication.AuthenticationFilter</filter-class> <init-param> <param-name>casServerLoginUrl</param-name> <param-value>服务端地址(https://login.xxxx.cn/cas)</param-value> </init-param> <init-param> <param-name>serverName</param-name> <param-value>http://你的项目地址(http://ip:port)</param-value> </init-param></filter><filter> <filter-name>CAS Validation Filter</filter-name> <filter-class>org.jasig.cas.client.validation.Cas10TicketValidationFilter</filter-class> <init-param> <param-name>casServerUrlPrefix</param-name> <param-value>服务端地址(https://login.xxxx.cn/cas)</param-value> </init-param> <init-param> <param-name>serverName</param-name><param-value>http://你的项目地址(http://ip:port)</param-value> </init-param> <init-param> <param-name>redirectAfterValidation</param-name> <param-value>true</param-value> </init-param></filter><filter> <filter-name>CAS HttpServletRequest Wrapper Filter</filter-name> <filter-class>org.jasig.cas.client.util.HttpServletRequestWrapperFilter</filter-class></filter><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 Single Sign Out Filter</filter-name> <url-pattern>/*</url-pattern></filter-mapping><filter-mapping> <filter-name>CAS Authentication Filter</filter-name> <url-pattern>/*</url-pattern></filter-mapping><filter-mapping> <filter-name>CAS Validation Filter</filter-name> <url-pattern>/*</url-pattern></filter-mapping><filter-mapping> <filter-name>CAS HttpServletRequest Wrapper Filter</filter-name> <url-pattern>/*</url-pattern></filter-mapping><filter-mapping> <filter-name>CAS Assertion Thread Local Filter</filter-name> <url-pattern>/*</url-pattern></filter-mapping><listener> <listener-class>org.jasig.cas.client.session.SingleSignOutHttpSessionListener</listener-class></listener>特别要注意的地方就是写 你项目地址的地方 是你web工程的Ip加端口,不需要前后文。
下面的filter-mapping根据你项目实际情况进行配置。
4、编写客户端代码
@Overridepublic boolean service(Request request, Response response, RequestHandler handler)throws IOException {//http://ip:port/web/casif (request.getPath().equals("/cas")){try {Cookie[] cookies = httpServletRequest.getCookies();String loginCookie = null;if (null != cookies) {for (Cookie cookie : cookies) {if ("k".equals(cookie.getName())) {loginCookie = cookie.getValue();break;}}}if(loginCookie == null){Assertion assertion = AssertionHolder.getAssertion();String userNo = assertion.getPrincipal().getName();//cas认证登录用户(邮箱前缀)if(!StringUtil.isEmpty(userNo)){doLogin(userNo);//根据cas返回值进行授权操作return true;}else{response.sendRedirect(request.getContextPath() + "/logout");return true;}}else{enter();return true;}} catch (Exception e) {e.printStackTrace();response.sendRedirect(request.getContextPath() + "/logout");return true;}}else{if(request.getPath().equals("/")){response.sendRedirect(request.getContextPath() + "/logout");return true;}else{return handler.service(request, response);}}}
private void doLogin(String userNo) throws IOException {String remoteAddr = httpServletRequest.getHeader("X-Real-IP") == null ? httpServletRequest.getRemoteAddr(): httpServletRequest.getHeader("X-Real-IP");LoginResult rm = xxxx.loginByCasSrv(userNo, remoteAddr, "ZHS");if (rm != null && "success".equals(rm.getResultMsg())) {Cookie cookie = new Cookie("k", rm.getPermitCode());cookie.setHttpOnly(true);cookie.setPath(httpServletRequest.getContextPath() + "/");cookie.setMaxAge(-1);cookie.setSecure(httpServletRequest.isSecure());httpServletResponse.addCookie(cookie);enter();} else {String toast = null;if ("user_invalidate".equals(rm.getResultMsg())) {toast = "用户冻结";} else if ("tenant_invalidate".equals(rm.getResultMsg())) {toast = "用户不存在";} else if ("uid_duplicate".equals(rm.getResultMsg())) {toast = "用户不存在";}else {toast = "密码错误";}httpServletResponse.getWriter().append(toast);}}/** * 进入系统页面,根据url参数判断是进入什么页面 * * @throws IOException */private void enter() throws IOException {String target = httpServletRequest.getParameter("target");String id = httpServletRequest.getParameter("id");if (target != null && !target.isEmpty()) {String url = null;if (target.equals("xxxx")) {url = httpServletRequest.getContextPath() + "/home/xxxx/" + id;} else if (target.equals("yyyy")) {url = httpServletRequest.getContextPath() + "/home/yyyy/" + id;}httpServletResponse.sendRedirect(url);} else {httpServletResponse.sendRedirect(httpServletRequest.getContextPath() + "/home");}}人比较懒,直接复制已经完成好的代码,前后cookie是我项目需要的东西,你可以根据你实际项目来进行编写。
比较完整,稍作修改就可使用。
5、进行验证
去百度。
0 0
- Cas单点登录客户端配置
- 单点登录学习(3)CAS客户端配置
- 单点登录(四)cas客户端配置
- cas 单点登录服务端客户端配置
- CAS单点登录服务端与客户端配置
- 单点登录CAS系列8-客户端配置单点登出
- CAS单点登录配置
- CAS单点登录配置
- CAS单点登录配置
- Cas单点登录的服务器端和客户端的配置
- Mvc4单点登录之三Cas 客户端配置
- Cas单点登录的服务器端和客户端的配置
- cas单点登录系统:客户端(client)详细配置
- cas单点登录客户端(asp.net mvc4)配置
- ASP.NET MVC配置客户端单点登录CAS
- CAS SSO单点登录基础实践,配置CAS 服务器和CAS客户端
- CAS SSO单点登录基础实践,配置CAS 服务器和CAS客户端
- cas 单点登录配置速成
- Rxjava(Rxjava 1.x)
- android 实现view从屏幕中间划出
- 【leetcode】【Easy】【463. Island Perimeter】
- textview设置字体以及引入新字体
- 3632: 外太空旅行
- Cas单点登录客户端配置
- 弹指一挥间
- 重新学习java-第一天(1)
- 重装eclipse后重新配置
- 微信登陆SDK接入 微信 qq 新浪 登陆&&分享
- Python上下文管理器Context Manager
- 119. Pascal's Triangle II
- Android中如何节省内存占用
- ThreadLocal类