Im vorherigen Teil haben wir die grundlegenden Konzepte und Funktionsweisen von OAuth2 behandelt. In diesem Artikel konzentrieren wir uns darauf, wie man einen OAuth2-Authentifizierungsserver mit dem Django OAuth Toolkit (DOT) einrichtet.


1. Installation des Django OAuth Toolkit

Um den OAuth2-Server zu implementieren, müssen wir zunächst das Django OAuth Toolkit (DOT) installieren. Dies kann mit einem einfachen Befehl erfolgen:

pip install django-oauth-toolkit

Nach der Installation fügen Sie oauth2_provider zu INSTALLED_APPS hinzu und führen Sie die Migration durch. Nach der Migration können Sie im Django-Admin-Bereich die zusätzlichen Menüs sehen, die von DOT bereitgestellt werden.


2. Neu hinzugefügte Menüs im Admin-Bereich

Mit der Installation von DOT werden im Django Admin folgende 5 Menüs hinzugefügt:

1) Zugriffstoken

  • Verwaltung der ausgegebenen Zugriffstoken.
  • Überprüfung der Gültigkeit jedes Tokens, der zugehörigen Client-Anwendung und der Benutzerinformationen.
  • Zugriffstoken werden als Schlüssel verwendet, um auf geschützte Ressourcenzugreifen.

2) Auffrischungstoken

  • Verwaltung der Auffrischungstoken.
  • Diese werden verwendet, um ein neues Zugriffstoken zu erhalten, wenn das aktuelle abläuft.
  • Auf diese Weise kann der Benutzer kontinuierliche Aufgaben durchführen, ohne sich erneut zu authentifizieren.

3) Anwendung

  • Registrierung und Verwaltung von OAuth2-Client-Anwendungen.
  • Anwendungen müssen sich registrieren, um mit dem Authentifizierungsserver zu kommunizieren, und es stehen verschiedene Einstellungsfelder zur Verfügung.

4) Berechtigungscode

  • Verwaltung des Berechtigungscodes (Authorization Code).
  • Der Berechtigungscode ist ein temporärer Schlüssel, den die Client-Anwendung zur Anforderung eines Zugriffstokens benötigt.

5) ID-Tokens

  • Verwaltung der ausgegebenen ID-Tokens.
  • ID-Tokens werden verwendet, wenn OAuth2 und OpenID Connect (OIDC) kombiniert werden und enthalten Benutzer- und Client-Anwendungsinformationen.
  • Sie werden verwendet, wenn Clients das OpenID-Connect-Protokoll nutzen, um Benutzerinformationen zu erhalten.

3. Detaillierte Beschreibung des Anwendungsmenüs

Der Kern des OAuth2-Servers ist die Registrierung der Client-Anwendungen. Im Anwendungs Menü können Sie folgende Felder einstellen:

1) Name

Der Name der Anwendung. Schreiben Sie ihn klar, damit Administratoren ihn leicht identifizieren können.

2) Client-ID

Einzigartiger Identifikator der Anwendung. Wird vom OAuth2-Server verwendet, um den Client zu identifizieren, und wird automatisch erstellt.

3) Client-Geheimnis

Geheimer Schlüssel, der zur Authentifizierung des Clients verwendet wird. Gilt nur für serverbasierte Anwendungen (Confidential) und sollte sicher aufbewahrt werden.

4) Client-Typ

Der Typ der Client-Anwendung:

  • Confidential: serverbasierte Anwendung, die den geheimen Schlüssel sicher speichern kann.
  • Public: mobile Apps oder SPA (Single Page Applications), die den geheimen Schlüssel nicht speichern können.

5) Berechtigungsgrant-Typ

Die von der Client-Anwendung verwendete Authentifizierungsart. Wichtige Optionen:

  • Berechtigungscode: die gängigste und sicherste Methode.
  • Passwort: Anforderung der Benutzer-ID/Passwort zur direkten Eingabe.
  • Client-Anmeldeinformationen: geeignet für die Kommunikation zwischen Servern.

6) Umleitungs-URIs

Die URL der Client-Anwendung, die den Berechtigungscode oder das Zugriffstoken nach einer erfolgreichen Authentifizierung erhält.

  • Wichtig: Muss unbedingt mit den Einstellungen auf der Clientseite übereinstimmen.
  • Bei Nichtübereinstimmung sendet der OAuth2-Server keinen Berechtigungscode oder Token.
  • Zur Sicherheit wird die Verwendung von HTTPS empfohlen.

7) Algorithmus

Der Algorithmus, der zur Verschlüsselung des Tokens verwendet wird. Der Standardwert ist RS256, was ein RSA-basiertes Signaturalgorithmus ist.

  • RS256: Verwendet asymmetrische Verschlüsselung zur Überprüfung der Signatur mit dem öffentlichen Schlüssel.
  • Kann nach Bedarf auf einen anderen Algorithmus geändert werden.

8) Autorisierung überspringen

Wenn auf True gesetzt, erhält die Client-Anwendung automatisch Berechtigungen, ohne dass eine Benutzerbestätigung erforderlich ist. Nützlich in internen Systemen oder bei vertrauenswürdigen Anwendungen.


4. Zusammenfassung und nächste Schritte

In diesem Artikel haben wir untersucht, wie man mit dem Django OAuth Toolkit (DOT) das Admin-Menü und insbesondere die Felder von Anwendungen zur Konfiguration eines OAuth2-Servers nutzt. Dadurch können die Registrierung der Client-Anwendungen und die Rolle der einzelnen Felder verstanden werden.

Im nächsten Artikel werden wir tiefer in den Client-Typ, der in diesem Beitrag erwähnt wurde, eintauchen. Besonders werden wir Confidential und Public Typen vergleichen und detailliert erklären, wie diese beiden Typen in OAuth2 verwendet werden. Außerdem planen wir, folgende Themen zu behandeln:

  • Die Beziehung zwischen Client-Typ und PKCE: Warum PKCE (Proof Key for Code Exchange) für öffentliche Clients wichtig ist.
  • Die Rolle des Client-Geheimnisses: Wie der geheime Schlüssel bei Confidential-Clients verwendet wird.
  • Der Fluss des Berechtigungscode und PKCE: Eine tiefere Analyse des am häufigsten verwendeten Grant-Type in OAuth2.

Um den Fluss des Berechtigungscodes klar zu verstehen, ist es entscheidend, die Wechselwirkungen zwischen PKCE und Client-Typ zu kennen. Im nächsten Artikel werden wir dieses Thema ausführlich behandeln.

OAuth 2.0 Authorization Code Grant Flow