cas management crash adding OAUTH2 or OIDC Service

43 views
Skip to first unread message

Iain Workman

unread,
Jun 23, 2017, 6:02:54 PM6/23/17
to CAS Community
I have a cas management portal setup which connects to a mysql database to store its services. This seems to be working correctly for adding CAS Client services correctly, but fails if I attempt to add an OAuth2 or OIDC service.

Submitting the for through the user interface with either of these causes the server to immediately crash, with the following stack trace:

cas          | 2017-06-23 21:37:16,873 ERROR [org.springframework.scheduling.support.TaskUtils$LoggingErrorHandler] - <Unexpected error occurred in scheduled task.>
cas          | java.lang.ArrayIndexOutOfBoundsException: 2367
cas          | at com.mysql.cj.mysqla.MysqlaUtils.bitToLong(MysqlaUtils.java:68) ~[mysql-connector-java-6.0.3.jar:6.0.3]
cas          | at com.mysql.cj.core.io.MysqlTextValueDecoder.decodeBit(MysqlTextValueDecoder.java:237) ~[mysql-connector-java-6.0.3.jar:6.0.3]
cas          | at com.mysql.cj.mysqla.result.ResultSetRow.decodeAndCreateReturnValue(ResultSetRow.java:131) ~[mysql-connector-java-6.0.3.jar:6.0.3]
cas          | at com.mysql.cj.mysqla.result.ResultSetRow.getValueFromBytes(ResultSetRow.java:229) ~[mysql-connector-java-6.0.3.jar:6.0.3]
cas          | at com.mysql.cj.mysqla.result.TextBufferRow.getValue(TextBufferRow.java:122) ~[mysql-connector-java-6.0.3.jar:6.0.3]
cas          | at com.mysql.cj.jdbc.result.ResultSetImpl.getNonStringValueFromRow(ResultSetImpl.java:704) ~[mysql-connector-java-6.0.3.jar:6.0.3]
cas          | at com.mysql.cj.jdbc.result.ResultSetImpl.getBoolean(ResultSetImpl.java:795) ~[mysql-connector-java-6.0.3.jar:6.0.3]
cas          | at com.mysql.cj.jdbc.result.ResultSetImpl.getBoolean(ResultSetImpl.java:799) ~[mysql-connector-java-6.0.3.jar:6.0.3]
cas          | at com.zaxxer.hikari.pool.HikariProxyResultSet.getBoolean(HikariProxyResultSet.java) ~[HikariCP-2.6.1.jar:?]
cas          | at org.hibernate.type.descriptor.sql.BooleanTypeDescriptor$2.doExtract(BooleanTypeDescriptor.java:59) ~[hibernate-core-5.2.10.Final.jar:5.2.10.Final]
cas          | at org.hibernate.type.descriptor.sql.BasicExtractor.extract(BasicExtractor.java:47) ~[hibernate-core-5.2.10.Final.jar:5.2.10.Final]
cas          | at org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:260) ~[hibernate-core-5.2.10.Final.jar:5.2.10.Final]
cas          | at org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:256) ~[hibernate-core-5.2.10.Final.jar:5.2.10.Final]
cas          | at org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:246) ~[hibernate-core-5.2.10.Final.jar:5.2.10.Final]
cas          | at org.hibernate.type.AbstractStandardBasicType.hydrate(AbstractStandardBasicType.java:332) ~[hibernate-core-5.2.10.Final.jar:5.2.10.Final]
cas          | at org.hibernate.persister.entity.AbstractEntityPersister.hydrate(AbstractEntityPersister.java:2844) ~[hibernate-core-5.2.10.Final.jar:5.2.10.Final]
cas          | at org.hibernate.loader.Loader.loadFromResultSet(Loader.java:1741) ~[hibernate-core-5.2.10.Final.jar:5.2.10.Final]
cas          | at org.hibernate.loader.Loader.instanceNotYetLoaded(Loader.java:1667) ~[hibernate-core-5.2.10.Final.jar:5.2.10.Final]
cas          | at org.hibernate.loader.Loader.getRow(Loader.java:1556) ~[hibernate-core-5.2.10.Final.jar:5.2.10.Final]
cas          | at org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:740) ~[hibernate-core-5.2.10.Final.jar:5.2.10.Final]
cas          | at org.hibernate.loader.Loader.processResultSet(Loader.java:985) ~[hibernate-core-5.2.10.Final.jar:5.2.10.Final]
cas          | at org.hibernate.loader.Loader.doQuery(Loader.java:943) ~[hibernate-core-5.2.10.Final.jar:5.2.10.Final]
cas          | at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:349) ~[hibernate-core-5.2.10.Final.jar:5.2.10.Final]
cas          | at org.hibernate.loader.Loader.doList(Loader.java:2615) ~[hibernate-core-5.2.10.Final.jar:5.2.10.Final]
cas          | at org.hibernate.loader.Loader.doList(Loader.java:2598) ~[hibernate-core-5.2.10.Final.jar:5.2.10.Final]
cas          | at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2430) ~[hibernate-core-5.2.10.Final.jar:5.2.10.Final]
cas          | at org.hibernate.loader.Loader.list(Loader.java:2425) ~[hibernate-core-5.2.10.Final.jar:5.2.10.Final]
cas          | at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:502) ~[hibernate-core-5.2.10.Final.jar:5.2.10.Final]
cas          | at org.hibernate.hql.internal.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:379) ~[hibernate-core-5.2.10.Final.jar:5.2.10.Final]
cas          | at org.hibernate.engine.query.spi.HQLQueryPlan.performList(HQLQueryPlan.java:216) ~[hibernate-core-5.2.10.Final.jar:5.2.10.Final]
cas          | at org.hibernate.internal.SessionImpl.list(SessionImpl.java:1488) ~[hibernate-core-5.2.10.Final.jar:5.2.10.Final]
cas          | at org.hibernate.query.internal.AbstractProducedQuery.doList(AbstractProducedQuery.java:1445) ~[hibernate-core-5.2.10.Final.jar:5.2.10.Final]
cas          | at org.hibernate.query.internal.AbstractProducedQuery.list(AbstractProducedQuery.java:1414) ~[hibernate-core-5.2.10.Final.jar:5.2.10.Final]
cas          | at org.hibernate.query.Query.getResultList(Query.java:146) ~[hibernate-core-5.2.10.Final.jar:5.2.10.Final]
cas          | at org.apereo.cas.services.JpaServiceRegistryDaoImpl.load(JpaServiceRegistryDaoImpl.java:38) ~[cas-server-support-jpa-service-registry-5.1.0.jar:5.1.0]
cas          | at org.apereo.cas.services.JpaServiceRegistryDaoImpl$$FastClassBySpringCGLIB$$fcd53dc2.invoke(<generated>) ~[cas-server-support-jpa-service-registry-5.1.0.jar:5.1.0]
cas          | at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204) ~[spring-core-4.3.8.RELEASE.jar:4.3.8.RELEASE]
cas          | at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:738) ~[spring-aop-4.3.8.RELEASE.jar:4.3.8.RELEASE]
cas          | at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157) ~[spring-aop-4.3.8.RELEASE.jar:4.3.8.RELEASE]
cas          | at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:99) ~[spring-tx-4.3.8.RELEASE.jar:4.3.8.RELEASE]
cas          | at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:282) ~[spring-tx-4.3.8.RELEASE.jar:4.3.8.RELEASE]
cas          | at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96) ~[spring-tx-4.3.8.RELEASE.jar:4.3.8.RELEASE]
cas          | at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) ~[spring-aop-4.3.8.RELEASE.jar:4.3.8.RELEASE]
cas          | at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:673) ~[spring-aop-4.3.8.RELEASE.jar:4.3.8.RELEASE]
cas          | at org.apereo.cas.services.JpaServiceRegistryDaoImpl$$EnhancerBySpringCGLIB$$6707f85d.load(<generated>) ~[cas-server-support-jpa-service-registry-5.1.0.jar:5.1.0]
cas          | at org.apereo.cas.services.DefaultServicesManager.load(DefaultServicesManager.java:142) ~[cas-server-core-services-5.1.0.jar:5.1.0]
cas          | at org.apereo.cas.services.DefaultServicesManager$$FastClassBySpringCGLIB$$1a4890a7.invoke(<generated>) ~[cas-server-core-services-5.1.0.jar:5.1.0]
cas          | at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204) ~[spring-core-4.3.8.RELEASE.jar:4.3.8.RELEASE]
cas          | at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:738) ~[spring-aop-4.3.8.RELEASE.jar:4.3.8.RELEASE]
cas          | at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157) ~[spring-aop-4.3.8.RELEASE.jar:4.3.8.RELEASE]
cas          | at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:92) ~[spring-aop-4.3.8.RELEASE.jar:4.3.8.RELEASE]
cas          | at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) ~[spring-aop-4.3.8.RELEASE.jar:4.3.8.RELEASE]
cas          | at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:673) ~[spring-aop-4.3.8.RELEASE.jar:4.3.8.RELEASE]
cas          | at org.apereo.cas.services.DefaultServicesManager$$EnhancerBySpringCGLIB$$e571bb4.load(<generated>) ~[cas-server-core-services-5.1.0.jar:5.1.0]
cas          | at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_131]
cas          | at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_131]
cas          | at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_131]
cas          | at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_131]
cas          | at org.springframework.scheduling.support.ScheduledMethodRunnable.run(ScheduledMethodRunnable.java:65) ~[spring-context-4.3.8.RELEASE.jar:4.3.8.RELEASE]
cas          | at org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:54) [spring-context-4.3.8.RELEASE.jar:4.3.8.RELEASE]
cas          | at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:1.8.0_131]
cas          | at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308) [?:1.8.0_131]
cas          | at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180) [?:1.8.0_131]
cas          | at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294) [?:1.8.0_131]
cas          | at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [?:1.8.0_131]
cas          | at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [?:1.8.0_131]
cas          | at java.lang.Thread.run(Thread.java:748) [?:1.8.0_131]

