GluuFederation / oxTrust

Gluu Server UI for managing authentication, authorization and users.

Home Page:https://gluu.org/docs/ce

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Can't add TR while providing metadata via URI if it's long enough

aliaksander-samuseu opened this issue · comments

Description

In Gluu CE with MySQL used for persistence, a new TR with metadata provided as uri is rejected if oxTrust considers the uri "too long"

Steps To Reproduce

  1. Move to "SAML" > "Trust Relationships" and click "Add Relationship" button
  2. Select "Single SP" for type and URI for metadata location
  3. Use next uri: https://idp-apacreg-qa.amwayglobal.com/app/exkpcnsdl1k42B8YW0h7/sso/saml/metadata
  4. Click "Add" button

Expected behavior

A new TR is created and validation is started

Actual behavior

An "Failed to add new relationship" pop-up error appears on the page, and next trace is logged to oxtrust.log:

2023-08-31 17:52:01,291 ERROR [qtp982757413-14] [org.gluu.oxtrust.action.UpdateTrustRelationshipAction] (UpdateTrustRelationshipAction.java:454) - Failed to add new trust relationship e8e0aeb4-9259-49e2-a8c9-d9c7e8cce6d8
org.gluu.persist.exception.EntryPersistenceException: Failed to persist entry: 'inum=e8e0aeb4-9259-49e2-a8c9-d9c7e8cce6d8,ou=trustRelationships,o=gluu'
	at org.gluu.persist.sql.impl.SqlEntryManager.persist(SqlEntryManager.java:214) ~[gluu-orm-sql-4.5.2.Final.jar:?]
	at org.gluu.persist.impl.BaseEntryManager.persist(BaseEntryManager.java:132) ~[gluu-orm-core-4.5.2.Final.jar:?]
	at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
	at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:?]
	at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
	at java.lang.reflect.Method.invoke(Method.java:566) ~[?:?]
	at org.jboss.weld.bean.proxy.AbstractBeanInstance.invoke(AbstractBeanInstance.java:38) ~[weld-core-impl-3.1.9.Final.jar:3.1.9.Final]
	at org.jboss.weld.bean.proxy.ProxyMethodHandler.invoke(ProxyMethodHandler.java:106) ~[weld-core-impl-3.1.9.Final.jar:3.1.9.Final]
	at org.gluu.persist.PersistenceEntryManager$EntityManager$1037559105$Proxy$_$$_WeldClientProxy.persist(Unknown Source) ~[gluu-orm-core-4.5.2.Final.jar:?]
	at org.gluu.oxtrust.service.TrustService.addTrustRelationship(TrustService.java:82) ~[oxtrust-service-4.5.2.Final.jar:?]
	at org.gluu.oxtrust.service.TrustService$Proxy$_$$_WeldClientProxy.addTrustRelationship(Unknown Source) ~[oxtrust-service-4.5.2.Final.jar:?]
	at org.gluu.oxtrust.action.UpdateTrustRelationshipAction.saveTR(UpdateTrustRelationshipAction.java:651) ~[classes/:?]
	at org.gluu.oxtrust.action.UpdateTrustRelationshipAction.saveImpl(UpdateTrustRelationshipAction.java:452) ~[classes/:?]
	at org.gluu.oxtrust.action.UpdateTrustRelationshipAction$Proxy$_$$_WeldSubclass.saveImpl(Unknown Source) ~[classes/:?]
	at org.gluu.oxtrust.action.UpdateTrustRelationshipAction.save(UpdateTrustRelationshipAction.java:310) ~[classes/:?]
	at org.gluu.oxtrust.action.UpdateTrustRelationshipAction$Proxy$_$$_WeldSubclass.save$$super(Unknown Source) ~[classes/:?]
	at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
	at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:?]
	at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
	at java.lang.reflect.Method.invoke(Method.java:566) ~[?:?]
	at org.jboss.weld.interceptor.proxy.TerminalAroundInvokeInvocationContext.proceedInternal(TerminalAroundInvokeInvocationContext.java:51) ~[weld-core-impl-3.1.9.Final.jar:3.1.9.Final]
	at org.jboss.weld.interceptor.proxy.AroundInvokeInvocationContext.proceed(AroundInvokeInvocationContext.java:78) ~[weld-core-impl-3.1.9.Final.jar:3.1.9.Final]
	at org.gluu.service.security.SecurityInterceptor.invoke(SecurityInterceptor.java:55) ~[security-extension-cdi-4.5.2.Final.jar:?]
	at jdk.internal.reflect.GeneratedMethodAccessor263.invoke(Unknown Source) ~[?:?]
	at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
	at java.lang.reflect.Method.invoke(Method.java:566) ~[?:?]
	at org.jboss.weld.interceptor.reader.SimpleInterceptorInvocation$SimpleMethodInvocation.invoke(SimpleInterceptorInvocation.java:73) ~[weld-core-impl-3.1.9.Final.jar:3.1.9.Final]
	at org.jboss.weld.interceptor.proxy.InterceptorMethodHandler.executeAroundInvoke(InterceptorMethodHandler.java:84) ~[weld-core-impl-3.1.9.Final.jar:3.1.9.Final]
	at org.jboss.weld.interceptor.proxy.InterceptorMethodHandler.executeInterception(InterceptorMethodHandler.java:72) ~[weld-core-impl-3.1.9.Final.jar:3.1.9.Final]
	at org.jboss.weld.interceptor.proxy.InterceptorMethodHandler.invoke(InterceptorMethodHandler.java:56) ~[weld-core-impl-3.1.9.Final.jar:3.1.9.Final]
	at org.jboss.weld.bean.proxy.CombinedInterceptorAndDecoratorStackMethodHandler.invoke(CombinedInterceptorAndDecoratorStackMethodHandler.java:79) ~[weld-core-impl-3.1.9.Final.jar:3.1.9.Final]
	at org.jboss.weld.bean.proxy.CombinedInterceptorAndDecoratorStackMethodHandler.invoke(CombinedInterceptorAndDecoratorStackMethodHandler.java:68) ~[weld-core-impl-3.1.9.Final.jar:3.1.9.Final]
	at org.gluu.oxtrust.action.UpdateTrustRelationshipAction$Proxy$_$$_WeldSubclass.save(Unknown Source) ~[classes/:?]
	at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
	at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:?]
	at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
	at java.lang.reflect.Method.invoke(Method.java:566) ~[?:?]
	at org.apache.el.parser.AstValue.invoke(AstValue.java:246) ~[org.mortbay.jasper.apache-el-9.0.52.jar:9.0.52]
	at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:266) ~[org.mortbay.jasper.apache-el-9.0.52.jar:9.0.52]
	at org.jboss.weld.module.web.util.el.ForwardingMethodExpression.invoke(ForwardingMethodExpression.java:40) ~[weld-web-3.1.9.Final.jar:3.1.9.Final]
	at org.jboss.weld.module.web.el.WeldMethodExpression.invoke(WeldMethodExpression.java:50) ~[weld-web-3.1.9.Final.jar:3.1.9.Final]
	at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:65) ~[jakarta.faces-2.3.18.jar:2.3.18]
	at com.sun.faces.application.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:66) ~[jakarta.faces-2.3.18.jar:2.3.18]
	at com.sun.faces.application.ActionListenerImpl.getNavigationOutcome(ActionListenerImpl.java:82) ~[jakarta.faces-2.3.18.jar:2.3.18]
	at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:71) ~[jakarta.faces-2.3.18.jar:2.3.18]
	at javax.faces.component.UICommand.broadcast(UICommand.java:222) ~[jakarta.faces-2.3.18.jar:2.3.18]
	at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:847) ~[jakarta.faces-2.3.18.jar:2.3.18]
	at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1396) ~[jakarta.faces-2.3.18.jar:2.3.18]
	at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:58) ~[jakarta.faces-2.3.18.jar:2.3.18]
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:76) ~[jakarta.faces-2.3.18.jar:2.3.18]
	at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:177) ~[jakarta.faces-2.3.18.jar:2.3.18]
	at javax.faces.webapp.FacesServlet.executeLifecyle(FacesServlet.java:707) ~[jakarta.faces-2.3.18.jar:2.3.18]
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:451) ~[jakarta.faces-2.3.18.jar:2.3.18]
	at org.eclipse.jetty.servlet.ServletHolder$NotAsync.service(ServletHolder.java:1410) ~[jetty-servlet-10.0.9.jar:10.0.9]
	at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:764) ~[jetty-servlet-10.0.9.jar:10.0.9]
	at org.eclipse.jetty.servlet.ServletHandler$ChainEnd.doFilter(ServletHandler.java:1630) ~[jetty-servlet-10.0.9.jar:10.0.9]
	at org.eclipse.jetty.websocket.servlet.WebSocketUpgradeFilter.doFilter(WebSocketUpgradeFilter.java:170) ~[websocket-servlet-10.0.9.jar:10.0.9]
	at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:202) ~[?:?]
	at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1600) ~[?:?]
	at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:506) ~[?:?]
	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:131) ~[?:?]
	at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:578) ~[?:?]
	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:122) ~[?:?]
	at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:223) ~[?:?]
	at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1571) ~[?:?]
	at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:221) ~[?:?]
	at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1378) ~[?:?]
	at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:176) ~[?:?]
	at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:463) ~[?:?]
	at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1544) ~[?:?]
	at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:174) ~[?:?]
	at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1300) ~[?:?]
	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:129) ~[?:?]
	at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:192) ~[?:?]
	at org.eclipse.jetty.server.handler.HandlerList.handle(HandlerList.java:51) ~[?:?]
	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:122) ~[?:?]
	at org.eclipse.jetty.server.Server.handle(Server.java:562) ~[?:?]
	at org.eclipse.jetty.server.HttpChannel.lambda$handle$0(HttpChannel.java:505) ~[?:?]
	at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:762) ~[?:?]
	at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:497) ~[?:?]
	at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:282) ~[?:?]
	at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:319) ~[?:?]
	at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:100) ~[?:?]
	at org.eclipse.jetty.io.SelectableChannelEndPoint$1.run(SelectableChannelEndPoint.java:53) ~[?:?]
	at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.runTask(AdaptiveExecutionStrategy.java:412) ~[?:?]
	at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.consumeTask(AdaptiveExecutionStrategy.java:381) ~[?:?]
	at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.tryProduce(AdaptiveExecutionStrategy.java:268) ~[?:?]
	at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.lambda$new$0(AdaptiveExecutionStrategy.java:138) ~[?:?]
	at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:407) ~[?:?]
	at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:894) ~[?:?]
	at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1038) ~[?:?]
	at java.lang.Thread.run(Thread.java:829) ~[?:?]
