Der OAuth 2.0 Authorization Code Grant ist eine gängige Authentifizierungsmethode, die von vielen Diensten, einschließlich GitHub, verwendet wird, um Anwendungen von Drittanbietern den Zugriff auf Benutzerdaten zu ermöglichen, ohne Passwörter weiterzugeben. Die Implementierung und das Debuggen in Apidog kann eine wertvolle Fähigkeit sein.
OAuth 2.0
OAuth 2.0 ist ein weit verbreitetes Autorisierungsprotokoll, das Drittanbietern den Zugriff auf geschützte Ressourcen ermöglicht, ohne dass Benutzeranmeldeinformationen erforderlich sind. Es umfasst vier Schlüsselrollen, nämlich Resource Owner, Client, Authorization Server und Resource Server.

Gängige Autorisierungsabläufe
Das OAuth 2.0-Protokoll implementiert die Autorisierung durch verschiedene Autorisierungsabläufe. Gängige Autorisierungsabläufe umfassen:
- Authorization Code Grant: Der Client leitet den Benutzer zum Authorization Server weiter. Nachdem sich der Benutzer angemeldet und die Berechtigung erteilt hat, gibt der Authorization Server einen Autorisierungscode an den Client zurück. Der Client tauscht dann den Autorisierungscode zusammen mit seinen Anmeldeinformationen gegen ein Zugriffstoken aus.
- Authorization Code Grant with PKCE (Proof Key for Code Exchange): Ähnlich dem Standard-Autorisierungscode-Ablauf, aber der Client erhöht die Sicherheit durch die Verwendung von PKCE (Proof Key for Code Exchange).
- Resource Owner Password Credentials Grant: Der Resource Owner stellt dem Client direkt seinen Benutzernamen und sein Passwort zur Verfügung. Der Client verwendet diese Anmeldeinformationen dann, um ein Zugriffstoken vom Authorization Server anzufordern.
- Client Credentials Grant: Der Client fordert direkt ein Zugriffstoken vom Authorization Server unter Verwendung seiner eigenen Anmeldeinformationen an. Dieser Ablauf eignet sich für Fälle, in denen der Client selbst Zugriff auf Ressourcen benötigt.
- Implicit Grant: Wird verwendet, um ein Zugriffstoken direkt vom Client in einer browserbasierten Anwendung zu erhalten. Dieser Ablauf wird typischerweise für Web-Frontend-Anwendungen verwendet.
So richten Sie Github OAuth 2.0 (Client ID und Client Secret) ein
Schritt 1: Erstellen Sie die App und erhalten Sie die Client ID und das Client Secret
Um die Client ID und den Client Key zu erhalten, müssen wir zuerst eine Anwendung erstellen. Klicken Sie auf diesen Link, um eine in Github zu erstellen: https://github.com/settings/applications/new, und geben Sie dann Ihre "Homepage URL" hier ein. Geben Sie den Domainnamen ein, wenn es sich um lokales Debugging handelt, können Sie Ihren lokalen Dienst eingeben, z. B. http://127.0.0.1:8000.
Geben Sie Ihre Callback-Adresse in "Authorization callback URL" ein, die Ihr Domainname oder Ihre lokale Callback-Adresse sein kann, z. B. http://127.0.0.1:8000/callback.
Klicken Sie nach dem Ausfüllen der relevanten Konfiguration auf "Register application", um sie zu erstellen.

Nachdem die Anwendung erstellt wurde, werden die Client ID und das Client Secret generiert. Der Client Key muss separat generiert werden. Klicken Sie auf "Generate a new client secret", um einen Schlüssel zu generieren.

Schritt 2: Zugriffstoken abrufen
Wenn der erste Schritt oben erledigt ist, können wir ein Zugriffstoken (Token) beantragen. Wir werden diesen Schritt über Apidog demonstrieren. Apidog ist ein sehr gutes API-Debugging- und -Verwaltungstool.

