Unsere kleinen Helferlein: Automatische Backend-Logins mit OAuth 2.0

Im TYPO3-Umfeld ist das Rechtemanagement durchaus eine Herausforderung. Die meisten Kunden haben verschiedenste Mitarbeitergruppen, die alle unterschiedliche Zugriffsrechte im Backend bekommen sollen. Zusätzlich müssen auch unsere Entwickler einen Blick ins Backend werfen können – meist benötigen sie einen Administratorzugang, um Extensions zu konfigurieren, auf Fehlersuche zu gehen oder – ganz allgemein – die Installation zu betreuen. Kommen dann auch noch Entwicklungssysteme hinzu, so wird das Ganze schnell komplex und muss aufwändig betreut werden.

Wer darf denn überhaupt ins Backend?

… Denn, seit die DSGVO in Kraft getreten ist, muss man sich frühzeitig Gedanken machen, wer überhaupt einen Backendzugang bekommen darf. Viele Agenturen, wir bildeten da keine Ausnahme, haben daher dem gesamten Entwicklerteam Zugriff auf alle TYPO3-Installationen gegeben, ungeachtet dessen, ob der jeweilige Kollege überhaupt an dem Projekt mitarbeitet oder nicht. Nach der aktuellen Rechtslage müsste das aber hinterfragt werden. Ideal wäre es, wenn nur diejenigen Mitarbeiter Zugriff bekämen, die auch aktiv an dem Projekt mitarbeiten. TYPO3 müsste also wissen, welche Entwickler am Projekt arbeiten und entsprechende Backendaccounts anlegen – idealerweise automatisch. Außerdem muss es Accounts schließen, sobald der Kollege an dem Projekt dauerhaft nicht mehr arbeitet.

Backend-Logins für alle Entwickler

Nun verwendet die MFC seit einiger Zeit GitLab als Git-basiertes Quellcodeverwaltungssystem. Alle Projekte werden über dieses System gemanaged und Entwickler haben entsprechend zu ihren jeweiligen Projekten Zugriff.

Seit Version 7.7 kann GitLab als OAuth-2.0-Provider arbeiten. OAuth ist ein Protokoll, mit dem Anwendungen für die Steuerung von Accounts und Berechtigungen auf andere Anwendungen zurückgreifen können. Der Durchschnittsnutzer kennt es z. B. von den „Login mit Facebook“- oder „Login mit Twitter“-Buttons, die überall im Internet zu finden sind. Alle diese Dienste benutzen OAuth, um es dem Nutzer zu ersparen, sich noch einmal separat registrieren zu müssen.

Im TYPO3-Extension-Repository (TER) gibt es nun etliche Extensions, die OAuth integrieren. Fast alle tun dies jedoch zunächst für Frontend-Logins, also für Seitennutzer; im Backendbereich ist offensichtlich noch niemand auf die Idee gekommen, generische OAuth-basierte Logins anzubieten. Der Grund hierfür ist, dass es ja nicht genügt, den Nutzer nur „hereinzulassen“ (Authentifizierung). Man muss auch festlegen, welche Berechtigungen der Nutzer hat (Autorisierung). Aus diesem Grund ist ein Backend-Login via Facebook, Twitter o. Ä., obgleich technisch zwar möglich, aber nicht sinnvoll.

In Verbindung mit Diensten wie GitHub, BitBucket oder eben GitLab sieht das jedoch anders aus. Denn hierbei kann man die Berechtigungen einfach an das koppeln, was der jeweilige Nutzer in einem dort gehosteten Softwareprojekt machen darf. Wer also einen der genannten Dienste für sein Quellcodemanagement nutzt, kann so elegant Backendzugänge für Entwickler verteilen.

Unser Beitrag zur TYPO3-Community

Aus diesem Grund haben wir anlässlich der diesjährigen TYPO3 Developer Days 2018 die Gelegenheit genutzt, um eine entsprechende Schnittstelle in TYPO3 zu schaffen. Zusammen mit meinen Kollegen Christian Hellmund und Simon Schmidt habe ich eine generische OAuth-2.0-Anbindung an das TYPO3-Backend geschaffen. Im ersten Schritt haben wir hierbei GitLab integriert –hauptsächlich, um unseren eigenen Bedarf zu decken. Die Extension ist aber so ausgelegt, dass auch noch andere OAuth-2.0-kompatible Dienste angebunden werden können.

Die Einrichtung der Extension in TYPO3 und GitLab ist mit wenigen Handgriffen erledigt:
Per composer req mfc/oauth2 wird sie in die TYPO3-Installation integriert – vorausgesetzt wird mindestens die Version 8 LTS. Danach führt der nächste Weg ins Backend in die Extension-Konfiguration. Dort kann der Administrator die GitLab-Benutzer – je nach Projektberechtigung in GitLab – verschiedenen Benutzergruppen zuordnen. Ab einer konfigurierbaren Berechtigungsstufe setzt die Extension automatisch das Admin-Flag. Administratoren, die nur den Login per OAuth durchführen möchten und die Zugriffsberechtigungen lieber selbst steuern, können per Konfigurationsflag dafür sorgen, dass bestehende Backend-Rechte bestehen bleiben.

"<yoastmark

Sobald die Extension installiert und konfiguriert ist, gibt es neben dem Login per Benutzername und Passwort auch die Möglichkeit, nur auf einen Button „Login mit GitLab“ zu klicken. Dieser führt zu GitLab, wo der Entwickler meist schon angemeldet ist. Eine einmalige Freigabe in GitLab, die der Extension den Zugriff auf die Informationen in GitLab ermöglicht, führt dann wieder zurück in TYPO3, wo der Entwickler dann direkt eingeloggt wird. Später wird der Nutzer GitLab nicht einmal mehr sehen, sondern gelangt direkt ins TYPO3-Backend.

Mit der Installation der Extension oauth2 sind die Zeiten der Passwortrotation in Kundeninstallationen für unsere Mitarbeiter damit endgültig vorbei.

 

Die Links zur „OAuth2 authentication and authorization Extension“:

Bildquellen

  • TYPO3-Login via GitLab: Bildrechte beim Autor | CC 0
  • oauth2-header: Collage (Screenshot und Muster) MFC

Über Christian Spoo

"Mr. Fix-It" zwingt Soft- und Hardware gerne seinen Willen auf. Spricht fließend Meme und Picdump. Bei der Marketing Factory für die Bereiche Entwicklung und technische Konzeption zuständig.