Dieser Artikel stellt hauptsächlich die von PHP implementierte SSO-Single-Sign-On-Systemzugriffsfunktion vor. Er analysiert kurz die Prinzipien des SSO-Single-Sign-On-Systemzugriffs und PHP-bezogene Implementierungstechniken.
Der vollständige englische Name von SSO lautet Single Sign On, einmalige Anmeldung. SSO erfolgt in mehreren Anwendungssystemen. Benutzer müssen sich nur einmal anmelden, um auf alle gegenseitig vertrauenswürdigen Anwendungssysteme zuzugreifen. Es umfasst Mechanismen, die diese primäre Anmeldung den Anmeldungen desselben Benutzers in anderen Anwendungen zuordnen können. Es ist derzeit eine der beliebtesten Unternehmensintegrationslösungen.
Lassen Sie mich kurz auf das Prinzip des Zugriffs auf das SSO-Single-Sign-On-System eingehen. Voraussetzung ist, dass das System selbst über eine vollständige Benutzerauthentifizierungsfunktion verfügt, also über eine grundlegende Benutzeranmeldefunktion es ist sehr praktisch.
Die SSO-Anmeldeanforderungsschnittstelle ist normalerweise die Schnittstelle plus eine Rückrufadresse. Wenn Sie auf diese Adresse zugreifen, wird ein Ticketparameter verwendet und Sie können dann die Benutzerinformationen anfordern. Wenn der Benutzer vorhanden ist, wird er automatisch angemeldet. Wenn der Benutzer nicht vorhanden ist, wird er hinzugefügt und angemeldet.
Beispielsweise implementiert dieses SSO-Modell zwei Methoden: Eine besteht darin, die Schnittstellen-URL abzurufen, und die andere darin, Benutzerinformationen basierend auf dem Ticket abzurufen:
interface SSOLogin { /** * 获取登录用户信息 * @param $ticket * @return mixed */ public function getInfoFromTicket($ticket); /** * 单点登录授权地址 * @return mixed */ public function getAuthUrl(); }
Kommen Sie noch einmal. Schauen Sie sich die Hauptmethoden des Controllers an. Die Rückrufadresse besteht beispielsweise darin, zum Controller zu springen http://www.example.com/sso/check?ticket=xxxx
/** * 检测是否单点登录 * @return bool|string */ public function actionCheck() { $ticket = Yii::$app->getRequest()->get('ticket'); if (!$ticket) { return $this->renderAuthError('请先授权', sprintf('<a href="%s">点击登录单点登录系统</a>', SSOlogin::getInstance()->getAuthUrl())); } $userInfo = SSOlogin::getInstance()->getInfoFromTicket($ticket); if (empty($userInfo['username'])) { return $this->renderAuthError('请先授权', sprintf('<a href="%s">点击登录单点登录系统</a>', SSOlogin::getInstance()->getAuthUrl())); } $username = $this->getUserName($userInfo['username']); $user = User::find()->canLogin()->username($username)->one(); if (!$user) { $newUser = []; $newUser['username'] = $userInfo['username']; $newUser['email'] = $this->getUserName($userInfo['username']); $newUser['role'] = User::ROLE_DEV; $newUser['is_email_verified'] = 1; $newUser['realname'] = $userInfo['truename']; $user = $this->addUser($newUser); } $isLogin = Yii::$app->user->login($user, 3600 * 24 * 30); if ($isLogin) { $this->redirect('/task/index'); } return true; }
Sie können es wahrscheinlich verstehen, wenn Sie sich die Logik dieses Controllers ansehen. Die Funktion der SSO-Schnittstelle besteht darin, Benutzerinformationen mit der Systembenutzertabelle abzurufen. Wenn ein Benutzer vorhanden ist, melden Sie sich an. Wenn kein Benutzer vorhanden ist, erstellen Sie einen Benutzer und melden Sie sich an.
Dies ist ein internes Single-Point-System, das in das Backend integriert ist. Andere SSOs unterscheiden sich möglicherweise davon, aber die Grundprinzipien und Prozesse sind ähnlich.
Zusammenfassung: Das Obige ist der gesamte Inhalt dieses Artikels, ich hoffe, dass er für das Studium aller hilfreich sein wird.
Verwandte Empfehlungen:
php_imagicks Methode zur Erzielung von Retro-Effekten
JS, phpDetaillierte Erläuterung der Verwendung der Schlüsselwortsuchfunktion
Das obige ist der detaillierte Inhalt vonBeispielanalyse der von PHP implementierten SSO-Single-Sign-On-Systemzugriffsfunktion. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!