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 :
Expliquons qu'il existe un. total de quatre personnages.
ResourceOwner est le propriétaire de la ressource, qui est notre utilisateur lui-même
User-Agent est le navigateur que nous utilisons pour accéder à l'application
Le client est un service tiers
AuthorizationServer est un serveur d'authentification, qui peut être compris comme le fournisseur de ressources utilisateur.
Ensuite, le processus d'appel est :
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
À ce moment, le l'utilisateur choisit d'accepter ou non l'autorisation sur le navigateur
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
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.
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
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'];
Les utilisateurs peuvent effectuer certaines mises en cache via ce protocole pour éviter une pression excessive sur le serveur d'authentification.
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!