Maison >programmation quotidienne >Connaissance PHP >Introduction au protocole OAuth2.0 et à l'accès PHP

Introduction au protocole OAuth2.0 et à l'accès PHP

安安杰尼
安安杰尼original
2020-05-15 18:05:52543parcourir

Introduction à OAuth2.0

OAuth (Open Authorization) est un moyen sécurisé d'autoriser les informations utilisateur à des tiers sans communiquer au tiers le compte et le mot de passe de l'utilisateur, un protocole standard ouvert. Pour plus d'introduction au protocole, les lecteurs peuvent se référer à la RFC 6749.

Commençons par une brève explication du mode Code d'Autorisation le plus classique sous ce protocole. L'introduction est la suivante :

Introduction au protocole OAuth2.0 et à laccès PHP

Expliquons qu'il existe un. total de quatre personnages.

  1. ResourceOwner est le propriétaire de la ressource, qui est notre utilisateur lui-même

  2. User-Agent est le navigateur que nous utilisons pour accéder à l'application

  3. Le client est un service tiers

  4. AuthorizationServer est un serveur d'authentification, qui peut être compris comme le fournisseur de ressources utilisateur.

Ensuite, le processus d'appel est :

  1. L'utilisateur accède lui-même au service tiers du Client via le navigateur, et le Client construit OAuth2 Le lien (les paramètres incluent l'ID d'identité du service tiers actuel et l'URI de redirection) guide l'utilisateur vers la page d'autorisation du serveur d'authentification

  2. À ce moment, le l'utilisateur choisit d'accepter ou non l'autorisation sur le navigateur

  3. Si l'utilisateur accepte l'autorisation, le serveur d'authentification redirigera l'utilisateur vers l'URI de redirection spécifié dans la première étape et joindra un code d'autorisation Code

  4. Le service tiers reçoit le code d'autorisation, apporte l'URI de redirection de la source du code d'autorisation et demande un certificat au serveur d'authentification.

  5. Le serveur d'authentification vérifie la validité du code d'autorisation et de l'URI de redirection, et émet un AccessToken (identifiant d'appel) après l'avoir transmis

d et e sont tous exécutés côté serveur, et il n'y a pas besoin de passer par le navigateur

Conception d'OAuth2

Introduction au protocole OAuth2.0 et à laccès PHP

1. Construction du lien de connexion d'autorisation

Premièrement, lorsqu'un utilisateur accède à une application, le front-end appelle l'interface du serveur. Le serveur détecte que l'utilisateur n'est pas connecté et construit un lien d'autorisation à. cette fois.

$redirect_uri = 'https://test.xx.ccom/index';
$this->goUrl('https://auth.xx.com/connect/oauth2/authorize?appid=xxx&redirect_uri='.$redirect_uri);

Renvoie le lien vers le front-end, et le front-end passe directement au lien. Ensuite, https://auth.xx.com/connect/oauth2/authorize

affiche une page demandant s'il accepte l'autorisation. L'utilisateur clique sur Autoriser et le serveur d'authentification sera redirigé. directement vers redirect_uri et porter un paramètre Code. Lorsque le serveur reçoit ce paramètre de code, il utilise ce paramètre pour se rendre sur le serveur d'authentification afin d'obtenir le access_token.

$code = $_GET['code'];
$res = file_get_contents('.$code );
$access_token = $res['access_token'];

Ensuite, le serveur utilise ce jeton d'accès au serveur d'authentification en échange d'informations utilisateur.

$res = file_get_contents('https://auth.xx.com/user_info?token='.$access_token );
$uid = $res['uid'];
$name = $res['name'];

Suggestions de schéma de mise en cache

Les utilisateurs peuvent effectuer certaines mises en cache via ce protocole pour éviter une pression excessive sur le serveur d'authentification.

  1. Des tiers peuvent concevoir certains principes de cookies pour stocker les informations de l'utilisateur et éviter de demander constamment au serveur d'authentification.

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!

Déclaration:
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