이 기사의 예에서는 PHP로 구현된 SSO Single Sign-On 시스템 액세스 기능을 설명합니다. 참고하실 수 있도록 모두와 공유해 주세요. 자세한 내용은 다음과 같습니다.
SSO의 정식 영문명은 Single Sign On, Single Sign-On입니다. SSO는 여러 응용 프로그램 시스템에 있습니다. 사용자는 한 번만 로그인하면 상호 신뢰되는 모든 응용 프로그램 시스템에 액세스할 수 있습니다. 여기에는 이 기본 로그인을 다른 애플리케이션의 동일한 사용자에 대한 로그인에 매핑할 수 있는 메커니즘이 포함되어 있습니다. 현재 가장 인기 있는 엔터프라이즈 비즈니스 통합 솔루션 중 하나입니다.
SSO Single Sign-On 시스템에 액세스하는 원리에 대해 간략하게 설명하겠습니다. 전제는 시스템 자체에 완전한 사용자 인증 기능, 즉 기본 사용자 로그인 기능이 있다는 것입니다. 이는 매우 편리합니다. .
SSO 로그인 요청 인터페이스는 일반적으로 인터페이스에 콜백 주소를 더한 것입니다. 이 주소에 액세스하면 콜백 주소로 이동하고 티켓 매개변수를 가져온 다음 인터페이스를 요청하면 사용자 정보를 얻을 수 있습니다. 사용자가 존재하는 경우 해당 사용자가 자동으로 로그인됩니다. 사용자가 존재하지 않는 경우 해당 사용자가 추가되어 로그인됩니다.
예를 들어, 이 SSO 모델은 두 가지 방법을 구현합니다. 하나는 인터페이스 URL을 얻는 것이고, 다른 하나는 티켓을 기반으로 사용자 정보를 얻는 것입니다.
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 Single Sign-On 시스템 액세스 기능의 샘플 분석에 대한 자세한 관련 기사를 보려면 PHP 중국어 웹사이트를 주목하세요!