NullPointerException in getURLScheme()
Scott Battaglia
scott.battaglia at gmail.com
Thu Jul 17 13:55:46 EDT 2008
is your {$hostname} being resolved correctly? Should it be ${hostname} ?
-Scott
-Scott Battaglia
PGP Public Key Id: 0x383733AA
LinkedIn: http://www.linkedin.com/in/scottbattaglia
On Thu, Jul 17, 2008 at 1:45 PM, Phil Snyder <psnyder at nextwave.com> wrote:
> Hi guys… I've been getting this error and for the life of me I don't know
> what to do to fix it. L
>
>
>
>
>
> java.lang.NullPointerException
>
> javax.naming.InitialContext.getURLScheme(Unknown Source)
>
> javax.naming.InitialContext.getURLOrDefaultInitCtx(Unknown Source)
>
> javax.naming.directory.InitialDirContext.getURLOrDefaultInitDirCtx(Unknown Source)
>
> javax.naming.directory.InitialDirContext.search(Unknown Source)
>
> org.jasig.cas.adaptors.ldap.BindLdapAuthenticationHandler$1.executeSearch(BindLdapAuthenticationHandler.java:70)
>
> org.springframework.ldap.core.LdapTemplate.search(LdapTemplate.java:272)
>
> org.springframework.ldap.core.LdapTemplate.search(LdapTemplate.java:338)
>
> org.jasig.cas.adaptors.ldap.BindLdapAuthenticationHandler.authenticateUsernamePasswordInternal(BindLdapAuthenticationHandler.java:66)
>
> org.jasig.cas.authentication.handler.support.AbstractUsernamePasswordAuthenticationHandler.doAuthentication(AbstractUsernamePasswordAuthenticationHandler.java:56)
>
> org.jasig.cas.authentication.handler.support.AbstractPreAndPostProcessingAuthenticationHandler.authenticate(AbstractPreAndPostProcessingAuthenticationHandler.java:71)
>
> org.jasig.cas.authentication.AuthenticationManagerImpl.authenticate(AuthenticationManagerImpl.java:88)
>
> org.jasig.cas.CentralAuthenticationServiceImpl.createTicketGrantingTicket(CentralAuthenticationServiceImpl.java:411)
>
> org.jasig.cas.web.flow.AuthenticationViaFormAction.submit(AuthenticationViaFormAction.java:107)
>
> sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>
> sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
>
> sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
>
> java.lang.reflect.Method.invoke(Unknown Source)
>
> org.springframework.webflow.util.DispatchMethodInvoker.invoke(DispatchMethodInvoker.java:99)
>
> org.springframework.webflow.action.MultiAction.doExecute(MultiAction.java:133)
>
> org.springframework.webflow.action.AbstractAction.execute(AbstractAction.java:192)
>
> org.springframework.webflow.engine.AnnotatedAction.execute(AnnotatedAction.java:146)
>
> org.springframework.webflow.engine.ActionExecutor.execute(ActionExecutor.java:59)
>
> org.springframework.webflow.engine.ActionState.doEnter(ActionState.java:156)
>
> org.springframework.webflow.engine.State.enter(State.java:191)
>
> org.springframework.webflow.engine.Transition.execute(Transition.java:212)
>
> org.springframework.webflow.engine.TransitionableState.onEvent(TransitionableState.java:107)
>
> org.springframework.webflow.engine.Flow.onEvent(Flow.java:534)
>
> org.springframework.webflow.engine.impl.RequestControlContextImpl.signalEvent(RequestControlContextImpl.java:205)
>
> org.springframework.webflow.engine.ActionState.doEnter(ActionState.java:161)
>
> org.springframework.webflow.engine.State.enter(State.java:191)
>
> org.springframework.webflow.engine.Transition.execute(Transition.java:212)
>
> org.springframework.webflow.engine.TransitionableState.onEvent(TransitionableState.java:107)
>
> org.springframework.webflow.engine.Flow.onEvent(Flow.java:534)
>
> org.springframework.webflow.engine.impl.RequestControlContextImpl.signalEvent(RequestControlContextImpl.java:205)
>
> org.springframework.webflow.engine.impl.FlowExecutionImpl.signalEvent(FlowExecutionImpl.java:202)
>
> org.springframework.webflow.executor.FlowExecutorImpl.resume(FlowExecutorImpl.java:222)
>
> org.springframework.webflow.executor.support.FlowRequestHandler.handleFlowRequest(FlowRequestHandler.java:111)
>
> org.springframework.webflow.executor.mvc.FlowController.handleRequestInternal(FlowController.java:165)
>
> 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:875)
>
> org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:809)
>
> org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:476)
>
> org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:441)
>
> javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
>
> javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
>
> org.jasig.cas.web.init.SafeDispatcherServlet.service(SafeDispatcherServlet.java:115)
>
> org.inspektr.common.web.ClientInfoThreadLocalFilter.doFilterInternal(ClientInfoThreadLocalFilter.java:48)
>
> org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:75)
>
>
>
>
>
>
>
> I have my deployerConfigContext.xml setup correctly as far as I can tell:
>
>
>
>
>
> <?xml version="1.0" encoding="UTF-8"?>
>
> <!--
>
> | 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 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">
>
> <!--
>
> | 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.xml so 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"
>
>
> p:httpClient-ref="httpClient" />
>
> <!--
>
> | 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.authentication.handler.support.SimpleTestUsernamePasswordAuthenticationHandler"
> />
>
> <!--
>
> <bean
> class="org.jasig.cas.adaptors.ldap.BindLdapAuthenticationHandler" >
>
> <property
> name="filter" value="sAMAccountName=%u" />
>
> <property
> name="contextSource" ref="contextSource" />
>
> </bean>
>
> <!--
>
> <bean
> class="org.jasig.cas.adaptors.ldap.FastBindLdapAuthenticationHandler" >
>
> <property
> name="filter" value="sAMAccountName=%u" />
>
> <property
> name="contextSource" ref="contextSource" />
>
> </bean>
>
> -->
>
> </list>
>
> </property>
>
> </bean>
>
>
>
>
>
>
>
>
>
> <!--
>
> This bean defines the security roles for the Services
> Management application. Simple deployments can use the in-memory version.
>
> More robust deployments will want to use another option, such
> as the Jdbc version.
>
>
>
> The name of this should remain "userDetailsService" in order
> for Acegi to find it.
>
>
>
> To use this, you should add an entry similar to the following
> between the two value tags:
>
> battags=notused,ROLE_ADMIN
>
>
>
> where battags is the username you want to grant access to. You
> can put one entry per line.
>
> -->
>
> <bean id="userDetailsService"
> class="org.acegisecurity.userdetails.memory.InMemoryDaoImpl">
>
> <property name="userMap">
>
> <value>
>
>
>
> </value>
>
> </property>
>
> </bean>
>
>
>
> <!--
>
> Bean that defines the attributes that a service may return.
> This example uses the Stub/Mock version. A real implementation
>
> may go against a database or LDAP server. The id should remain
> "attributeRepository" though.
>
> -->
>
> <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>
>
>
>
> <!--
>
> Sample, in-memory data store for the ServiceRegistry. A real
> implementation
>
> would probably want to replace this with the JPA-backed
> ServiceRegistry DAO
>
> The name of this bean should remain "serviceRegistryDao".
>
> -->
>
> <bean
>
> id="serviceRegistryDao"
>
>
> class="org.jasig.cas.services.InMemoryServiceRegistryDaoImpl" />
>
>
>
>
>
>
>
>
>
> <!--
>
> This is supposed to define how / where to connect to the AD
> server
>
> -->
>
> <bean id="contextSource"
> class="org.jasig.cas.adaptors.ldap.util.AuthenticatedLdapContextSource">
>
> <property name="urls">
>
> <list>
>
>
> <value>ldap://{$hostname}:3268/</value>
>
> </list>
>
> </property>
>
> <property name="userName" value="{$username}"/>
>
> <property name="password" value="{$password}"/>
>
> <property name="baseEnvironmentProperties">
>
> <map>
>
> <entry>
>
> <key>
>
>
> <value>java.naming.security.authentication</value>
>
> </key>
>
>
> <value>simple</value>
>
> </entry>
>
> </map>
>
> </property>
>
> </bean>
>
>
>
>
>
> <bean
> class="org.jasig.cas.adaptors.ldap.BindLdapAuthenticationHandler">
>
> <property name="filter"
> value="sAMAccountName=%u" />
>
> <property name="searchBase"
> value="OU=Users,OU=Accounts,OU=CA1,OU=Offices,OU=Corporate,DC=nw,DC=net" />
>
> <property name="contextSource"
> ref="contextSource" />
>
> <property name="ignorePartialResultException"
> value="yes" />
>
> </bean>
>
> </beans>
>
>
>
>
>
>
>
>
>
>
>
>
>
> I've tried CAS 3.2.1 & 3.2.1.1 and both give me the same error. Can anyone
> help? I read somewhere that it might have to do with the searchBase not
> getting passed in correctly or something, but that didn't reall
>
> _______________________________________________
> Yale CAS mailing list
> cas at tp.its.yale.edu
> http://tp.its.yale.edu/mailman/listinfo/cas
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://tp.its.yale.edu/pipermail/cas/attachments/20080717/943762a4/attachment.html
More information about the cas
mailing list