Bei der Trennung von Front- und Back-End oder der Unterstützung mehrerer Webanwendungen treten große Probleme bei der Verwendung der ursprünglichen Cookies oder Sitzungen auf.
Cookie- und Sitzungsauthentifizierung müssen unter demselben Hauptdomänennamen erfolgen. Authentifizierung kann durchgeführt werden (derzeit kann die Sitzung zur Lösung in Redis gespeichert werden).
Lösung
oauth2 und jwt (empfohlenes Lernen: PHP-Video-Tutorial)
jwt: Es ist ein Sicherheitsstandard. Die Grundidee besteht darin, dass der Benutzer dem Authentifizierungsserver den Benutzernamen und das Kennwort zur Verfügung stellt und der Server die Legitimität der vom Benutzer übermittelten Informationen überprüft. Wenn die Überprüfung erfolgreich ist, wird ein Token (Token) generiert und zurückgegeben
OAuth2: Es handelt sich um ein sicheres Autorisierungsframework. Es beschreibt im Detail, wie eine gegenseitige Authentifizierung zwischen verschiedenen Rollen, Benutzern, Service-Front-End-Anwendungen (z. B. API) und Clients (z. B. Websites oder mobilen APPs) im System erreicht wird. (JWT, dieses JSON-Web-Token wird hier zur Authentifizierung verwendet)
Generierungsmethode
Header: Verschlüsselungstyp
Beschreibung: Nachrichteninhalt
Schlüssel: ein zufälliger Code zum Verschlüsseln
Verwenden Sie die oben genannten drei Teile, verbinden Sie sie und verwenden Sie dann hs256 zum Verschlüsseln und Generieren des Tokens
Detaillierte Generierungsmethode
1). Der Header besteht normalerweise aus zwei Teilen: dem Typ des Tokens (d. h. JWT) und dem verwendeten Verschlüsselungsalgorithmus (wie SHA256 oder RSA)
{ "alg": "HS256", "typ": "JWT" }
Dann ist dies der JSON Base64Url kodiert und wird zum ersten Teil
2). Bei der Erklärung geht es um die Entität.
{ "exp": "1525785339", "sub": "1234567890", "name": "John Doe", "admin": true }
Die Nutzlast wird dann Base64Url-codiert und wird zum zweiten Teil
(PS: Diese Informationen sind zwar manipulationsgeschützt, können aber von jedem gelesen werden. Legen Sie keine wichtigen Informationen darin ab, es sei denn, sie sind verschlüsselt)
3) Verwenden Sie einen Verschlüsselungsschlüssel
4). Zum Signieren müssen Sie den ersten codierten Teil, den zweiten codierten Teil und dann einen Schlüssel verwenden. Verwenden Sie den Verschlüsselungsalgorithmus im ersten Teil, um
HMACSHA256( base64UrlEncode(header) + "." + base64UrlEncode(payload), key )
zu signieren. Diese Signatur wird verwendet, um zu überprüfen, ob die Nachricht manipuliert wurde.
(PHP verwendet die Crypt-Methode zur Verschlüsselung. Hinweis: SHA-256 wird zur Manipulationssicherheit und AES-256 zur Verschlüsselung verwendet. Die beiden Konzepte sind unterschiedlich)
Das obige ist der detaillierte Inhalt vonSo generieren Sie ein PHP-Token. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!