Hi, I don’t know much about xwiki and oauth2 but by googling I’ve found this extension that seems to be doing that: http://extensions.xwiki.org/xwiki/bin/view/Extension/XWiki%20Application%20-%20Google%20Apps
It says: "This integration uses the OAuth2 protocol to connect Google Apps with XWiki.” Maybe that could help you. See https://github.com/xwiki-contrib/application-googleapps/blob/master/src/main/resources/GoogleApps/AuthService.xml Thanks -Vincent > On 28 Apr 2017, at 17:37, gfinesch <gfine...@eng.it> wrote: > > I'm integrating Xwiki with OAuth2. I managed to login but now I'm struggling > with logging out from the server when I click on 'logout' in Xwiki. This is > the code snippet that performs the redirection to the server to logout from > it: > > else if ("logout".equals(context.getAction()) > && wrappedRequest.getUserPrincipal() != null) { > // redirect to the OAuth2 logout page > wrappedRequest.setUserPrincipal(null); > > try { > context.getResponse().sendRedirect( > configuration.getOAuth2Param( > > LOGOUT_URL.replace(".", "_"), LOGOUT_URL, > "logouturl", > context)); > } catch (IOException e) { > throw new > XWikiException(XWikiException.MODULE_XWIKI_USER, > > XWikiException.ERROR_XWIKI_USER_INIT, > "Can't redirect to the OAuth2 > logout page", e); > } > return null; > > } > I wrote a XWikiOAuth2Authenticator class that extends XWikiAuthServiceImpl > and overrides checkAuth. > > The code works since I get redirected to LOGOUT_URL but I also get the > following stacktrace due to the calling of other Xwiki classes out of my > control: > > 2017-04-28 17:05:31,155 > [http://localhost:8080/xwiki/bin/logout/XWiki/XWikiLogout?xredirect=%2Fxwiki%2Fbin%2Fview%2FMain > %2F] WARN c.x.x.w.XWikiAction - Uncaught exception: Error number > 0 in 11: Uncaught exception > com.xpn.xwiki.XWikiException: Error number 0 in 11: Uncaught exception > at com.xpn.xwiki.web.XWikiAction.execute(XWikiAction.java:474) > at com.xpn.xwiki.web.XWikiAction.execute(XWikiAction.java:210) > at > org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:425) > at > org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:228) > at > org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913) > at > org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:449) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:624) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:731) > at > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) > at > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) > at com.xpn.xwiki.web.ActionFilter.doFilter(ActionFilter.java:112) > at > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) > at > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) > at > org.xwiki.wysiwyg.server.filter.ConversionFilter.doFilter(ConversionFilter.java:127) > at > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) > at > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) > at > org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) > at > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) > at > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) > at > org.xwiki.container.servlet.filters.internal.SetHTTPHeaderFilter.doFilter(SetHTTPHeaderFilter.java:63) > at > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) > at > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) > at > org.xwiki.container.servlet.filters.internal.SavedRequestRestorerFilter.doFilter(SavedRequestRestorerFilter.j > ava:208) > at > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) > at > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) > at > org.xwiki.container.servlet.filters.internal.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.j > ava:111) > at > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) > at > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) > at > org.xwiki.resource.servlet.RoutingFilter.doFilter(RoutingFilter.java:136) > at > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) > at > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) > at > org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220) > at > org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122) > at > org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505) > at > org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170) > at > org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) > at > org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:957) > at > org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) > at > org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:423) > at > org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1079) > at > org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:620) > at > org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.doRun(AprEndpoint.java:2476) > at > org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:2465) > at > java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) > at > org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) > at java.lang.Thread.run(Thread.java:745) > Caused by: java.lang.IllegalStateException: Cannot create a session after > the response has been committed > at > org.apache.catalina.connector.Request.doGetSession(Request.java:3008) > at > org.apache.catalina.connector.Request.getSession(Request.java:2384) > at > org.apache.catalina.connector.RequestFacade.getSession(RequestFacade.java:897) > at > javax.servlet.http.HttpServletRequestWrapper.getSession(HttpServletRequestWrapper.java:229) > at > javax.servlet.http.HttpServletRequestWrapper.getSession(HttpServletRequestWrapper.java:229) > at com.xpn.xwiki.web.LogoutAction.action(LogoutAction.java:57) > at com.xpn.xwiki.web.XWikiAction.execute(XWikiAction.java:446) > ... 46 common frames omitted > > I'm obviously doing something wrong and I couldn't find an example of how to > logout from a server. What's the correct way and where is the correct place > to do that? Or...how can I avoid this exception? Thank you. > > > > > > > > -- > View this message in context: > http://xwiki.475771.n2.nabble.com/OAuth2-Logout-tp7603692.html > Sent from the XWiki- Users mailing list archive at Nabble.com.