>백엔드 개발 >PHP 튜토리얼 >PHP에 구현된 SSO Single Sign-On 시스템 액세스 기능의 분석 예

PHP에 구현된 SSO Single Sign-On 시스템 액세스 기능의 분석 예

墨辰丷
墨辰丷원래의
2018-06-01 09:59:021823검색

이 글에서는 주로 PHP로 구현된 SSO Single Sign-On 시스템 접근 기능을 소개하고, SSO Single Sign-On 시스템 접근 원리와 PHP 관련 구현 기술을 간략하게 분석합니다. 도움이 필요한 친구들은 이를 참고할 수 있습니다

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(&#39;请先授权&#39;, sprintf(&#39;<a href="%s">点击登录单点登录系统</a>&#39;, SSOlogin::getInstance()->getAuthUrl()));
  }
  $userInfo = SSOlogin::getInstance()->getInfoFromTicket($ticket);
  if (empty($userInfo[&#39;username&#39;])) {
    return $this->renderAuthError(&#39;请先授权&#39;, sprintf(&#39;<a href="%s">点击登录单点登录系统</a>&#39;, SSOlogin::getInstance()->getAuthUrl()));
  }
  $username = $this->getUserName($userInfo[&#39;username&#39;]);
  $user = User::find()->canLogin()->username($username)->one();
  if (!$user) {
    $newUser = [];
    $newUser[&#39;username&#39;] = $userInfo[&#39;username&#39;];
    $newUser[&#39;email&#39;] = $this->getUserName($userInfo[&#39;username&#39;]);
    $newUser[&#39;role&#39;] = User::ROLE_DEV;
    $newUser[&#39;is_email_verified&#39;] = 1;
    $newUser[&#39;realname&#39;] = $userInfo[&#39;truename&#39;];
    $user = $this->addUser($newUser);
  }
  $isLogin = Yii::$app->user->login($user, 3600 * 24 * 30);
  if ($isLogin) {
    $this->redirect(&#39;/task/index&#39;);
  }
  return true;
}

로 점프하는 것입니다. 이 논리를 보면 이해할 수 있습니다. 제어 장치. SSO 인터페이스의 기능은 사용자 정보를 얻는 것입니다. 이 사용자 정보를 시스템 사용자 테이블과 비교하십시오. 사용자가 있으면 로그인하십시오. 사용자가 없으면 사용자를 작성하고 로그인하십시오.

이것은 백엔드에 통합된 내부 단일 지점 시스템입니다. 다른 SSO는 이와 다를 수 있지만 기본 원칙과 프로세스는 유사합니다.

요약: 위 내용은 이 글의 전체 내용입니다. 모든 분들의 공부에 도움이 되었으면 좋겠습니다.

관련 추천:

php_imagick 복고 효과를 얻는 방법

JS, php키워드 검색 기능에 대한 자세한 설명

php+mysql 처리 시간

위 내용은 PHP에 구현된 SSO Single Sign-On 시스템 액세스 기능의 분석 예의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.