Yii 2 REST-konforme API-Authentifizierung mit OAuth2 (erweiterte Yii 2-Vorlage)

9

Die REST-API arbeitet ohne Authentifizierungsmethoden. Jetzt wollte ich REST-API mit OAuth2-Authentifizierung für API-Anfragen über mobile Anwendung authentifizieren. Ich habe versucht mit yii2 Anleitung, aber es hat nicht für mich funktioniert.

grundsätzlich mobile Benutzer müssen sich mit Benutzername & amp; Passwort, wenn ein Benutzername und ein Passwort korrekt sind, muss der Benutzer sich anmelden und weitere API-Anfragen müssen mit Token validiert werden.

Muss ich einen benutzerdefinierten OAuth 2-Client wie diesen erstellen? Erstellen eigener Auth-Clients

>

access_token Feld in Benutzertabelle ist leer. Muss ich es manuell speichern? wie man access_token als Antwort zurückgibt?

Gibt es einen Grund, alle drei Methoden (HttpBasicAuth, HttpBearerAuth, QueryParamAuth) gleichzeitig zu benutzen, warum? Wie?

Meine Anwendungsverzeichnisstruktur sieht wie folgt aus.

%Vor%

api \ module \ v1 \ Module.php

%Vor%

api \ module \ v1 \ controllers \ CountryController.php

%Vor%

common \ models \ Benutzer.php

%Vor%

Benutzertabelle

%Vor%

access_token wurde nach der Migration der Benutzertabelle hinzugefügt

    
Chanuka Asanka 26.04.2015, 17:02
quelle

3 Antworten

1

Sie können Ihr Auth-System erstellen, normalerweise mache ich es. Sie können Token für jeden Benutzer speichern und danach den Benutzer mit diesem Token authentifizieren. In jeder Aktion können Sie dieses Token zum Authentifizieren des Benutzers senden.

    
Vahe Galstyan 21.09.2015 12:22
quelle
1

Sie müssen Folgendes tun:

  • Legen Sie das Token fest, bevor Sie den Benutzer im Benutzermodell speichern.
  • Fügen Sie actionLogin im UserController hinzu, um den auth_key bei der Benutzeranmeldung zurückzugeben.
  • In jeder API-Anfrage senden Sie den auth_key in der Kopfzeile anstelle von Senden von Benutzername und Passwort.
  • um zu überprüfen, ob der auth_key gültig ist, definieren Sie 'authenticator' in der UserController-Verhalten.

Sie können Codebeispiele in meiner Antwort auf eine andere Frage finden hier

    
Ahmad Yazji 08.08.2016 13:57
quelle
1

Ich verwende JWT zur Validierung der Anfrage. Grundsätzlich ist JWT ein Token, das auch Informationen über einen Benutzer und über das Token selbst wie die Gültigkeit und die Ablaufzeit des Tokens enthält. Sie können mehr über JWT hier lesen.

Der Ablauf meiner Anwendung ist so:

  • Wenn ein Benutzer angemeldet ist, erstellen Sie zuerst eine JWT für den Benutzer

    %Vor%
  • Dann muss der Client (z. B. die mobile Anwendung) das Token bei jeder Anfrage über den Autorisierungsheader bereitstellen. Der Header sieht wie folgt aus:

    Authorization:Bearer [the JWT token without bracket]

  • Fügen Sie im Benutzermodell eine Methode wie diese zum Überprüfen des Tokens hinzu:

    %Vor%

    Die JWT-Bibliothek löst eine Ausnahme aus, wenn das Token nicht mehr ungültig ist (manipuliert wurde oder die Verfallszeit überschritten hat).

  • Fügen Sie das dann der Verhaltensfunktion in jedem Controller hinzu:

    %Vor%

Das ist es! Ich hoffe, das funktioniert so, wie du es wolltest. Oh, und es gibt viele JWT-Bibliotheken, die Sie verwenden können (Sie können es hier sehen), aber ich persönlich benutze diese Bibliothek von Leuten aus dem Firebase

    
Luqman Sungkar 23.10.2016 13:45
quelle