Caused by: org.gluu.persist.exception.operation.PersistenceException: Failed to add entry
	at org.gluu.persist.sql.operation.impl.SqlOperationServiceImpl.addEntryImpl(SqlOperationServiceImpl.java:212) ~[gluu-orm-sql-4.5.2.Final.jar:?]
	at org.gluu.persist.sql.operation.impl.SqlOperationServiceImpl.addEntry(SqlOperationServiceImpl.java:176) ~[gluu-orm-sql-4.5.2.Final.jar:?]
	at org.gluu.persist.sql.impl.SqlEntryManager.persist(SqlEntryManager.java:209) ~[gluu-orm-sql-4.5.2.Final.jar:?]
	... 91 more
Caused by: com.querydsl.core.QueryException: Caught MysqlDataTruncation for insert into gluudb.gluuSAMLconfig (description, displayName, gluuEntityType, gluuProfileConfiguration, gluuSpecificRelyingPartyConfig, inum, gluuSAMLmaxRefreshDelay, o, gluuReleasedAttribute, oxAuthPostLogoutRedirectURI, gluuSAMLspMetaDataFN, gluuSAMLspMetaDataSourceType, gluuSAMLspMetaDataURL, gluuStatus, objectClass, dn, doc_id)
values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
	at com.querydsl.sql.DefaultSQLExceptionTranslator.translate(DefaultSQLExceptionTranslator.java:50) ~[querydsl-sql-5.0.0.jar:?]
	at com.querydsl.sql.Configuration.translate(Configuration.java:507) ~[querydsl-sql-5.0.0.jar:?]
	at com.querydsl.sql.dml.AbstractSQLInsertClause.execute(AbstractSQLInsertClause.java:429) ~[querydsl-sql-5.0.0.jar:?]
	at org.gluu.persist.sql.operation.impl.SqlOperationServiceImpl.addEntryImpl(SqlOperationServiceImpl.java:208) ~[gluu-orm-sql-4.5.2.Final.jar:?]
	at org.gluu.persist.sql.operation.impl.SqlOperationServiceImpl.addEntry(SqlOperationServiceImpl.java:176) ~[gluu-orm-sql-4.5.2.Final.jar:?]
	at org.gluu.persist.sql.impl.SqlEntryManager.persist(SqlEntryManager.java:209) ~[gluu-orm-sql-4.5.2.Final.jar:?]
	... 91 more
