Maison > développement back-end > Problème PHP > Comment ajouter un jeton à l'en-tête de réponse en php

Comment ajouter un jeton à l'en-tête de réponse en php

藏色散人
Libérer: 2023-03-17 22:00:01
original
3925 Les gens l'ont consulté

Comment ajouter un jeton à l'en-tête de réponse en PHP : 1. Utilisez le mode Bearer pour ajouter JWT dans le champ Autorisation de l'en-tête de la requête ; 2. Une fois que le serveur a reçu la requête, utilisez la spécification JWT pour générer le jeton et le retourner au client.

Comment ajouter un jeton à l'en-tête de réponse en php

L'environnement d'exploitation de ce tutoriel : système Windows 10, PHP version 8.1, ordinateur DELL G3

Comment php ajoute-t-il un jeton à l'en-tête de réponse ?

Génération et utilisation d'un jeton php

1. Pourquoi utiliser un jeton pour la connexion

Séparation du front-end et du back-end ou afin de prendre en charge plusieurs applications Web, il y aura alors de gros problèmes dans l'utilisation de l'original. cookies ou sessions

L'authentification des cookies et de la session doit être sous le même nom de domaine principal pour l'authentification (actuellement, la session peut être stockée dans Redis pour résoudre le problème).

2. Solution

oauth2 et jwt

jwt : est une norme de sécurité. L'idée de base est que l'utilisateur fournit le nom d'utilisateur et le mot de passe au serveur d'authentification, et le serveur vérifie la légitimité des informations soumises par l'utilisateur ; si la vérification réussit, un jeton (jeton) sera généré et renvoyé

; OAuth2 : il s'agit d'un cadre d'autorisation sécurisé. Il décrit en détail comment réaliser une authentification mutuelle entre différents rôles, utilisateurs, applications frontales de service (telles que l'API) et clients (tels que des sites Web ou des applications mobiles) dans le système.

(jwt, ce jeton Web JSON est utilisé pour l'authentification ici)

3. Méthode de génération

En-tête : Type de cryptage

Description : Contenu du message

Clé : Un code aléatoire utilisé pour le cryptage

Ci-dessus Les trois parties sont connecté, puis chiffré à l'aide de hs256 pour générer le jeton

4. Méthode de génération détaillée

1). L'en-tête se compose généralement de deux parties : le type de jeton (c'est-à-dire JWT) et l'algorithme de cryptage utilisé (tel que : SHA256 ou RSA). )

{
      "alg": "HS256",
      "typ": "JWT"
}
Copier après la connexion

Ensuite, ce json est codé en Base64Url et devient la première partie

2). La charge utile est la déclaration. La déclaration concerne l'entité.

{
      "exp": "1525785339",
      "sub": "1234567890",
      "name": "John Doe",
      "admin": true
}
Copier après la connexion

La charge utile est ensuite codée en Base64Url pour devenir la deuxième partie

(PS : ces informations, bien que protégées contre la falsification, peuvent être lues par n'importe qui. Ne mettez pas d'informations importantes à l'intérieur à moins qu'elles ne soient cryptées)

3) . clé de cryptage

4). Pour signer, vous devez utiliser la première partie codée, la deuxième partie codée, puis une clé clé. Utilisez l'algorithme de cryptage dans la première partie pour signer

HMACSHA256(
          base64UrlEncode(header) + "." + base64UrlEncode(payload),
          key
)
Copier après la connexion

Cette signature est utilisée pour vérifier si le message a été falsifié.

(PHP utilise la méthode de cryptage pour le cryptage. Remarque : SHA-256 est utilisé pour la résistance à la falsification et AES-256 est utilisé pour le cryptage. Les deux concepts sont différents)

5 L'emplacement de stockage du jeton

devrait généralement être. dans l'entête de la requête Le champ Autorisation utilise le mode Bearer pour ajouter JWT (Authorization: Bearer) (bien sûr vous pouvez aussi le placer n'importe où, par exemple en le passant en paramètre après l'URL, du moment que le client peut le reconnaître , mais comme JWT est une spécification, nous ferions mieux de suivre la spécification Venez)

6 Comment utiliser

L'utilisateur client saisit le nom d'utilisateur et le mot de passe pour se connecter et demander le jeton

Une fois que le serveur a reçu la demande, il utilise la spécification JWT pour générer le jeton et le renvoie au client

Le client le reçoit Après avoir reçu le jeton, après l'avoir déchiffré, vérifiez l'actualité du jeton (le délai d'expiration du jeton) et enregistrez-le. utilise le jeton pour demander des données. Une fois que le serveur a reçu le jeton et l'a déchiffré, il vérifie l'identité de l'utilisateur, vérifie l'actualité, puis vérifie l'utilisateur

7. période de jetons)

2. Il n'est pas facile de gérer les données expirées (prise en charge de l'invalidation du jeton)

Donc, si vous utilisez le jeton, alors si le jeton est capturé, vous pouvez alors falsifier et usurper l'identité. Donc si la sécurité est relativement élevée, il est quand même recommandé d'utiliser oauth2

Apprentissage recommandé : "

Tutoriel vidéo PHP

"

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal