Maison >développement back-end >Problème PHP >Comment implémenter la connexion SSO en php

Comment implémenter la connexion SSO en php

藏色散人
藏色散人original
2021-12-30 10:06:192673parcourir

Comment implémenter la connexion SSO en PHP : 1. L'utilisateur entre dans la page de connexion pour générer un SID personnalisé et l'écrit dans redis et les cookies ; 2. Dans le constructeur du Business BaseController, écrivez une opération pour mettre à jour redis ; JS construit un événement de saut, puis le serveur vérifie le stockage Redis de l'utilisateur en fonction du SID.

Comment implémenter la connexion SSO en php

L'environnement d'exploitation de cet article : système Windows 7, PHP version 7.1, ordinateur Dell G3.

Comment implémenter la connexion SSO en PHP ?

Conception de l'authentification unique SSO et implémentation PHP

Il est recommandé de se familiariser d'abord avec les concepts liés à l'authentification unique SSO.

1. SSO : authentification unique, une seule connexion, tous les systèmes associés peuvent être saisis, pas besoin de se connecter à plusieurs reprises

2 Plan de mise en œuvre : partager S[ID] + [SID inter-domaines] dans le. Cookie [nom de domaine de premier niveau]

3. Abandonnez la session PHP et stockez les informations de l'utilisateur dans redis

4 Chaque fois que l'utilisateur opère légalement, dans le constructeur de l'entreprise BaseController, écrivez une opération pour mettre à jour redis et mettez à jour le. expireTime du statut de connexion de l'utilisateur stocké dans redis -- Objectif pour simuler l'expiration de la session

5. Implémentation SSO spécifique de l'authentification unique : (PHPsessionId est obsolète) -- L'API de connexion de l'utilisateur authentifié est placée sur le serveur sso, et d'autres pages de connexion appellent cette interface.

1) Authentification par authentification unique SSO : l'utilisateur accède à la page de connexion pour générer un SID personnalisé, l'écrit dans Redis et les cookies ; soumet le mot de passe du compte, ajuste l'API d'authentification SSO pour qu'elle réussisse, SSO doit lier l'utilisateur à le SID dans le cookie (ligne LoginAction/ssologin /321 : à l'intérieur de api::get)

Le serveur local génère des jetons (les deux sont des champs et des règles personnalisés) et les stocke dans redis. Il est recommandé que la période de validité soit de 30 minutes.

2) Dans le constructeur du Business BaseController, écrivez Une opération pour mettre à jour redis Lorsqu'il y a une activité, le SID correspondant et la période de validité du token sont mis à jour (c'est-à-dire que s'il n'y a pas d'opération pendant 30 minutes, l'état de connexion. expire), -- le but est de simuler l'expiration de la session

3) Le SID stocké dans le nom de domaine du cookie doit être un nom de domaine de premier niveau tel que [.exemple.com], il est recommandé que la période de validité du cookie soit de une. mois ;

4) L'utilisateur clique directement sur d'autres sous-domaines à partir de la page du nom de domaine qui vient d'être connecté, le lien n'a pas besoin d'apporter le SID ou le jeton en texte clair, car le cookie l'apportera tout seul. Sur le SID, le serveur accède à l'interface d'authentification SSO pour vérifier si les données Redis correspondant au SID sont valides en fonction du SID dans le cookie

6 Par exemple, je souhaite me connecter. sur un nom de domaine qui n'est pas [.example.com], tel que : erji.mogo.com, mais j'utilise le même système d'authentification SSO, que dois-je faire ?

Vous êtes toujours sur la page Web du nom de domaine à laquelle vous venez de vous connecter. JS construit un événement de saut. L'url de saut ?&SID=xxx suffit. Vous pouvez utiliser jQuery.cookie.js pour obtenir le SID du cookie, puis. le serveur vérifie également le SID en fonction du SID si les données Redis de l'utilisateur ont expiré.

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!

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