本文實例講述了php實現的SSO單一登入系統存取功能。分享給大家參考,具體如下:
SSO英文全名為Single Sign On,單一登入。 SSO是在多個應用系統中,使用者只需要登入一次就可以存取所有互信的應用系統。它包括可以將這次主要的登入對應到其他應用程式中用於同一個使用者的登入的機制。它是目前比較流行的企業業務整合的解決方案之一,下面我們來看看吧。
簡單講一下 SSO 單一登入系統的存取的原理,前提是系統本身有完善的使用者認證功能,也就是基本的使用者登入功能,那做起來就很方便了。
SSO 登入請求介面往往是介面加上一個回呼位址,存取這個位址會跳到回呼位址並帶上一個ticket 參數,拿著這個ticket 參數再請求介面可以取得到使用者訊息,如果存在使用者則自動登錄,不存在就新增用戶並登入。
例如這個SSO 模型實作了兩個方法,一個是取得介面url,一個是憑ticket 取得使用者資訊:
interface SSOLogin { /** * 获取登录用户信息 * @param $ticket * @return mixed */ public function getInfoFromTicket($ticket); /** * 单点登录授权地址 * @return mixed */ public function getAuthUrl(); }
再來看看控制器的主要方法,例如回呼位址是跳到控制器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; }
大概看看這個控制器邏輯就懂了。 SSO 介面扮演的角色就是取得使用者資訊,拿這個使用者資訊跟系統使用者表對比,存在使用者則進行登錄,不存在建立使用者並登入。
這是一個內部的單點系統,整合到後台,可能其他的 SSO 跟這不太一樣,但基本原理過程差不多。
希望本文所述對大家PHP程式設計有所幫助。
更多php實現的SSO單一登入系統存取功能範例分析相關文章請關注PHP中文網!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

SublimeText3漢化版
中文版,非常好用

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

記事本++7.3.1
好用且免費的程式碼編輯器

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

SublimeText3 Linux新版
SublimeText3 Linux最新版