Sarah, Is it a commercially signed certificate? If not, make sure its in the JVM's cacerts file so that it can trust it. Also, make sure your LDAP server is accepting SSL connections.
-Scott On Jan 14, 2008 6:41 AM, Sara_Abasi <[EMAIL PROTECTED]> wrote: > > Hi > i`m newbie in LDAP with SLL. > My problem is, i connect in server LDAP from my web application and do the > authentication by LDAP with SSL. > when i enter user name and password throws this exception: > > 2008-01-14 15:04:52,074 ERROR > [org.apache.catalina.core.ContainerBase > .[Catalina].[localhost].[/cas].[cas]] > - <Servlet.service() for servlet cas threw exception> > java.io.EOFException: SSL peer shut down incorrectly > at com.sun.net.ssl.internal.ssl.InputRecord.read(InputRecord.java > :333) > at > com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java > :723) > at > com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake( > SSLSocketImpl.java:1030) > at > com.sun.net.ssl.internal.ssl.SSLSocketImpl.writeRecord(SSLSocketImpl.java > :622) > at > com.sun.net.ssl.internal.ssl.AppOutputStream.write(AppOutputStream.java > :59) > at java.io.BufferedOutputStream.flushBuffer( > BufferedOutputStream.java:65) > at java.io.BufferedOutputStream.flush(BufferedOutputStream.java > :123) > at com.sun.jndi.ldap.Connection.writeRequest(Connection.java:390) > at com.sun.jndi.ldap.LdapClient.ldapBind(LdapClient.java:334) > at com.sun.jndi.ldap.LdapClient.authenticate(LdapClient.java:192) > at com.sun.jndi.ldap.LdapCtx.connect(LdapCtx.java:2637) > at com.sun.jndi.ldap.LdapCtx.<init>(LdapCtx.java:283) > at com.sun.jndi.ldap.LdapCtxFactory.getUsingURL(LdapCtxFactory.java > :175) > at com.sun.jndi.ldap.LdapCtxFactory.getUsingURLs( > LdapCtxFactory.java:193) > at > com.sun.jndi.ldap.LdapCtxFactory.getLdapCtxInstance(LdapCtxFactory.java > :136) > at > com.sun.jndi.ldap.LdapCtxFactory.getInitialContext(LdapCtxFactory.java:66) > at javax.naming.spi.NamingManager.getInitialContext( > NamingManager.java:667) > at javax.naming.InitialContext.getDefaultInitCtx( > InitialContext.java:247) > at javax.naming.InitialContext.init(InitialContext.java:223) > at javax.naming.ldap.InitialLdapContext.<init>( > InitialLdapContext.java:134) > at > org.springframework.ldap.support.LdapContextSource.getDirContextInstance( > LdapContextSource.java:59) > at > org.springframework.ldap.support.AbstractContextSource.createContext( > AbstractContextSource.java:193) > at > org.springframework.ldap.support.AbstractContextSource.getReadOnlyContext( > AbstractContextSource.java:104) > at org.springframework.ldap.LdapTemplate.search(LdapTemplate.java > :263) > at org.springframework.ldap.LdapTemplate.search(LdapTemplate.java > :314) > at > > org.jasig.cas.adaptors.ldap.BindLdapAuthenticationHandler.authenticateUsernamePasswordInternal > (BindLdapAuthenticationHandler.java:70) > at > > org.jasig.cas.authentication.handler.support.AbstractUsernamePasswordAuthenticationHandler.authenticate > (AbstractUsernamePasswordAuthenticationHandler.java:58) > at > org.jasig.cas.authentication.AuthenticationManagerImpl.authenticate( > AuthenticationManagerImpl.java:79) > at > org.jasig.cas.CentralAuthenticationServiceImpl.createTicketGrantingTicket( > CentralAuthenticationServiceImpl.java:282) > at > org.jasig.cas.web.flow.AuthenticationViaFormAction.submit( > AuthenticationViaFormAction.java:116) > 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:585) > at > org.springframework.webflow.util.DispatchMethodInvoker.invoke( > DispatchMethodInvoker.java:103) > at > org.springframework.webflow.action.MultiAction.doExecute(MultiAction.java > :136) > at > org.springframework.webflow.action.AbstractAction.execute( > AbstractAction.java:203) > at > org.springframework.webflow.engine.AnnotatedAction.execute( > AnnotatedAction.java:142) > at > org.springframework.webflow.engine.ActionExecutor.execute( > ActionExecutor.java:61) > at > org.springframework.webflow.engine.ActionState.doEnter(ActionState.java > :180) > at org.springframework.webflow.engine.State.enter(State.java:200) > at > org.springframework.webflow.engine.Transition.execute(Transition.java:229) > at > org.springframework.webflow.engine.TransitionableState.onEvent( > TransitionableState.java:112) > at org.springframework.webflow.engine.Flow.onEvent(Flow.java:572) > at > > org.springframework.webflow.engine.impl.RequestControlContextImpl.signalEvent > (RequestControlContextImpl.java:207) > at > org.springframework.webflow.engine.ActionState.doEnter(ActionState.java > :185) > at org.springframework.webflow.engine.State.enter(State.java:200) > at > org.springframework.webflow.engine.Transition.execute(Transition.java:229) > at > org.springframework.webflow.engine.TransitionableState.onEvent( > TransitionableState.java:112) > at org.springframework.webflow.engine.Flow.onEvent(Flow.java:572) > at > > org.springframework.webflow.engine.impl.RequestControlContextImpl.signalEvent > (RequestControlContextImpl.java:207) > at > org.springframework.webflow.engine.impl.FlowExecutionImpl.signalEvent( > FlowExecutionImpl.java:214) > at > org.springframework.webflow.executor.FlowExecutorImpl.resume( > FlowExecutorImpl.java:238) > at > > org.springframework.webflow.executor.support.FlowRequestHandler.handleFlowRequest > (FlowRequestHandler.java:115) > at > > org.springframework.webflow.executor.mvc.FlowController.handleRequestInternal > (FlowController.java:170) > at > org.springframework.web.servlet.mvc.AbstractController.handleRequest( > AbstractController.java:153) > at > org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle( > SimpleControllerHandlerAdapter.java:48) > at > org.springframework.web.servlet.DispatcherServlet.doDispatch( > DispatcherServlet.java:819) > at > org.springframework.web.servlet.DispatcherServlet.doService( > DispatcherServlet.java:754) > at > org.springframework.web.servlet.FrameworkServlet.processRequest( > FrameworkServlet.java:399) > at > org.springframework.web.servlet.FrameworkServlet.doPost( > FrameworkServlet.java:364) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:710) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:803) > at > org.jasig.cas.web.init.SafeDispatcherServlet.service( > SafeDispatcherServlet.java:115) > at > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter( > ApplicationFilterChain.java:269) > at > org.apache.catalina.core.ApplicationFilterChain.doFilter( > ApplicationFilterChain.java:188) > at > org.apache.catalina.core.StandardWrapperValve.invoke( > StandardWrapperValve.java:210) > at > org.apache.catalina.core.StandardContextValve.invoke( > StandardContextValve.java:174) > at > org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java > :127) > at > org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java > :117) > at > org.apache.catalina.core.StandardEngineValve.invoke( > StandardEngineValve.java:108) > at > org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java > :151) > at > org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:870) > at > > org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection > (Http11BaseProtocol.java:665) > at > org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket( > PoolTcpEndpoint.java:528) > at > org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt( > LeaderFollowerWorkerThread.java:81) > at > org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run( > ThreadPool.java:685) > at java.lang.Thread.run(Thread.java:595) > > this is my deployConfigContext.xml > > <?xml version="1.0" encoding="UTF-8"?> > <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" > "http://www.springframework.org/dtd/spring-beans.dtd"> > <!-- > | deployerConfigContext.xml centralizes into one file some of the > declarative configuration that > | all CAS deployers will need to modify. > | > | This file declares some of the Spring-managed JavaBeans that make > up a > CAS deployment. > | The beans declared in this file are instantiated at context > initialization time by the Spring > | ContextLoaderListener declared in web.xml. It finds this file > because > this > | file is among those declared in the context parameter > "contextConfigLocation". > | > | By far the most common change you will need to make in this file > is to > change the last bean > | declaration to replace the default > SimpleTestUsernamePasswordAuthenticationHandler with > | one implementing your approach for authenticating usernames and > passwords. > +--> > <beans> > > <!-- > | This bean declares our AuthenticationManager. The > CentralAuthenticationService service bean > | declared in applicationContext.xml picks up this > AuthenticationManager > by reference to its id, > | "authenticationManager". Most deployers will be able to > use the default > AuthenticationManager > | implementation and so do not need to change the class of > this bean. We > include the whole > | AuthenticationManager here in the userConfigContext.xmlso > that you can > see the things you will > | need to change in context. > +--> > <bean id="authenticationManager" > class=" > org.jasig.cas.authentication.AuthenticationManagerImpl"> > <!-- > | This is the List of > CredentialToPrincipalResolvers that identify what > Principal is trying to authenticate. > | The AuthenticationManagerImpl considers them in > order, finding a > CredentialToPrincipalResolver which > | supports the presented credentials. > | > | AuthenticationManagerImpl uses these resolvers > for two purposes. > First, it uses them to identify the Principal > | attempting to authenticate to CAS /login . In > the default > configuration, it is the DefaultCredentialsToPrincipalResolver > | that fills this role. If you are using some > other kind of credentials > than UsernamePasswordCredentials, you will need to replace > | DefaultCredentialsToPrincipalResolver with a > CredentialsToPrincipalResolver that supports the credentials you are > | using. > | > | Second, AuthenticationManagerImpl uses these > resolvers to identify a > service requesting a proxy granting ticket. > | In the default configuration, it is the > HttpBasedServiceCredentialsToPrincipalResolver that serves this purpose. > | You will need to change this list if you are > identifying services by > something more or other than their callback URL. > +--> > <property name="credentialsToPrincipalResolvers"> > <list> > <!-- > | > UsernamePasswordCredentialsToPrincipalResolver supports the > UsernamePasswordCredentials that we use for /login > | by default and produces > SimplePrincipal instances conveying the > username from the credentials. > | > | If you've changed your > LoginFormAction to use credentials other than > UsernamePasswordCredentials then you will also > | need to change this bean > declaration (or add additional declarations) > to declare a CredentialsToPrincipalResolver that supports the > | Credentials you are using. > +--> > <bean > > class=" > org.jasig.cas.authentication.principal.UsernamePasswordCredentialsToPrincipalResolver > " > /> > <!-- > | > HttpBasedServiceCredentialsToPrincipalResolver supports > HttpBasedCredentials. It supports the CAS 2.0 approach of > | authenticating services by SSL > callback, extracting the callback URL > from the Credentials and representing it as a > | SimpleService identified by that > callback URL. > | > | If you are representing services > by something more or other than an > HTTPS URL whereat they are able to > | receive a proxy callback, you > will need to change this bean > declaration (or add additional declarations). > +--> > <bean > > class=" > org.jasig.cas.authentication.principal.HttpBasedServiceCredentialsToPrincipalResolver > " > /> > </list> > </property> > > <!-- > | Whereas CredentialsToPrincipalResolvers identify > who it is some > Credentials might authenticate, > | AuthenticationHandlers actually authenticate > credentials. Here we > declare the AuthenticationHandlers that > | authenticate the Principals that the > CredentialsToPrincipalResolvers > identified. CAS will try these handlers in turn > | until it finds one that both supports the > Credentials presented and > succeeds in authenticating. > +--> > <property name="authenticationHandlers"> > <list> > <!-- > | This is the authentication > handler that authenticates services by > means of callback via SSL, thereby validating > | a server side SSL certificate. > +--> > <bean > > class=" > org.jasig.cas.authentication.handler.support.HttpBasedServiceCredentialsAuthenticationHandler > "> > <property > name="httpClient" > ref="httpClient" /> > </bean> > > <!-- > | This is the authentication > handler declaration that every CAS > deployer will need to change before deploying CAS > | into production. The default > SimpleTestUsernamePasswordAuthenticationHandler authenticates > UsernamePasswordCredentials > | where the username equals the > password. You will need to replace > this with an AuthenticationHandler that implements your > | local authentication strategy. > You might accomplish this by coding a > new such handler and declaring > | > edu.someschool.its.cas.MySpecialHandler here, or you might use one of > the handlers provided in the adaptors modules. > +--> > > > <bean > class="org.jasig.cas.adaptors.ldap.BindLdapAuthenticationHandler"> > <property name="filter" > value="uid=%u" /> > <property name="searchBase" > value="cn=Users,dc=z,dc=z" /> > <property name="contextSource" > ref="contextSource" /> > <property name="ignorePartialResultException" > value="yes" /> > </bean> > </list> > </property> > </bean> > <bean id="contextSource" > class="org.jasig.cas.adaptors.ldap.util.AuthenticatedLdapContextSource"> > <property name="password" value="{11111}"/> > <property name="pooled" value="true" /> > <property name="urls"> > <list> > <value>ldaps://irisad.net/</value> > </list> > </property> > <property name="userName" value="{cn=aa,cn=Users,dc=z,dc=z}"/> > <property name="baseEnvironmentProperties"> > <map> > <entry> > <key> > <value>java.naming.security.protocol</value> > </key> > <value>ssl</value> > </entry> > <entry> > <key> > <value>java.naming.security.authentication</value> > </key> > <value>simple</value> > </entry> > <entry> > <key> > <value>java.naming.referral</value> > </key> > <value>follow</value> > </entry> > </map> > </property> > </bean> > </beans> > > thanks. > -- > View this message in context: > http://www.nabble.com/SSLHandshakeException-when-try-connect-LDAP-tp14799522p14799522.html > Sent from the CAS Users mailing list archive at Nabble.com. > > _______________________________________________ > Yale CAS mailing list > [email protected] > http://tp.its.yale.edu/mailman/listinfo/cas > -- -Scott Battaglia LinkedIn: http://www.linkedin.com/in/scottbattaglia
_______________________________________________ Yale CAS mailing list [email protected] http://tp.its.yale.edu/mailman/listinfo/cas
