<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[OAuth2-Logout im Drittsystem: Wie kann auch die ChurchTools-Session beendet werden?]]></title><description><![CDATA[<h2>Ausgangssituation</h2>
<p dir="auto">Die Integration von ChurchTools als OAuth2-Provider in eine Spring-Boot-Anwendung ist insofern gelungen, als dass der OAuth2-Login funktioniert, der OAuth2-Logout jedoch nicht wie erwartet:</p>
<ul>
<li>Beim Login wird der Browser zu ChurchTools weitergeleitet.</li>
<li>Nach erfolgreicher Anmeldung erhält meine Anwendung den Authorization Code und tauscht ihn gegen einen Access Token.</li>
<li>Gleichzeitig besteht anschließend im Browser eine gültige ChurchTools-Session.</li>
<li>Öffne ich ChurchTools in einem zweiten Tab desselben Browser-Fensters, bin ich dort ebenfalls angemeldet.</li>
<li>Beim Logout beendet meine Anwendung ihre lokale Spring-Session und entfernt den gespeicherten OAuth2 Authorized Client.</li>
<li><strong>Fehler</strong> Die ChurchTools-Session im Browser bleibt jedoch bestehen.</li>
<li><strong>Fehlverhalten</strong> Ein erneuter OAuth2-Login meldet den Nutzer deshalb ohne erneute Eingabe seiner Zugangsdaten sofort wieder an.</li>
</ul>
<h2>Erprobte Ansätze</h2>
<ul>
<li>Das Entfernen des lokalen OAuth2 Authorized Client beendet erwartungsgemäß nur die Sitzung meiner Anwendung.</li>
<li><code>POST /api/logout</code> mit dem OAuth2-Access-Token als Bearer liefert <code>401 Unauthorized</code>.</li>
<li><code>POST /api/logout</code> mit dem Header <code>Authorization: Login &lt;OAuth2-Access-Token&gt;</code> liefert ebenfalls <code>401 Unauthorized</code>. Offenbar ist ein ChurchTools-Login-Token nicht mit einem OAuth2-Access-Token gleichzusetzen.</li>
<li>Der Aufruf  <code>HTTP GET https://&lt;instanz&gt;.church.tools/?q=logout</code> invalidiert die ChurchTools-Session erfolgreich, wenn er als Top-Level-Navigation im Browser erfolgt. Danach landet der Nutzer allerdings auf der ChurchTools-Loginseite und nicht wieder in der aufrufenden Anwendung.</li>
<li>Derselbe Aufruf über ein verstecktes iframe ist keine belastbare Lösung. Der Request wird zwar ausgeführt, der ChurchTools-Session-Cookie kann im Third-Party-Kontext aber durch <code>SameSite</code>- beziehungsweise Browser-Schutzmechanismen unterdrückt werden.</li>
<li>Ein separates Browserfenster funktioniert technisch, führt jedoch zu einer schlechten und nicht akzeptablen Benutzerführung.</li>
<li>Der Aufruf über Swagger funktioniert, weil Swagger unter der ChurchTools-Domain läuft und deshalb den vorhandenen ChurchTools-Session-Cookie mitsenden kann.</li>
</ul>
<h2>Gewünschtes Verhalten</h2>
<p dir="auto">Nach dem Logout in der Drittanwendung soll folgender Ablauf möglich sein:</p>
<ol>
<li>Die lokale Sitzung der Anwendung wird beendet.</li>
<li>Die ChurchTools-Session wird über einen offiziell unterstützten Logout-Flow invalidiert.</li>
<li>Der Browser wird anschließend zu einer registrierten URL der Anwendung zurückgeleitet.</li>
<li>Der Nutzer sieht wieder die Login-Seite der aufrufenden Anwendung.</li>
</ol>
<h2>Vorschlag</h2>
<p dir="auto">Hilfreich wäre ein OAuth2-/OIDC-kompatibler Front-Channel-Logout-Endpunkt, beispielsweise mit:</p>
<ul>
<li>einer registrierten <code>post_logout_redirect_uri</code>,</li>
<li>optionalem <code>state</code> zum sicheren Fortsetzen des Ablaufs,</li>
<li>Unterstützung für Public Clients ohne Client Secret,</li>
<li>eindeutiger Dokumentation, welcher Token beziehungsweise welche Browser-Session beendet wird,</li>
<li>Validierung der Rücksprung-URL gegen die registrierten Redirect-URIs.</li>
</ul>
<p dir="auto">Sinngemäß beispielsweise: <code>HTTP GET /oauth2/logout?post_logout_redirect_uri=https://example.org/login&amp;state=...</code>. Die ChurchTools-Session könnte dabei über den Browser-Cookie identifiziert und anschließend zur erlaubten Rücksprung-URL weitergeleitet werden. Ein Access Token sollte dabei nicht über die URL übertragen werden.</p>
<h2>Fragen</h2>
<ul>
<li>Welcher Request-Flow ist für den Logout eines über ChurchTools angemeldeten OAuth2-Nutzers vorgesehen?</li>
<li>Gibt es bereits einen dokumentierten Front-Channel-Logout mit Rücksprung-URL?</li>
<li>Kann <code>/​?q=logout</code> eine validierte Rücksprung-URL erhalten?</li>
<li>Gibt es alternativ einen Token-Revocation- oder Backchannel-Logout-Endpunkt, der auch die zugehörige ChurchTools-Browser-Session beendet?</li>
<li>Wie soll dieser Flow bei einem Public Client ohne Client Secret umgesetzt werden?</li>
</ul>
]]></description><link>https://forum.church.tools/topic/11988/oauth2-logout-im-drittsystem-wie-kann-auch-die-churchtools-session-beendet-werden</link><generator>RSS for Node</generator><lastBuildDate>Thu, 30 Jul 2026 22:09:32 GMT</lastBuildDate><atom:link href="https://forum.church.tools/topic/11988.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 30 Jul 2026 19:54:24 GMT</pubDate><ttl>60</ttl></channel></rss>