- 浏览: 540884 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (278)
- freemarker (6)
- flex应用 (12)
- Ext应用 (11)
- 软件 (16)
- java (61)
- 报表 (6)
- 框架基础 (6)
- 登录页面素材 (7)
- oracle (1)
- cas (10)
- lucene (6)
- linux (11)
- 视频 (10)
- springmvc (3)
- 视频服务器相关 (12)
- 开发工具 (7)
- IOS (20)
- 网站相关 (4)
- Java 任务调度系统带图形界面的 (1)
- maven (2)
- android (29)
- hadoop (3)
- SpagoBI (3)
- docx4j (4)
- 多线程 (2)
- storm (2)
- mobile 框架 (3)
- scala (1)
- socket (1)
- saiku (1)
最新评论
-
ZXCLTN:
1.streams目录,在里面放些flv,mp3之类的文件,这 ...
red5 整合到tomcat中(二) -
ZXCLTN:
写的没偷没尾的,还不如提供整个项目下载
red5 整合到tomcat中(二) -
01jiangwei01:
测试方法1:测试50个线 ...
hibernate 乐观锁 测试 -
01jiangwei01:
测试方法1:测试50个线程,同时并发访问。目标:只有一个通过, ...
hibernate 乐观锁 测试 -
xiaobadi:
你每次登陆都是跳到http://localhost:8081/ ...
cas 系统实例 服务端配置(二) 自定义登录
1,修改org.jasig.cas.web.flow.InitialFlowSetupAction.java将pathPopulated属性改为public
2,在web.xm中添加
<servlet-mapping> <servlet-name>cas</servlet-name> <url-pattern>/noflow</url-pattern> </servlet-mapping>
3,在cas-servlet.xml中添加
<bean id="noflowLoginController" class="org.jasig.cas.web.my.noflowlogin.noFlowLoginAction" p:argumentExtractors-ref="argumentExtractors" p:warnCookieGenerator-ref="warnCookieGenerator" p:centralAuthenticationService-ref="centralAuthenticationService" p:ticketGrantingTicketCookieGenerator-ref="ticketGrantingTicketCookieGenerator" p:initialFlowSetupAction-ref="initialFlowSetupAction" ></bean>
修改bean,黑体为新增
<bean id="handlerMappingC" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> <property name="mappings"> <props> <prop key="/logout"> logoutController </prop> <prop key="/serviceValidate"> serviceValidateController </prop> <prop key="/validate"> legacyValidateController </prop> <prop key="noflow"> noflowLoginController </prop> <prop key="/proxy"> proxyController </prop> <prop key="/proxyValidate"> proxyValidateController </prop> <prop key="/samlValidate"> samlValidateController </prop> <prop key="/services/add.html"> addRegisteredServiceSimpleFormController </prop> <prop key="/services/edit.html"> editRegisteredServiceSimpleFormController </prop> <prop key="/services/loggedOut.html"> serviceLogoutViewController </prop> <prop key="/services/viewStatistics.html"> viewStatisticsController </prop> <prop key="/services/*">manageRegisteredServicesMultiActionController</prop> <prop key="/openid/*">openIdProviderController</prop> <prop key="/authorizationFailure.html">passThroughController</prop> <prop key="/403.html">passThroughController</prop> </props> </property> <property name="alwaysUseFullPath" value="true" /> <!-- uncomment this to enable sending PageRequest events. <property name="interceptors"> <list> <ref bean="pageRequestHandlerInterceptorAdapter" /> </list> </property> --> </bean>
4,noFlowLoginAction类的具体内容为:
import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.validation.constraints.NotNull; import org.hibernate.validator.constraints.NotEmpty; import org.jasig.cas.CentralAuthenticationService; import org.jasig.cas.authentication.principal.Credentials; import org.jasig.cas.authentication.principal.Service; import org.jasig.cas.authentication.principal.UsernamePasswordCredentials; import org.jasig.cas.ticket.TicketException; import org.jasig.cas.web.flow.InitialFlowSetupAction; import org.jasig.cas.web.support.ArgumentExtractor; import org.jasig.cas.web.support.CookieRetrievingCookieGenerator; import org.jasig.cas.web.support.WebUtils; import org.springframework.util.StringUtils; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.mvc.AbstractController; import org.springframework.web.servlet.view.RedirectView; public class noFlowLoginAction extends AbstractController { @NotNull private CentralAuthenticationService centralAuthenticationService; @NotNull private CookieRetrievingCookieGenerator warnCookieGenerator; @NotNull private CookieRetrievingCookieGenerator ticketGrantingTicketCookieGenerator; private InitialFlowSetupAction initialFlowSetupAction; /** Extractors for finding the service. */ @NotEmpty private List<ArgumentExtractor> argumentExtractors; protected ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response) throws Exception { String uName = request.getParameter("username"); String password = request.getParameter("password"); Credentials credentials =new UsernamePasswordCredentials(uName,password); if (!this.initialFlowSetupAction.pathPopulated) { final String contextPath = request.getContextPath(); final String cookiePath = StringUtils.hasText(contextPath) ? contextPath + "/" : "/"; logger.info("Setting path for cookies to: " + cookiePath); this.warnCookieGenerator.setCookiePath(cookiePath); this.ticketGrantingTicketCookieGenerator.setCookiePath(cookiePath); this.initialFlowSetupAction.pathPopulated = true; } final Service service = WebUtils.getService( this.argumentExtractors, request); String ticketGrantingTicketId=""; String serviceTicket = ""; try { ticketGrantingTicketId = this.centralAuthenticationService.createTicketGrantingTicket(credentials); /*** * 产生新的票据,并将票据及服务记录在缓存中 */ serviceTicket= this.centralAuthenticationService.grantServiceTicket(ticketGrantingTicketId,service); this.ticketGrantingTicketCookieGenerator.removeCookie(response); this.ticketGrantingTicketCookieGenerator.addCookie(request, response, ticketGrantingTicketId); this.warnCookieGenerator.addCookie(request, response, "true"); } catch (TicketException e) { e.printStackTrace(); } return new ModelAndView(new RedirectView(request.getParameter("service")+"?ticket="+serviceTicket)); } public void setWarnCookieGenerator(final CookieRetrievingCookieGenerator warnCookieGenerator) { this.warnCookieGenerator = warnCookieGenerator; } public void setArgumentExtractors( final List<ArgumentExtractor> argumentExtractors) { this.argumentExtractors = argumentExtractors; } public final void setCentralAuthenticationService(final CentralAuthenticationService centralAuthenticationService) { this.centralAuthenticationService = centralAuthenticationService; } public void setTicketGrantingTicketCookieGenerator( final CookieRetrievingCookieGenerator ticketGrantingTicketCookieGenerator) { this.ticketGrantingTicketCookieGenerator = ticketGrantingTicketCookieGenerator; } public void setInitialFlowSetupAction( InitialFlowSetupAction initialFlowSetupAction) { this.initialFlowSetupAction = initialFlowSetupAction; } }
5,使用方法是:
<form action="http://localhost:8081/casserver/noflow" method="post"> <table> <input type="hidden" id="targetService" name="service" value="http://localhost:8081/casclient4/sso/index.jsp"> <input type="hidden" name="failpae" value="http://localhost:8081/casclient4/index.jsp"> <table> <tr> <td>用户名:</td> <td><input type="text" name="username"></td> </tr> <tr> <td>密 码:</td> <td><input type="password" name="password"></td> </tr> <tr><td>验证码</td> <td><input type="text" /><img src="http://localhost:8081/casserver/random" class="sign_img fl mt5" /></td></tr> <tr> <td colspan="2"><input type="submit" value="登陆" /></td> </tr> </table> </table> </form>
6,你可以自己测试了
评论
4 楼
wqmain
2013-04-28
你好,按照你的配置,我下面这行在运行是报错:
serviceTicket = this.centralAuthenticationService.grantServiceTicket(ticketGrantingTicketId, service);
报错如下:
debug发现参数service为空,但argumentExtractors集合是有内容的,请问原因?我cas服务端版本3.5 访问方式:http://localhost/cas/noflow?username=abc&password=123
serviceTicket = this.centralAuthenticationService.grantServiceTicket(ticketGrantingTicketId, service);
报错如下:
java.lang.IllegalArgumentException: 'resourceOperatedUpon' cannot be null. Check the correctness of @Audit annotation at the following audit point: execution(public abstract java.lang.String org.jasig.cas.CentralAuthenticationService.grantServiceTicket(java.lang.String,org.jasig.cas.authentication.principal.Service)) at com.github.inspektr.audit.AuditActionContext.assertNotNull(AuditActionContext.java:81) at com.github.inspektr.audit.AuditActionContext.<init>(AuditActionContext.java:64) at com.github.inspektr.audit.AuditTrailManagementAspect.executeAuditCode(AuditTrailManagementAspect.java:149) at com.github.inspektr.audit.AuditTrailManagementAspect.handleAuditTrail(AuditTrailManagementAspect.java:139) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597)
debug发现参数service为空,但argumentExtractors集合是有内容的,请问原因?我cas服务端版本3.5 访问方式:http://localhost/cas/noflow?username=abc&password=123
3 楼
kevinpan45
2012-11-07
你好,Credentials credentials =new UsernamePasswordCredentials(uName,password);这个代码提示没有这种构造方法。我用这样的方法构造,但是用credentials 生成ticket的时候
ticketGrantingTicketId = this.centralAuthenticationService
.createTicketGrantingTicket(credentials);
报了这个异常
TicketCreationException: error.authentication.credentials.bad
请问你的CAS SERVER是什么版本
引用
ticketGrantingTicketId = this.centralAuthenticationService
.createTicketGrantingTicket(credentials);
报了这个异常
引用
TicketCreationException: error.authentication.credentials.bad
请问你的CAS SERVER是什么版本
2 楼
01jiangwei01
2012-06-05
查看“cas 系统实例 客户端配置” 解决你的问题
1 楼
tiansskk
2012-05-09
不错很有用,那如何在客户端取值?
发表评论
-
cas 进阶篇二
2013-02-16 22:45 1234保存,并重新启动服务,输入用户名密码,进行登录。 4,通 ... -
cas 进阶篇一
2013-02-16 22:42 1467可以自己参考网站http://www.ja-sig.org ... -
cas 关注资料
2012-04-18 13:50 105网址一:http://hi.baidu.com/%D3%D2% ... -
cas 系统实例 客户配置(四) 访问受保护资源跳转到自定义登录页面
2012-03-20 15:25 3654方法和简单。就是在客户端web.xml的配置中。 <f ... -
cas 系统实例 配置及使用
2012-03-15 17:46 1316我个人想法使用方式是: 登录,采用客户端登录 找回密码:采 ... -
cas 系统实例 服务端配置(三) 退出到指定页面
2012-03-15 17:34 2512CAS退出默认是转向CAS内置的退出页面,在实际应用中需要跳转 ... -
cas 系统实例 服务端配置(二) 自定义登录
2012-03-15 16:55 6418学习一下,自定义登录 在web.xml中增加remoteLo ... -
cas 系统实例 客户端配置
2012-03-15 16:49 27231.解压后把modules下面的包放到我们的web应用中 2 ... -
cas 系统实例 服务端配置(一)
2012-03-01 15:39 2938最近在研究cas 并对其进行改版,终于有所成就,写出来与大 ... -
cas 简单配置 不用证书
2012-02-24 16:17 2209cas单点登录配置速成 服务端配置 ca ...
相关推荐
标题 "cas 系统实例 服务端配置(一)" 提到的是 CAS(Central Authentication Service)系统的一个服务端配置教程。CAS 是一个开源的身份验证框架,主要用于实现单一登录(Single Sign-On, SSO)。在本教程中,我们...
CAS(Central Authentication Service)是Java开发的一个开源的单点登录...通过学习和实践,你可以掌握CAS的核心概念,实现自定义认证策略,以及优化客户端集成,从而为你的项目构建一个强大而安全的单点登录系统。
CAS(Central Authentication Service)是一种广泛使用的开放源代码单点登录(Single Sign-On,SSO)框架,它允许用户通过一个中央认证服务访问多个应用系统,而无需为每个系统单独进行登录。在实际的企业环境中,...
CAS(Central Authentication Service,中央认证服务)是一种广泛使用的开源身份验证框架,主要用于实现单点登录(Single Sign-On,SSO)。在本主题中,我们将深入探讨如何在CAS中进行自定义加密和登录验证。 首先...
在CAS 4.0.0中,服务端配置多个数据源可以使CAS能够管理多个数据库的认证和授权信息。 首先,我们需要理解数据源(DataSource)的概念。在Java应用中,数据源是连接数据库的桥梁,它负责管理数据库连接,提供连接池...
CAS(Central Authentication Service)是一种基于Web的单点登录(Single Sign-On, SSO)协议,广泛应用于企业级应用系统中,以实现用户统一身份验证。在这个整合项目中,CAS服务端与客户端的角色得到了清晰的划分,...
在你的场景中,你使用的是CAS-server-3.5.2版本,这是一个较旧但仍然广泛使用的版本,提供了自定义登录页面的功能。 首先,让我们深入了解一下CAS的基本工作流程: 1. **CAS服务器初始化**:CAS服务器是核心组件,...
在IT领域,单点登录系统已经成为提高用户体验和安全管理的重要工具。 在你提供的压缩包文件中,我们可以推测包含的是CAS服务端的相关部署文件。接下来,我们将详细探讨如何部署和使用CAS服务端。 首先,解压缩文件...
在CAS服务器端,WebFlow负责管理登录流程,其配置主要在`/WEB-INF/login-webflow.xml`文件中进行。该文件定义了一系列状态(State),包括决策状态(Decision)、动作状态(Action)、视图状态(View)和初始/最终...
CAS4.1.4是CAS的一个特定版本,该版本包含了服务端和客户端的实现,使得用户只需一次登录就可以访问多个相互信任的应用系统。 在CAS4.1.4中,服务端是核心组件,负责验证用户的凭证(如用户名和密码),并为客户端...
若能正常显示登录界面,则说明服务端配置成功。 ##### 2.2 在MyEclipse中创建CAS服务端 1. **创建CAS Web项目** 打开MyEclipse,选择`File` -> `New` -> `Dynamic Web Project`来创建一个新的动态Web项目。 2. ...
[置顶] SSO单点登录系列3:cas-server端配置认证方式实践(数据源+自定义java类认证) http://blog.csdn.net/ae6623/article/details/8851801 [置顶] SSO单点登录系列2:cas客户端和cas服务端交互原理动画图解,cas...
直接可以对cas-server项目进行打不,部署到tomcat,即可使用,记得修改cas-server的数据库连接地址哦 单点登录服务端项目cas-server 单点登录服务端项目cas-server 单点登录服务端项目cas-server 单点登录服务端项目...
这是我的博文http://blog.csdn.net/jadyer/article/details/46916169中的完整代码
CAS(Central Authentication Service)是基于Web的单一登录(Single Sign-On, SSO)协议的开源项目,主要用于身份验证。在本项目中,我们关注的是CAS服务端的文件下载部分,这意味着我们将探讨如何设置和配置CAS...
CAS(Central Authentication Service)是一种广泛使用的开放源码身份验证框架,它允许用户通过单一登录(Single Sign-On,SSO)访问多个应用系统。在本文中,我们将探讨如何在普通方式和Spring Boot方式下配置和...
开发者应关注CAS的安全配置,如SSL/TLS的使用、凭证加密、防止票据篡改等,以确保系统的安全性。 8. 扩展与集成:CAS支持多种认证协议,如LDAP、数据库、Active Directory等,可以方便地与其他身份管理系统集成。...
CAS 4.1.4 是该框架的一个版本,提供了服务端和客户端组件,使得用户在访问多个应用系统时只需要进行一次登录认证。在这个压缩包中,"cas4.1.4server服务端"包含了运行CAS服务器所需的所有文件,而"client"目录则...
CAS(Central Authentication Service)是一种基于Web的单一登录(Single Sign-On, SSO)协议,它允许用户通过一个统一的身份验证入口点登录,然后在多个应用系统间自由切换,而无需再次进行身份验证。这个给定的...