If I examine the database at this point, two entries will have been added in the RegexRegisteredService table.

Restarting the server will cause it to crash again once it attempts to load the new records until I log into the database manually and delete them.

management.propertied confd file is as follows:
[management.properties]

# CAS server that management app will authenticate with
cas.server.prefix: https://{{getv "/cas/hostname"}}
cas.server.name: https://{{getv "/cas/hostname"}}

cas.mgmt.adminRoles=ROLE_ADMIN
cas.mgmt.userPropertiesFile=file:/etc/cas/config/users.properties
cas.mgmt.serverName=https://{{getv "/cas/hostname"}}

spring.thymeleaf.mode=HTML
logging.config=file:/etc/cas/config/log4j2-management.xml

# Service Registry Settings
cas.serviceRegistry.jpa.healthQuery: SELECT 1 FROM INFORMATION_SCHEMA.TABLES
cas.serviceRegistry.jpa.url: jdbc:mysql://database:3306/cas_services
cas.serviceRegistry.jpa.driverClass: com.mysql.cj.jdbc.Driver
cas.serviceRegistry.jpa.user: cas
cas.serviceRegistry.jpa.dialect: org.hibernate.dialect.MySQL5Dialect
cas.serviceRegistry.jpa.password: {{getv "/service/registry/jpa/password"}}
cas.serviceRegistry.jpa.ddlAuto: none


Reply all
Reply to author
Forward
0 new messages