grails-spring-security-core
grails-spring-security-core copied to clipboard
NullPointerException with 6.0.0-SNAPSHOT and Grails 7
I get the following NPE when using grails-spring-security-cas 6.0.0-SNAPSHOT with Grails 7.0.0-M1:
java.lang.NullPointerException: Cannot execute null+null
at org.codehaus.groovy.runtime.NullObject.plus(NullObject.java:162)
at org.codehaus.groovy.vmplugin.v8.IndyInterface.fromCache(IndyInterface.java:321)
at grails.plugin.springsecurity.cas.SpringSecurityCasGrailsPlugin$_doWithSpring_closure1$_closure4.doCall(SpringSecurityCasGrailsPlugin.groovy:102)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:343)
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:328)
at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:279)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1007)
at groovy.lang.Closure.call(Closure.java:433)
at grails.spring.BeanBuilder.invokeBeanDefiningMethod(BeanBuilder.java:708)
at grails.spring.BeanBuilder.invokeMethod(BeanBuilder.java:565)
at org.codehaus.groovy.runtime.InvokerHelper.invokePogoMethod(InvokerHelper.java:651)
at org.codehaus.groovy.runtime.InvokerHelper.invokeMethod(InvokerHelper.java:628)
at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeOnDelegationObjects(ClosureMetaClass.java:405)
at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:328)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1007)
at org.codehaus.groovy.vmplugin.v8.IndyInterface.fromCache(IndyInterface.java:321)
at grails.plugin.springsecurity.cas.SpringSecurityCasGrailsPlugin$_doWithSpring_closure1.doCall(SpringSecurityCasGrailsPlugin.groovy:100)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:343)
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:328)
at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:279)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1007)
at groovy.lang.Closure.call(Closure.java:433)
at groovy.lang.Closure.call(Closure.java:412)
at grails.spring.BeanBuilder.invokeBeanDefiningClosure(BeanBuilder.java:759)
at grails.spring.BeanBuilder.beans(BeanBuilder.java:588)
at grails.spring.BeanBuilder.invokeMethod(BeanBuilder.java:531)
It looks like this is coming from grails.plugin.springsecurity.cas.SpringSecurityCasGrailsPlugin
I am running into the same issue
@dylankolson please retry with 7.0.0-SNAPSHOT versions of both.
@jamesfredley same issue with 7.0.0-SNAPSHOT
@spmcewen @dylankolson do either of you have time to submit a PR against the 7.0.x branch?
@bkoehm Do you have familiarity with this area? If you do, do you have any input?
@jamesfredley @dylankolson
Looking at SpringSecurityCasGrailsPlugin.groovy:102 from commit 8e231d677b4b762e7777a2a228ef398817aff9b5, this line is:
loginUrl = conf.cas.serverUrlPrefix + conf.cas.loginUri
Looks like maybe the CAS configuration is not available?
Try something like this:
grails {
plugin {
springsecurity {
cas {
loginUri = '/login'
serviceUrl = "${grails.serverURL}/login/cas"
serverUrlPrefix = 'https://YOUR.CAS.SERVER.HERE/cas'
}
logout {
// redirect location when someone logs out
afterLogoutUrl = "${grails.plugin.springsecurity.cas.serverUrlPrefix}/logout?service=${grails.serverURL}/"
}
}
}
}
It's possible the documentation needs to be updated and it also looks like we need some configuration checks to throw a more useful error when the mandatory configuration items are missing.
Closed by #1164