token-basierte Authentifizierung in php
Habe ich einen REST-service auf meinem webserver, geschrieben in php. Ich Frage mich, was wäre die beste Authentifizierung (neben http basic access-Authentifizierung).
Ich habe gehört von token-basierte Authentifizierung, und möchte Fragen ob mir jemand erklären könnte, die wichtigsten Schritte.
- Auf die eine BEKOMMEN: Ist das token senden Sie sichtbar? (ist das nicht unsicher?)
- Wie mache ich das token nur für eine bestimmte Zeit?
- ...
Client: Android/Browser; - Server: Apache, PHP5
machen Sie es als hidden-Feld per POST-Methode
was wäre der Sinn einer Erholsamen service, wenn ich könnte nur POST 😉 habe ich implementiert, PUT, POST, GET, DELETE, natürlich gibt es eine unterschiedliche Funktionalität für jede http-Methode
verbergen Sie die Sichtbarkeit Ihrer token
GET domain/user/2 gibt mir Informationen über einen Benutzer, POST-Domäne/Benutzer/2 erstellt einen Benutzer. - Es gibt einen großen Unterschied zwischen GET und POST. Das ist das, was REST ist über: en.wikipedia.org/wiki/Representational_state_transfer
was wäre der Sinn einer Erholsamen service, wenn ich könnte nur POST 😉 habe ich implementiert, PUT, POST, GET, DELETE, natürlich gibt es eine unterschiedliche Funktionalität für jede http-Methode
verbergen Sie die Sichtbarkeit Ihrer token
GET domain/user/2 gibt mir Informationen über einen Benutzer, POST-Domäne/Benutzer/2 erstellt einen Benutzer. - Es gibt einen großen Unterschied zwischen GET und POST. Das ist das, was REST ist über: en.wikipedia.org/wiki/Representational_state_transfer
InformationsquelleAutor Johannes Staehlin | 2012-03-01
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es kann getan werden, so oder so, und die Werte in eine GET-Anforderung sind nicht wirklich mehr zu erkennen, als Werte in einer POST-Anforderung. Wenn jemand "sehen" können (d.h. abfangen) das ersuchen, er kann alles sehen, die Sie versenden. Am Ende einer HTTP-Anfrage ist nur ein Haufen von HTTP-Headern, möglicherweise gefolgt von einem Körper. Die URL senden in der ersten
GET /foo/bar HTTP/1.1
Zeile, andere Werte sind, senden Sie einfach in anderen, folgenden Zeilen.So ist es bis zu Ihnen, wo Sie erwarten, dass Ihr Authentifizierungs-token zu senden. Sie können verlangen, dass Sie ein query-parameter angehängt wird jede Anfrage:
Wirklich das HTTP-Protokoll verwenden, wie beabsichtigt, obwohl, sollten Sie die
Authorization
HTTP-header:Den Inhalt dieser header ist völlig bis zu Ihnen. Es in der Regel legt ein Autorisierungs-Methode wie
Basic
, gefolgt von was immer Sie wollen, zu verlangen, die für die Authentifizierung. Diese können Sie einfach den Benutzernamen und das Passwort ein hash-Wert, eine opake token der client erhalten hat, an einem gewissen Punkt oder irgendetwas anderes, wirklich.Ich würde empfehlen, ein token-system oder ein request-signing-system an, wobei letztere sehr viel lieber. In einer request-signing-system, das Kunden erhalten ein token aus. Es sendet dann einen hash dieser token und bestimmte Merkmale der Anforderung zur Authentifizierung der Anfrage, z.B.
sha1(Token + Timestamp + Request URL + Request Body)
. Ihr server kann überprüfen, ohne den client zum senden der token im Klartext auf jede Anfrage.Speichern Sie die token-server-Seite mit einem Ablauf timestamp und überprüfen gegen Sie.
1. Ja, was passt zu Ihrem Modell am besten. Vielleicht muss sich der Nutzer registrieren sich auf einer Webseite und kopieren&fügen Sie ein token von dort. Vielleicht ist dies über eine API, in dem Fall eine JSON-Antwort in Ordnung ist. 2. Die
Authorization
header enthalten muss die Benutzer-id und das token-hash. Der Antrag muss außerdem enthalten die Zeitstempel, die zum Beispiel in derDate
header, die ist ziemlich standard. Der hash wäre, dass wörtlicheDate
header. Dein server sieht nur die token für den Benutzer stellt sicher, dass das Datum innerhalb ± ein paar Minuten von der aktuellen Zeit und neu erstellt, die denselben hash.Also Grundidee ist: statt das senden der token-Ebene, ich schicke dir den hash und Informationen A,B,C. Der Server kriegt die token von UID-hashes mit den Daten A,B,C und prüft, ob die hashes gleich sind?! - (+die Zeit-Validierung-Personal) - das ist ziemlich clever 😀 Thank ' s alot
Mehr Flexibilität. Jeder client kann einen eindeutigen token und diese tokens können einzeln widerrufen werden, wenn es sein muss. Es ist auch nicht erforderlich, den client speichern Sie vertrauliche Informationen überhaupt, nur eine sinnlose Zeichen, die ungültig werden, zu jeder Zeit.
Die
Token
ist der gemeinsame geheime Schlüssel. Der Hashwert kann nicht sein neu von niemandem außer, wenn das jemand bekannt der gemeinsame geheime Schlüssel. Jemand kann in der Lage sein zu Wiederverwendung das gleiche Zeichen, wiederholen Sie die gleiche Anfrage, das ist wahr. Die server können filter identische Anfragen, wenn das scheint, dass die verdächtige Aktivität. Das verwendete Datum in der hash muss gesendet werden als HTTPDate
header (oder ähnlich). SSL in der Tat macht die meisten dieser doppelte Sicherheit, aber mehr Sicherheit ist kaum noch schlecht, vor allem, wenn es sich nur um eine einfache, aber effektive Hash-Algorithmus.InformationsquelleAutor deceze
Hier ein Frage über token-basierte Authentifizierung. Ich denke, die meisten common-token basierende Authentifizierung ist heute OAuth. Aber um Ihre Fragen zu beantworten:
Können Sie Ihren pass Token durch HTTP-Header, damit Sie nicht so leicht gesehen. OAuth dies erlaubt. Beachten Sie, dass die Token sind noch sichtbar, Sie sind einfach nicht in der
GET
query-Parameter.Da Sie die Steuerung (erstellen) die Token, Sie können Ablaufdaten für jedes token. Bei jeder Anfrage Ihre API, sollten Sie überprüfen Sie einfach Ihren token-Speicher (z.B. Datenbank), wenn das angegebene token noch gültig ist. Wenn es nicht ist, dann kannst du Abbrechen der Anfrage (vielleicht wieder eine HTTP 401-Fehler).
Sowohl POST und GET sind beide unsicher. Um Sie zu sichern müssen Sie eine weitere Kryptographie-Schicht auf der Oberseite, wie SSL.
InformationsquelleAutor Shiki
Können Sie Feuer-base-php-JWT (JSON Web Token) token-basierte Authentifizierung.
1)Installieren Sie den php-jwt durch ausführen Komponist Befehl Komponist erfordern FB/php-jwt
Danach Erzeugen Sie Ihren token
bieten dieses token, um Ihre Benutzer "$jwt" . Bei jeder Anforderung Benutzer muss zum senden von token-Wert mit jeder Anfrage zu validieren Benutzer.
Sie bekommen Schritt für Schritt die volle Konfigurationen für php-token basierende Authentifizierung
InformationsquelleAutor Zedd Index