Caused by: com.mysql.cj.jdbc.exceptions.MysqlDataTruncation: Data truncation: Data too long for column 'gluuSAMLspMetaDataURL' at row 1
	at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:104) ~[mysql-connector-j-8.0.32.jar:8.0.32]
	at com.mysql.cj.jdbc.ClientPreparedStatement.executeInternal(ClientPreparedStatement.java:916) ~[mysql-connector-j-8.0.32.jar:8.0.32]
	at com.mysql.cj.jdbc.ClientPreparedStatement.executeUpdateInternal(ClientPreparedStatement.java:1061) ~[mysql-connector-j-8.0.32.jar:8.0.32]
	at com.mysql.cj.jdbc.ClientPreparedStatement.executeUpdateInternal(ClientPreparedStatement.java:1009) ~[mysql-connector-j-8.0.32.jar:8.0.32]
	at com.mysql.cj.jdbc.ClientPreparedStatement.executeLargeUpdate(ClientPreparedStatement.java:1320) ~[mysql-connector-j-8.0.32.jar:8.0.32]
	at com.mysql.cj.jdbc.ClientPreparedStatement.executeUpdate(ClientPreparedStatement.java:994) ~[mysql-connector-j-8.0.32.jar:8.0.32]
	at org.apache.commons.dbcp2.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:136) ~[commons-dbcp2-2.9.0.jar:2.9.0]
	at org.apache.commons.dbcp2.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:136) ~[commons-dbcp2-2.9.0.jar:2.9.0]
	at com.querydsl.sql.dml.AbstractSQLInsertClause.execute(AbstractSQLInsertClause.java:407) ~[querydsl-sql-5.0.0.jar:?]
	at org.gluu.persist.sql.operation.impl.SqlOperationServiceImpl.addEntryImpl(SqlOperationServiceImpl.java:208) ~[gluu-orm-sql-4.5.2.Final.jar:?]
	at org.gluu.persist.sql.operation.impl.SqlOperationServiceImpl.addEntry(SqlOperationServiceImpl.java:176) ~[gluu-orm-sql-4.5.2.Final.jar:?]
	at org.gluu.persist.sql.impl.SqlEntryManager.persist(SqlEntryManager.java:209) ~[gluu-orm-sql-4.5.2.Final.jar:?]
	... 91 more

@devrimyatar please increase the sql length for the field gluuSAMLspMetaDataURL