-
Notifications
You must be signed in to change notification settings - Fork 6
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Sso token login #2
base: master
Are you sure you want to change the base?
Conversation
Hey Jen, I'm trying out your PR, and I'm getting a weird error. To reproduce: git clone [email protected]:moitcl/moqui-framework moitcl
cd moitcl
git checkout ssoTokenLogin
gradle getRu
gradle dOS
cd runtime/component
git clone [email protected]:moitcl/moqui-sso
cd moqui-sso
git checkout ssoTokenLogin
cd ../../..
gradle build
java -jar moqui.war In a new terminal curl --request GET \
--url http://localhost:8080/elastic \
--header 'Accept: application/json' \
--header 'sso_access_token: test' \
--header 'sso_auth_flow: test' Error: java.lang.NullPointerException: Cannot get property 'request' on null object
at org.codehaus.groovy.runtime.NullObject.getProperty(NullObject.java:60) ~[moqui_temp5021397272041375576WEB-INF_lib_groovy-3.0.19.jar.:3.0.19]
at org.codehaus.groovy.runtime.InvokerHelper.getProperty(InvokerHelper.java:190) ~[moqui_temp5021397272041375576WEB-INF_lib_groovy-3.0.19.jar.:3.0.19]
at org.codehaus.groovy.runtime.callsite.NullCallSite.getProperty(NullCallSite.java:46) ~[moqui_temp5021397272041375576WEB-INF_lib_groovy-3.0.19.jar.:3.0.19]
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callGetProperty(AbstractCallSite.java:329) ~[moqui_temp5021397272041375576WEB-INF_lib_groovy-3.0.19.jar.:3.0.19]
at org.moqui.sso.AuthenticationFlow.handleSwtLogin(AuthenticationFlow.groovy:159) ~[?:?]
at org.moqui.sso.AuthenticationFlow$handleSwtLogin.call(Unknown Source) ~[?:?]
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47) ~[moqui_temp5021397272041375576WEB-INF_lib_groovy-3.0.19.jar.:3.0.19]
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:125) ~[moqui_temp5021397272041375576WEB-INF_lib_groovy-3.0.19.jar.:3.0.19]
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:157) ~[moqui_temp5021397272041375576WEB-INF_lib_groovy-3.0.19.jar.:3.0.19]
at org.moqui.sso.MoquiSsoToolFactory$SsoTokenLoginHandler.handleSsoLoginToken(MoquiSsoToolFactory.groovy:40) ~[?:?]
at org.moqui.impl.context.UserFacadeImpl.loginSsoToken(UserFacadeImpl.groovy:820) ~[moqui_temp14531228715189972516WEB-INF_lib_moqui-framework-3.1.0-rc2.jar.:3.1.0-rc2]
at org.moqui.impl.context.UserFacadeImpl.initFromHttpRequest(UserFacadeImpl.groovy:182) ~[moqui_temp14531228715189972516WEB-INF_lib_moqui-framework-3.1.0-rc2.jar.:3.1.0-rc2]
at org.moqui.impl.webapp.MoquiAuthFilter.doFilter(MoquiAuthFilter.groovy:73) ~[moqui_temp14531228715189972516WEB-INF_lib_moqui-framework-3.1.0-rc2.jar.:3.1.0-rc2]
at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:202) ~[moqui_temp5426060402739373031execlib_jetty-servlet-10.0.18.jar.:10.0.18]
at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1635) ~[moqui_temp5426060402739373031execlib_jetty-servlet-10.0.18.jar.:10.0.18]
at org.moqui.impl.webapp.ElasticRequestLogFilter.doFilter(ElasticRequestLogFilter.groovy:110) ~[moqui_temp14531228715189972516WEB-INF_lib_moqui-framework-3.1.0-rc2.jar.:3.1.0-rc2]
at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:202) ~[moqui_temp5426060402739373031execlib_jetty-servlet-10.0.18.jar.:10.0.18]
at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1635) ~[moqui_temp5426060402739373031execlib_jetty-servlet-10.0.18.jar.:10.0.18]
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:527) ~[moqui_temp5426060402739373031execlib_jetty-servlet-10.0.18.jar.:10.0.18]
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:131) ~[moqui_temp963966538828119435execlib_jetty-server-10.0.18.jar.:10.0.18]
at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:598) ~[moqui_temp7348991605109757695execlib_jetty-security-10.0.18.jar.:10.0.18]
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:122) ~[moqui_temp963966538828119435execlib_jetty-server-10.0.18.jar.:10.0.18]
at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:223) ~[moqui_temp963966538828119435execlib_jetty-server-10.0.18.jar.:10.0.18]
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1570) ~[moqui_temp963966538828119435execlib_jetty-server-10.0.18.jar.:10.0.18]
at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:221) ~[moqui_temp963966538828119435execlib_jetty-server-10.0.18.jar.:10.0.18]
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1384) ~[moqui_temp963966538828119435execlib_jetty-server-10.0.18.jar.:10.0.18]
at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:176) ~[moqui_temp963966538828119435execlib_jetty-server-10.0.18.jar.:10.0.18]
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:484) ~[moqui_temp5426060402739373031execlib_jetty-servlet-10.0.18.jar.:10.0.18]
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1543) ~[moqui_temp963966538828119435execlib_jetty-server-10.0.18.jar.:10.0.18]
at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:174) ~[moqui_temp963966538828119435execlib_jetty-server-10.0.18.jar.:10.0.18]
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1306) ~[moqui_temp963966538828119435execlib_jetty-server-10.0.18.jar.:10.0.18]
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:129) ~[moqui_temp963966538828119435execlib_jetty-server-10.0.18.jar.:10.0.18]
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:122) ~[moqui_temp963966538828119435execlib_jetty-server-10.0.18.jar.:10.0.18]
at org.eclipse.jetty.server.handler.gzip.GzipHandler.handle(GzipHandler.java:822) ~[moqui_temp963966538828119435execlib_jetty-server-10.0.18.jar.:10.0.18]
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:122) ~[moqui_temp963966538828119435execlib_jetty-server-10.0.18.jar.:10.0.18]
at org.eclipse.jetty.server.Server.handle(Server.java:563) ~[moqui_temp963966538828119435execlib_jetty-server-10.0.18.jar.:10.0.18]
at org.eclipse.jetty.server.HttpChannel$RequestDispatchable.dispatch(HttpChannel.java:1598) ~[moqui_temp963966538828119435execlib_jetty-server-10.0.18.jar.:10.0.18]
at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:753) ~[moqui_temp963966538828119435execlib_jetty-server-10.0.18.jar.:10.0.18]
at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:501) [moqui_temp963966538828119435execlib_jetty-server-10.0.18.jar.:10.0.18]
at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:287) [moqui_temp963966538828119435execlib_jetty-server-10.0.18.jar.:10.0.18]
at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:314) [moqui_temp11843110039074065919WEB-INF_lib_jetty-io-10.0.18.jar.:10.0.18]
at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:100) [moqui_temp11843110039074065919WEB-INF_lib_jetty-io-10.0.18.jar.:10.0.18]
at org.eclipse.jetty.io.SelectableChannelEndPoint$1.run(SelectableChannelEndPoint.java:53) [moqui_temp11843110039074065919WEB-INF_lib_jetty-io-10.0.18.jar.:10.0.18]
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:969) [moqui_temp3280285341581410624WEB-INF_lib_jetty-util-10.0.18.jar.:10.0.18]
at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.doRunJob(QueuedThreadPool.java:1194) [moqui_temp3280285341581410624WEB-INF_lib_jetty-util-10.0.18.jar.:10.0.18]
at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1149) [moqui_temp3280285341581410624WEB-INF_lib_jetty-util-10.0.18.jar.:10.0.18]
at java.lang.Thread.run(Thread.java:829) [?:?] If I log ec.web at the beginning of handleSwtLogin, I get This could be that the curl request is wrong, but my guess is something with how handleSwtLogin is passed in an What do you think? |
The error you mention seems to be because the URL is handled through the ElasticSearchProxy servlet and not the WebFacade. So, in this case the WebFacade is really null. |
So, there is a fix that avoids making the call dependent on the Web Facade to be instantiated. It takes the necessary data directly from the HTTP request. The changes involve both repositories, moqui-sso and moqui-framework (moqui/moqui-framework#638) |
I've looked through this code, and it looks good to me. My main question is how I would test this feature with keycloak or other auth providers. It's also worth checking the security implications of this. There was a problem with generating an api_key or sessionToken endpoint's security and this is introducing a similar process except the token is generated by a third party |
Add capability to log into the system by using a login_token issued by a known identity provider (like Keycloak or another OpenId capable system), fetching user data from identity provider as specified by the registered mappings. Requires changes in Framework (moqui/moqui-framework#638).