Hi,

I'm the maintainer of the TLS client auth plugin, and I'm trying to move it 
to the new authorization plugin model, but I'm having some difficulty doing 
so. I think I've implemented what I need, but Go gives me an error when I 
try to log in:

No AuthenticationProvider found for 
com.thoughtworks.go.server.security.tokens.PreAuthenticatedAuthenticationToken 
Help Topic: Authentication 
<https://docs.gocd.org/current/configuration/dev_authentication.html#common-errors>

Which I'm not sure how to debug. I also get an error in my logs which I'll 
include below

The approach I'm taking is:

* Do it as a web plugin
* Put Go behind Apache which terminates SSL and adds headers corresponding 
to the subject and verification status of the client certificate
* Instead of using the URL of an external provider, it redirects directly 
to the Go app 
(https://github.com/cnorthwood/gocd-tls-auth/blob/master/src/main/java/uk/me/cjn/gocd_tls_auth/TlsAuthorizationPlugin.java#L135),
 
and then uses the headers Apache has added to get the "tokens" 
(https://github.com/cnorthwood/gocd-tls-auth/blob/master/src/main/java/uk/me/cjn/gocd_tls_auth/TlsAuthorizationPlugin.java#L122)
* Parse the certificate detail in the headers to get the user 
info: 
https://github.com/cnorthwood/gocd-tls-auth/blob/master/src/main/java/uk/me/cjn/gocd_tls_auth/TlsAuthorizationPlugin.java#L162

If anyone can help me debug that error, or figure out where in my workflow 
I'm falling down, that'd be useful.

Thanks,

Chris Northwood

2017-07-06 10:30:23,195 ERROR [qtp1177096266-26] 
BasicAuthenticationFilter:62 - java.lang.IllegalStateException: Committed

2017-07-06 10:30:23,195  WARN [qtp1177096266-26] ServletHandler:628 - 
/go/plugin/tls-auth/login

java.lang.IllegalStateException: Committed

at org.eclipse.jetty.server.Response.resetBuffer(Response.java:1242)

at 
javax.servlet.ServletResponseWrapper.resetBuffer(ServletResponseWrapper.java:241)

at 
org.eclipse.jetty.servlets.gzip.CompressedResponseWrapper.resetBuffer(CompressedResponseWrapper.java:272)

at 
org.eclipse.jetty.servlets.gzip.CompressedResponseWrapper.sendRedirect(CompressedResponseWrapper.java:308)

at 
javax.servlet.http.HttpServletResponseWrapper.sendRedirect(HttpServletResponseWrapper.java:176)

at 
org.springframework.security.context.HttpSessionContextIntegrationFilter$OnRedirectUpdateSessionResponseWrapper.sendRedirect(HttpSessionContextIntegrationFilter.java:507)

at 
com.thoughtworks.go.server.security.BasicAuthenticationFilter.handleException(BasicAuthenticationFilter.java:76)

at 
com.thoughtworks.go.server.security.BasicAuthenticationFilter.doFilterHttp(BasicAuthenticationFilter.java:64)

at 
org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)

at 
org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:371)

at 
org.springframework.security.ui.AbstractProcessingFilter.doFilterHttp(AbstractProcessingFilter.java:271)

at 
org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)

at 
org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:371)

at 
com.thoughtworks.go.server.security.WebBasedAuthenticationFilter.doFilterHttp(WebBasedAuthenticationFilter.java:57)

at 
org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)

at 
org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:371)

at 
com.thoughtworks.go.server.security.OauthAuthenticationFilter.doFilterHttp(OauthAuthenticationFilter.java:65)

at 
org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)

at 
org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:371)

at 
org.springframework.security.ui.AbstractProcessingFilter.doFilterHttp(AbstractProcessingFilter.java:271)

at 
org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)

at 
org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:371)

at 
com.thoughtworks.go.server.security.RemoveAdminPermissionFilter.doFilterHttp(RemoveAdminPermissionFilter.java:72)

at 
org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)

at 
org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:371)

at 
org.springframework.security.ui.logout.LogoutFilter.doFilterHttp(LogoutFilter.java:89)

at 
com.thoughtworks.go.server.security.GoLogoutFilter.doFilterHttp(GoLogoutFilter.java:48)

at 
org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)

at 
org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:371)

at 
org.springframework.security.context.HttpSessionContextIntegrationFilter.doFilterHttp(HttpSessionContextIntegrationFilter.java:235)

at 
org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)

at 
org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:371)

at 
com.thoughtworks.go.server.web.i18n.LocaleResolver.doFilter(LocaleResolver.java:41)

at 
org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:371)

at 
com.thoughtworks.go.server.security.ModeAwareFilter.doFilter(ModeAwareFilter.java:48)

at 
org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:371)

at 
org.springframework.security.util.FilterChainProxy.doFilter(FilterChainProxy.java:174)

at 
org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)

at 
org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:259)

at 
org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)

at 
com.thoughtworks.go.server.web.BackupFilter.doFilter(BackupFilter.java:84)

at 
org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)

