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.
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
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!