`
wangchao_17915566
  • 浏览: 169542 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

cas+ldap异常分析

阅读更多

配置文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:p="http://www.springframework.org/schema/p"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
		<bean id="authenticationManager"
		class="org.jasig.cas.authentication.AuthenticationManagerImpl">
				<property name="credentialsToPrincipalResolvers">
			<list>
								<bean
					class="org.jasig.cas.authentication.principal.UsernamePasswordCredentialsToPrincipalResolver" />
								<bean
					class="org.jasig.cas.authentication.principal.HttpBasedServiceCredentialsToPrincipalResolver" />
			</list>
		</property>

				<property name="authenticationHandlers">
			<list>
								<bean class="org.jasig.cas.authentication.handler.support.HttpBasedServiceCredentialsAuthenticationHandler"
					p:httpClient-ref="httpClient" />
								<bean  
                    class="org.jasig.cas.adaptors.ldap.BindLdapAuthenticationHandler">  
                    <property name="filter" value="uid=%u" />  
                    <property name="searchBase" value="o=tcl,c=cn" />   <!--注意-->
                    <property  
                        name="contextSource"  
                        ref="contextSource" />  
                </bean> 
			</list>
		</property>
	</bean>


 <bean id="contextSource" class="org.jasig.cas.adaptors.ldap.util.AuthenticatedLdapContextSource">  
        <property name="anonymousReadOnly" value="false" />  
        <property name="password" value="secret" />  <!--注意-->
        <property name="pooled" value="true" />  
        <property name="urls">  
            <list>  
                <value>ldap://localhost:389/</value>  
            </list>  
        </property>  
        <property name="userName" value="cn=Manager,o=tcl,c=cn" />  <!--注意-->
        <property name="baseEnvironmentProperties">  
            <map>  
                <entry>  
                        <key><value>java.naming.security.protocol</value></key>  
                        <value>none</value>  
                    </entry>  
                <entry>  
                        <key><value>java.naming.security.authentication</value></key>  
                        <value>simple</value>  
                    </entry>  
                </map>  
        </property>  
    </bean>  

		<bean id="userDetailsService" class="org.acegisecurity.userdetails.memory.InMemoryDaoImpl">
		<property name="userMap">
			<value>
		    </value>
		</property>
	</bean> 
	
		<bean id="attributeRepository"
		class="org.jasig.services.persondir.support.StubPersonAttributeDao">
		<property name="backingMap">
			<map>
				<entry key="uid" value="uid" />
				<entry key="eduPersonAffiliation" value="eduPersonAffiliation" /> 
				<entry key="groupMembership" value="groupMembership" />
			</map>
		</property>
	</bean>
		<bean
		id="serviceRegistryDao"
		class="org.jasig.cas.services.InMemoryServiceRegistryDaoImpl" />
</beans>

 

出现异常

org.springframework.webflow.engine.ActionExecutionException: Exception thrown executing [AnnotatedAction@19811ce targetAction = org.jasig.cas.web.flow.AuthenticationViaFormAction@a632be, attributes = map['method' -> 'submit']] in state 'submit' of flow 'login-webflow' -- action execution attributes were 'map['method' -> 'submit']'; nested exception is org.springframework.ldap.UncategorizedLdapException: Operation failed; nested exception is javax.naming.AuthenticationException: [LDAP: error code 49 - Invalid Credentials]
	org.springframework.webflow.engine.ActionExecutor.execute(ActionExecutor.java:68)
	org.springframework.webflow.engine.ActionState.doEnter(ActionState.java:180)
	org.springframework.webflow.engine.State.enter(State.java:200)
	org.springframework.webflow.engine.Transition.execute(Transition.java:229)
	org.springframework.webflow.engine.TransitionableState.onEvent(TransitionableState.java:112)
	org.springframework.webflow.engine.Flow.onEvent(Flow.java:572)
	org.springframework.webflow.engine.impl.RequestControlContextImpl.signalEvent(RequestControlContextImpl.java:208)
	org.springframework.webflow.engine.ActionState.doEnter(ActionState.java:185)
	org.springframework.webflow.engine.State.enter(State.java:200)
	org.springframework.webflow.engine.Transition.execute(Transition.java:229)
	org.springframework.webflow.engine.TransitionableState.onEvent(TransitionableState.java:112)
	org.springframework.webflow.engine.Flow.onEvent(Flow.java:572)
	org.springframework.webflow.engine.impl.RequestControlContextImpl.signalEvent(RequestControlContextImpl.java:208)
	org.springframework.webflow.engine.impl.FlowExecutionImpl.signalEvent(FlowExecutionImpl.java:214)
	org.springframework.webflow.executor.FlowExecutorImpl.resume(FlowExecutorImpl.java:245)
	org.springframework.webflow.executor.support.FlowRequestHandler.handleFlowRequest(FlowRequestHandler.java:115)
	org.springframework.webflow.executor.mvc.FlowController.handleRequestInternal(FlowController.java:172)
	org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:153)
	org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48)
	org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:857)
	org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:792)
	org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:475)
	org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:440)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	org.jasig.cas.web.init.SafeDispatcherServlet.service(SafeDispatcherServlet.java:115)


root cause 

javax.naming.AuthenticationException: [LDAP: error code 49 - Invalid Credentials]
	com.sun.jndi.ldap.LdapCtx.mapErrorCode(LdapCtx.java:2985)
	com.sun.jndi.ldap.LdapCtx.processReturnCode(LdapCtx.java:2931)
	com.sun.jndi.ldap.LdapCtx.processReturnCode(LdapCtx.java:2732)
	com.sun.jndi.ldap.LdapCtx.connect(LdapCtx.java:2646)
	com.sun.jndi.ldap.LdapCtx.<init>(LdapCtx.java:283)
	com.sun.jndi.ldap.LdapCtxFactory.getUsingURL(LdapCtxFactory.java:175)
	com.sun.jndi.ldap.LdapCtxFactory.getUsingURLs(LdapCtxFactory.java:193)
	com.sun.jndi.ldap.LdapCtxFactory.getLdapCtxInstance(LdapCtxFactory.java:136)
	com.sun.jndi.ldap.LdapCtxFactory.getInitialContext(LdapCtxFactory.java:66)
	javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:667)
	javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:247)
	javax.naming.InitialContext.init(InitialContext.java:223)
	javax.naming.ldap.InitialLdapContext.<init>(InitialLdapContext.java:134)
	org.springframework.ldap.support.LdapContextSource.getDirContextInstance(LdapContextSource.java:59)
	org.springframework.ldap.support.AbstractContextSource.createContext(AbstractContextSource.java:193)
	org.springframework.ldap.support.AbstractContextSource.getReadOnlyContext(AbstractContextSource.java:104)
	org.springframework.ldap.LdapTemplate.search(LdapTemplate.java:263)
	org.springframework.ldap.LdapTemplate.search(LdapTemplate.java:314)
	org.jasig.cas.adaptors.ldap.BindLdapAuthenticationHandler.authenticateUsernamePasswordInternal(BindLdapAuthenticationHandler.java:67)
	org.jasig.cas.authentication.handler.support.AbstractUsernamePasswordAuthenticationHandler.doAuthentication(AbstractUsernamePasswordAuthenticationHandler.java:56)
	org.jasig.cas.authentication.handler.support.AbstractPreAndPostProcessingAuthenticationHandler.authenticate(AbstractPreAndPostProcessingAuthenticationHandler.java:58)
	org.jasig.cas.authentication.AuthenticationManagerImpl.authenticate(AuthenticationManagerImpl.java:84)
	org.jasig.cas.CentralAuthenticationServiceImpl.createTicketGrantingTicket(CentralAuthenticationServiceImpl.java:383)
	org.jasig.cas.web.flow.AuthenticationViaFormAction.submit(AuthenticationViaFormAction.java:107)
	sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	java.lang.reflect.Method.invoke(Method.java:585)
	org.springframework.webflow.util.DispatchMethodInvoker.invoke(DispatchMethodInvoker.java:103)
	org.springframework.webflow.action.MultiAction.doExecute(MultiAction.java:136)
	org.springframework.webflow.action.AbstractAction.execute(AbstractAction.java:203)
	org.springframework.webflow.engine.AnnotatedAction.execute(AnnotatedAction.java:142)
	org.springframework.webflow.engine.ActionExecutor.execute(ActionExecutor.java:61)
	org.springframework.webflow.engine.ActionState.doEnter(ActionState.java:180)
	org.springframework.webflow.engine.State.enter(State.java:200)
	org.springframework.webflow.engine.Transition.execute(Transition.java:229)
	org.springframework.webflow.engine.TransitionableState.onEvent(TransitionableState.java:112)
	org.springframework.webflow.engine.Flow.onEvent(Flow.java:572)
	org.springframework.webflow.engine.impl.RequestControlContextImpl.signalEvent(RequestControlContextImpl.java:208)
	org.springframework.webflow.engine.ActionState.doEnter(ActionState.java:185)
	org.springframework.webflow.engine.State.enter(State.java:200)
	org.springframework.webflow.engine.Transition.execute(Transition.java:229)
	org.springframework.webflow.engine.TransitionableState.onEvent(TransitionableState.java:112)
	org.springframework.webflow.engine.Flow.onEvent(Flow.java:572)
	org.springframework.webflow.engine.impl.RequestControlContextImpl.signalEvent(RequestControlContextImpl.java:208)
	org.springframework.webflow.engine.impl.FlowExecutionImpl.signalEvent(FlowExecutionImpl.java:214)
	org.springframework.webflow.executor.FlowExecutorImpl.resume(FlowExecutorImpl.java:245)
	org.springframework.webflow.executor.support.FlowRequestHandler.handleFlowRequest(FlowRequestHandler.java:115)
	org.springframework.webflow.executor.mvc.FlowController.handleRequestInternal(FlowController.java:172)
	org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:153)
	org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48)
	org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:857)
	org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:792)
	org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:475)
	org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:440)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	org.jasig.cas.web.init.SafeDispatcherServlet.service(SafeDispatcherServlet.java:115)

 

 

结果分析:

有些人在网上copy一个配置文件,就启动cas服务器了,这样是错误的,首先要确定节点名称,还有密码是否和你配置的ldap服务器是否相同,这是导致异常的根源

分享到:
评论
1 楼 张永强 2010-03-16  
楼主QQ或者邮箱多少,想向你请教,交流交流问题。

相关推荐

    Cas Server 3.4.2 和 Cas Client 3.1.6 的源代码

    4. **扩展性**:Cas Server 3.4.2 提供了丰富的插件和扩展机制,允许开发者根据需求添加自定义认证和授权模块,例如 LDAP、数据库、Active Directory 等。 5. **安全特性**:Cas Server 通过加密和安全协议保障通信...

    cas-overlay-template-master.zip

    6. **配置与定制**:CAS服务器的配置通常包括认证策略(如LDAP、数据库等)、服务定义、主题界面(UI)等。"cas-overlay-template-master"中的文件提供了这些定制的起点,开发者可以修改`src/main/resources`下的...

    cas-server-3.5.2-release.rar

    3.5.2版本可能加强了对这些机制的安全性,并提供了审计日志功能,便于追踪和分析认证行为。 7. **扩展与定制**:CAS的开放源码性质使得开发人员可以根据需求进行扩展和定制,例如添加自定义的认证模块或实现特定的...

    CompTIA CAS-004.pdf

    - **持续监控**:通过持续监控系统的运行状态,及时发现异常活动,并采取相应措施。 - 为了保护客户数据和交易记录,可以采取的具体措施包括: - **数据脱敏**:在不需要原始数据的情况下,对敏感数据进行脱敏...

    SSO单点登录实例

    - **自定义认证逻辑**:根据业务需求,可能需要对接企业内部的AD/LDAP服务器或其他认证源。 - **单点登出(SLO)**:确保用户在一处登出时,所有系统都能同步注销,提高用户体验。 总结来说,SSO单点登录实例是一个...

    根叔的云图-网络故障大排查全套文档

    iMC BIMS组件问题分析.pdf iMC双机冷备方案故障排查.pdf WSM资源管理故障排查.pdf 桌面资产管理故障排查.pdf PLAT iMC APM 数据库管理故障排查.pdf iMC Dbman备份故障排查.pdf iMC license故障排查.pdf ...

    紅皮書c#2008高級編程 最新版

    - 分析了LDAP协议的使用方法。 47. **对等网络(第47章)** - 介绍了P2P网络的基本概念及其应用场景。 - 讨论了如何使用.NET Framework构建P2P应用程序。 - 分析了P2P网络的安全性和稳定性问题。 48. **聚合...

    单点登录需求规格说明书-副本.pdf

    **实现原理**:通常,SSO实现基于票据(Ticket)或令牌(Token)机制,如CAS(Central Authentication Service)协议。用户在认证中心成功验证后,会获得一个安全的票据,之后访问其他应用时,只需要验证这个票据...

    SpringOne-Using Spring Security 2

    - **异常处理**:妥善处理安全相关的异常,避免敏感信息泄露。 - **定期审查**:定期审查安全策略和配置,确保符合最新标准。 - **培训与教育**:对开发人员和相关人员进行安全意识培训。 通过以上内容可以看出,...

    java开源包8

    以运行时异常的方式来管理错误的响应 使用泛型来做强类型编程 多协议扩展支持(REST, RPC, SOAP, etc) Rails3消息队列系统 Sidekiq Sidekiq 为 Rails 3 应用程序提供一个高效的消息队列系统。 Java文件上传组件 ...

    java开源包1

    以运行时异常的方式来管理错误的响应 使用泛型来做强类型编程 多协议扩展支持(REST, RPC, SOAP, etc) Rails3消息队列系统 Sidekiq Sidekiq 为 Rails 3 应用程序提供一个高效的消息队列系统。 Java文件上传组件 ...

    java开源包11

    以运行时异常的方式来管理错误的响应 使用泛型来做强类型编程 多协议扩展支持(REST, RPC, SOAP, etc) Rails3消息队列系统 Sidekiq Sidekiq 为 Rails 3 应用程序提供一个高效的消息队列系统。 Java文件上传组件 ...

    java开源包2

    以运行时异常的方式来管理错误的响应 使用泛型来做强类型编程 多协议扩展支持(REST, RPC, SOAP, etc) Rails3消息队列系统 Sidekiq Sidekiq 为 Rails 3 应用程序提供一个高效的消息队列系统。 Java文件上传组件 ...

    java开源包3

    以运行时异常的方式来管理错误的响应 使用泛型来做强类型编程 多协议扩展支持(REST, RPC, SOAP, etc) Rails3消息队列系统 Sidekiq Sidekiq 为 Rails 3 应用程序提供一个高效的消息队列系统。 Java文件上传组件 ...

    java开源包6

    以运行时异常的方式来管理错误的响应 使用泛型来做强类型编程 多协议扩展支持(REST, RPC, SOAP, etc) Rails3消息队列系统 Sidekiq Sidekiq 为 Rails 3 应用程序提供一个高效的消息队列系统。 Java文件上传组件 ...

    java开源包5

    以运行时异常的方式来管理错误的响应 使用泛型来做强类型编程 多协议扩展支持(REST, RPC, SOAP, etc) Rails3消息队列系统 Sidekiq Sidekiq 为 Rails 3 应用程序提供一个高效的消息队列系统。 Java文件上传组件 ...

    java开源包10

    以运行时异常的方式来管理错误的响应 使用泛型来做强类型编程 多协议扩展支持(REST, RPC, SOAP, etc) Rails3消息队列系统 Sidekiq Sidekiq 为 Rails 3 应用程序提供一个高效的消息队列系统。 Java文件上传组件 ...

    java开源包4

    以运行时异常的方式来管理错误的响应 使用泛型来做强类型编程 多协议扩展支持(REST, RPC, SOAP, etc) Rails3消息队列系统 Sidekiq Sidekiq 为 Rails 3 应用程序提供一个高效的消息队列系统。 Java文件上传组件 ...

    java开源包7

    以运行时异常的方式来管理错误的响应 使用泛型来做强类型编程 多协议扩展支持(REST, RPC, SOAP, etc) Rails3消息队列系统 Sidekiq Sidekiq 为 Rails 3 应用程序提供一个高效的消息队列系统。 Java文件上传组件 ...

    java开源包9

    以运行时异常的方式来管理错误的响应 使用泛型来做强类型编程 多协议扩展支持(REST, RPC, SOAP, etc) Rails3消息队列系统 Sidekiq Sidekiq 为 Rails 3 应用程序提供一个高效的消息队列系统。 Java文件上传组件 ...

Global site tag (gtag.js) - Google Analytics