at 
com.thoughtworks.go.server.web.DefaultHeadersFilter.doFilter(DefaultHeadersFilter.java:34)

at 
org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)

at 
org.eclipse.jetty.servlets.UserAgentFilter.doFilter(UserAgentFilter.java:83)

at org.eclipse.jetty.servlets.GzipFilter.doFilter(GzipFilter.java:365)

at 
org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)

at 
org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:585)

at 
org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)

at 
org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:577)

at 
org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:223)

at 
org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127)

at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515)

at 
org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)

at 
org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061)

at 
org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)

at 
org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:110)

at 
org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)

at org.eclipse.jetty.server.Server.handle(Server.java:499)

at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:311)

at 
org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:257)

at 
org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:544)

at 
org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635)

at 
org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555)

at java.lang.Thread.run(Thread.java:748)

2017-07-06 10:30:23,196  WARN [qtp1177096266-26] HttpChannel:396 - 
/go/plugin/tls-auth/login

java.lang.IllegalStateException: Committed

at org.eclipse.jetty.server.Response.resetBuffer(Response.java:1242)

at 
javax.servlet.ServletResponseWrapper.resetBuffer(ServletResponseWrapper.java:241)

at 
org.eclipse.jetty.servlets.gzip.CompressedResponseWrapper.resetBuffer(CompressedResponseWrapper.java:272)

at 
org.eclipse.jetty.servlets.gzip.CompressedResponseWrapper.sendRedirect(CompressedResponseWrapper.java:308)

at 
javax.servlet.http.HttpServletResponseWrapper.sendRedirect(HttpServletResponseWrapper.java:176)

at 
org.springframework.security.context.HttpSessionContextIntegrationFilter$OnRedirectUpdateSessionResponseWrapper.sendRedirect(HttpSessionContextIntegrationFilter.java:507)

at 
com.thoughtworks.go.server.security.BasicAuthenticationFilter.handleException(BasicAuthenticationFilter.java:76)

at 
com.thoughtworks.go.server.security.BasicAuthenticationFilter.doFilterHttp(BasicAuthenticationFilter.java:64)

at 
org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)

at 
org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:371)

at 
org.springframework.security.ui.AbstractProcessingFilter.doFilterHttp(AbstractProcessingFilter.java:271)

at 
org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)

at 
org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:371)

at 
com.thoughtworks.go.server.security.WebBasedAuthenticationFilter.doFilterHttp(WebBasedAuthenticationFilter.java:57)

at 
org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)

at 
org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:371)

at 
com.thoughtworks.go.server.security.OauthAuthenticationFilter.doFilterHttp(OauthAuthenticationFilter.java:65)

at 
org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)

at 
org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:371)

at 
org.springframework.security.ui.AbstractProcessingFilter.doFilterHttp(AbstractProcessingFilter.java:271)

at 
org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)

at 
org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:371)

at 
com.thoughtworks.go.server.security.RemoveAdminPermissionFilter.doFilterHttp(RemoveAdminPermissionFilter.java:72)

at 
org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)

at 
org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:371)

at 
org.springframework.security.ui.logout.LogoutFilter.doFilterHttp(LogoutFilter.java:89)

at 
com.thoughtworks.go.server.security.GoLogoutFilter.doFilterHttp(GoLogoutFilter.java:48)

at 
org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)

at 
org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:371)

at 
org.springframework.security.context.HttpSessionContextIntegrationFilter.doFilterHttp(HttpSessionContextIntegrationFilter.java:235)

at 
org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)

at 
org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:371)

at 
com.thoughtworks.go.server.web.i18n.LocaleResolver.doFilter(LocaleResolver.java:41)

at 
org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:371)

at 
com.thoughtworks.go.server.security.ModeAwareFilter.doFilter(ModeAwareFilter.java:48)

at 
org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:371)

at 
org.springframework.security.util.FilterChainProxy.doFilter(FilterChainProxy.java:174)

at 
org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)

at 
org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:259)

at 
org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)

at 
com.thoughtworks.go.server.web.BackupFilter.doFilter(BackupFilter.java:84)

at 
org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)

at 
com.thoughtworks.go.server.web.DefaultHeadersFilter.doFilter(DefaultHeadersFilter.java:34)

at 
org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)

at 
org.eclipse.jetty.servlets.UserAgentFilter.doFilter(UserAgentFilter.java:83)

at org.eclipse.jetty.servlets.GzipFilter.doFilter(GzipFilter.java:365)

at 
org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)

at 
org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:585)

at 
org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)

at 
org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:577)

at 
org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:223)

at 
org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127)

at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515)

at 
org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)

at 
org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061)

at 
org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)

at 
org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:110)

at 
org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)

at org.eclipse.jetty.server.Server.handle(Server.java:499)

at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:311)

at 
org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:257)

at 
org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:544)

at 
org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635)

at 
org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555)

at java.lang.Thread.run(Thread.java:748)

2017-07-06 10:30:23,196  WARN [qtp1177096266-26] HttpChannel:482 - Could 
not send response error 500: java.lang.IllegalStateException: Committed

-- 
You received this message because you are subscribed to the Google Groups 
"go-cd" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to