Sie können das Zugriffstoken direkt in Apidog abrufen. Wenn Sie Apidog noch nicht installiert haben, laden Sie jetzt eines herunter!
- Erstellen Sie ein neues HTTP-Projekt in Apidog und öffnen Sie es, erstellen Sie dann eine neue Anfrage in dem Projekt und wählen Sie die Option [Modify Document -> Auth -> OAuth 2.0 -> option.

2. Konfigurieren Sie Client ID, Client Key und Redirect-Adresse
Der Standard-Autorisierungsmodus, der auf der OAuth 2.0-Seite in Apifdog ausgewählt ist, ist Authorization Code (Autorisierungscode-Modus).
Da Github OAuth 2.0 auch Authorization Code (Autorisierungscode-Modus) verwendet, müssen Sie hier nicht wechseln.

Suchen Sie dann die Client ID, den Client Secret und die Callback URL am unteren Rand der Seite. Die Client ID (Client ID), das Client Secret (Client Secret) und die konfigurierte Callback-Adresse (Callback URL) werden vom OAuth 2.0-Dienst von Github bezogen.
Füllen Sie es einfach aus. Die spezifischen Parameter sind die Konfigurationen in "Schritt 1" oben.

3. Konfigurieren Sie die Anforderungsadresse des Autorisierungscodes
Gemäß der offiziellen Github-Dokumentation lautet die Anforderungsadresse (Auth URL) des Autorisierungscodes wie folgt:
https://github.com/login/oauth/authorize
Geben Sie einfach die Anforderungsadresse dieses Autorisierungscodes in die Auth URL ein. Wir können diese Adresse als die Login-Autorisierungsseite verstehen.
Diese Seite wird geöffnet, wenn der Login-Status zum ersten Mal überprüft wird (es ist ein Fenster auf dem Client), und dann werden Sie aufgefordert, den Benutzernamen und das Passwort einzugeben.

Im Allgemeinen müssen beim manuellen Erstellen der Login-Autorisierungsseite einige Parameter nach der Autorisierungsadresse mitgeführt werden.
In Apidog müssen die Parameter nach der URL jedoch im Allgemeinen nicht mitgeführt werden, nur der Pfad vor dem Fragezeichen? reicht aus, da die anderen erforderlich sind. Die Parameter wurden separat in anderen Optionen konfiguriert.
Wenn Sie jedoch einige Query-Parameter mitführen möchten, können Sie diese auch hinzufügen. Klicken Sie auf das Symbol hinter dem Eingabefeld, um sie hinzuzufügen:

Wir können auch die Option "Mehr" erweitern und die Parameterwerte, die ausgefüllt werden müssen, in die entsprechenden Optionen eingeben. In "Scope" können Sie beispielsweise die erforderlichen Berechtigungen eingeben, z. B. read:user, user:email usw.
Sie können mehr Berechtigungen für andere haben. Sie können das Berechtigungsmodul der Github-Hilfedokumentation besuchen, um es anzuzeigen. Geben Sie den Status in der Option "State" ein. State dient dazu, Cross-Site-Request-Forgery zu verhindern.

4. Konfigurieren Sie die Anforderungsadresse des Zugriffstokens
Gemäß der offiziellen Github-Dokumentation lautet die angeforderte URL für die Beantragung eines Zugriffstokens:
https://github.com/login/oauth/access_token
Geben Sie einfach die obige Adresse in das Eingabefeld Access Token URL der OAuth 2.0-Seite von Apidog ein.

5. Erhalten Sie das Zugriffstoken für den Github OAuth 2.0-Dienst
Nachdem die obigen Konfigurationselemente festgelegt wurden, können Sie auf die Schaltfläche "Get Token" klicken, um das Zugriffstoken zu erhalten.
Wenn Sie nach dem Klicken zum ersten Mal angemeldet sind, wird ein Fenster angezeigt, in dem Sie sich autorisieren können. Geben Sie einfach den Benutzernamen und das Passwort Ihres Github-Kontos ein.

Nachdem Sie den Benutzernamen und das Passwort eingegeben haben, werden Sie aufgefordert, die Autorisierung zu bestätigen oder eine Zwei-Schritt-Verifizierung durchzuführen. Klicken Sie nach der Verifizierung auf Bestätigen.
Nachdem die Autorisierung abgeschlossen ist, wird das Zugriffstoken automatisch abgerufen und auf der Seite angezeigt. Gleichzeitig werden auch andere von Github zurückgegebene Informationen analysiert, wie in der Abbildung unten gezeigt. "Expired" wird hier angezeigt, da Github uns das Attribut expires_in nicht zurückgegeben hat, sodass wir kein Urteil fällen können. Dieses Token ist jedoch verwendbar. Lassen Sie uns unten eine Anfrage initiieren.

Schritt 3: Zugriff auf offene Ressourcen basierend auf Token
Nachdem Sie das Zugriffstoken (Token) haben, können Sie dieses Zugriffstoken verwenden, um die offenen Ressourcen von Github aufzurufen. Sie können die spezifischen offenen Ressourcen in der Github-API anzeigen.
Beispielsweise ruft die folgende API Benutzerinformationen ab. Wenn Ihre Schnittstelle nicht zurückgibt, müssen Sie überprüfen, ob Sie über Berechtigungen verfügen. Wie in Abschnitt 3 von "Schritt 2" erwähnt, konfigurieren Sie es einfach in Scope.

Beim Senden einer Anfrage fügt Apidog das Token automatisch der Autorisierung des Anforderungsheaders hinzu, fügt es dem Bearer hinzu und sendet es aus. Wenn Sie das Token in der URL mitführen möchten, können Sie auch den "Add Location" des Tokens in den Konfigurationselementen der Seite ändern und "Query Params" auswählen.

Zusammenfassung
OAuth 2.0 ist ein Autorisierungs-Framework, das es Anwendungen von Drittanbietern ermöglicht, Zugriffstoken zu erhalten, ohne dass der Benutzer einen Benutzernamen und ein Passwort angeben muss. Der von GitHub verwendete Autorisierungsprozess ist der "Autorisierungscode-Autorisierungsprozess", und sein Autorisierungsprozess kann in Apidog debuggt und konfiguriert werden.