Authlib: OAuth 2.0 & OpenID Connect Authentifizierung in Python

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Einleitung

Moderne Webanwendungen und APIs benötigen ein zuverlässiges und flexibles Authentifizierungssystem. OAuth 2.0 und OpenID Connect haben sich dabei als De-facto-Standards etabliert. Ihre Implementierung erfordert jedoch die Beachtung vieler sicherheitsrelevanter Details. Die Bibliothek Authlib wurde entwickelt, um diesen Prozess in Python zu vereinfachen.

Authlib ist eine universelle Bibliothek für OAuth- und OpenID-Connect-Authentifizierung. Sie ermöglicht eine schnelle und sichere Integration von Authentifizierung über Drittanbieter-Dienste sowie die Erstellung eines eigenen OAuth-Servers. In diesem Artikel zeigen wir Ihnen praxisnah, wie Sie Authlib einsetzen, welche Funktionen es bietet und wie Sie typische Fehler vermeiden.

Grundlagen von OAuth und OpenID Connect

Funktionsweise der Protokolle

OAuth 2.0 ist ein Autorisierungsprotokoll, das einer Anwendung den Zugriff auf Benutzerressourcen ermöglicht, ohne dass der Benutzer seinen Login und sein Passwort preisgeben muss. Stattdessen werden temporäre Zugriffstoken verwendet, die zeitlich und in ihrem Gültigkeitsbereich eingeschränkt sein können.

OpenID Connect (OIDC) ist eine Erweiterung von OAuth 2.0, die eine Authentifizierungsebene hinzufügt. Damit können Sie nicht nur auf Ressourcen zugreifen, sondern auch die Identität des Benutzers bestätigen und Informationen über ihn erhalten.

Unterschied zwischen OAuth und OpenID Connect

OAuth 2.0 ermöglicht den Zugriff auf APIs von Drittanbietern (z. B. Dateiliste in Google Drive, Veröffentlichungen in sozialen Netzwerken), liefert aber keine Informationen über den Benutzer selbst.

OpenID Connect stellt strukturierte Benutzerinformationen (E-Mail, Name, Profilbild usw.) über ID-Token und den Userinfo-Endpunkt bereit.

Hauptrollen in OAuth 2.0

  • Resource Owner – der Eigentümer der Ressource (in der Regel der Benutzer)
  • Client – die Anwendung, die Zugriff auf die Ressource anfordert
  • Authorization Server – der Server, der den Benutzer authentifiziert und Token ausstellt
  • Resource Server – der Server, auf dem die geschützten Ressourcen gespeichert sind

Überblick über die Authlib-Bibliothek

Geschichte und Ziele des Projekts

Authlib wurde von Lepture (Hsiaoming Yang) entwickelt, der auch Autor anderer beliebter Python-Bibliotheken ist. Das Projekt startete 2017 mit dem Ziel, eine umfassende Lösung für OAuth und OpenID Connect im Python-Ökosystem zu schaffen.

Im Gegensatz zu vielen anderen Bibliotheken bietet Authlib eine einheitliche API für Client und Server sowie Unterstützung für die neuesten Sicherheitsstandards. Die Bibliothek wird aktiv weiterentwickelt und von der Community unterstützt.

Schlüsselfunktionen von Authlib

  • Vollständige Standardunterstützung: OAuth 1.0a, OAuth 2.0, OpenID Connect 1.0
  • Kryptografische Fähigkeiten: JWT, JWS, JWK, JWE
  • Fertige Integrationen: Flask, Django, Starlette, FastAPI
  • Sicherheit standardmäßig: PKCE, State-Validierung, Nonce-Verifikation
  • Flexibilität: Möglichkeit zur Erstellung sowohl von Client- als auch von Serverlösungen

Architektur der Bibliothek

Authlib ist modular aufgebaut:

  • Core – grundlegende Klassen und Funktionen für die Arbeit mit den Protokollen
  • Integrations – Integrationen mit Web-Frameworks
  • JOSE – Arbeit mit JSON Web Tokens und Kryptografie
  • OAuth1/OAuth2 – Implementierung der OAuth-Protokolle
  • OIDC – Erweiterungen für OpenID Connect

Installation und grundlegende Einrichtung von Authlib

Installation mit pip

pip install Authlib

Zusätzliche Abhängigkeiten

Für die Arbeit mit verschiedenen Web-Frameworks kann die Installation zusätzlicher Pakete erforderlich sein:

# Für Flask
pip install Authlib[flask]

# Für FastAPI/Starlette
pip install Au                    

Empfehlungen