>  기사  >  백엔드 개발  >  PHP에서 SSO 로그인을 구현하는 방법

PHP에서 SSO 로그인을 구현하는 방법

藏色散人
藏色散人원래의
2021-12-30 10:06:192535검색

PHP에서 SSO 로그인을 구현하는 방법: 1. 사용자는 로그인 페이지에 들어가 사용자 정의 SID를 생성하고 이를 redis 및 쿠키에 씁니다. 2. 비즈니스 BaseController의 생성자에서 redis를 업데이트하는 작업을 작성합니다. JS는 점프 이벤트를 구성하고 서버는 SID를 기반으로 사용자의 Redis 저장소를 확인합니다.

PHP에서 SSO 로그인을 구현하는 방법

이 문서의 운영 환경: Windows 7 시스템, PHP 버전 7.1, Dell G3 컴퓨터.

PHP에서 SSO 로그인을 구현하는 방법은 무엇입니까?

SSO 싱글 사인온 설계 및 PHP 구현

먼저 싱글 사인온 SSO 관련 개념을 숙지하는 것이 좋습니다.

1. SSO: Single Sign-On, One Login, 모든 관련 시스템 입력 가능, 반복 로그인 필요 없음

2. 구현 계획: S[ID] + [Cross-domain SID]를 공유합니다. [최상위 도메인 이름] 쿠키

3. PHP 세션을 포기하고 Redis에 사용자 정보를 저장합니다.

4. 사용자가 합법적으로 작업할 때마다 비즈니스 BaseController 생성자에서 Redis를 업데이트하는 작업을 작성합니다. Redis에 저장된 사용자 로그인 상태의 만료 시간 -- 세션 만료를 시뮬레이션하기 위한 목적

5. 싱글 사인온의 특정 SSO 구현: (PHPsessionId는 더 이상 사용되지 않음) -- 인증된 사용자 로그인 API는 SSO 서버에 배치됩니다. 다른 로그인 페이지에서는 이 인터페이스를 호출합니다.

1) SSO 싱글 사인온 인증: 사용자는 사용자 정의 SID를 생성하기 위해 로그인 페이지에 들어가 이를 Redis 및 쿠키에 기록하고 계정 비밀번호를 제출하고 통과하도록 SSO 인증 API를 조정합니다. SSO는 사용자를 다음과 같이 바인딩해야 합니다. 쿠키의 SID, (LoginAction/ssologin /321 라인: inside api::get)

로컬 서버는 토큰(둘 다 사용자 정의 필드 및 규칙)을 생성하고 이를 Redis에 저장합니다. 유효 기간은 30분을 권장합니다.

2) 비즈니스 BaseController 생성자에 Redis를 업데이트하는 작업을 작성합니다. 비즈니스가 있는 경우 해당 SID 및 토큰 유효 기간이 업데이트됩니다(즉, 30분 동안 작업이 없으면 로그인 상태). 만료), -- 세션 만료를 시뮬레이션하는 것이 목적입니다

3) 쿠키 도메인 이름에 저장되는 SID는 [.example.com]과 같은 최상위 도메인 이름이어야 하며, 쿠키 유효 기간은 1일 것을 권장합니다. 월

4) 사용자가 방금 로그인한 도메인 이름 페이지에서 다른 하위 도메인 를 클릭하면 쿠키가 자체적으로 일반 텍스트 SID 또는 토큰을 가져올 필요가 없습니다. SID에서 서버는 SID에 해당하는 redis 데이터가 쿠키의 SID를 기반으로 유효한지 확인하기 위해 SSO 인증 인터페이스로 이동합니다.

6. [.example.com]이 아닌 도메인 이름(예: erji.mogo.com)에 로그인했지만 동일한 SSO 인증 시스템을 사용하고 있습니다. 어떻게 해야 합니까?

방금 로그인한 도메인 이름 페이지에 여전히 있습니다. JS는 점프 url?&SID=xxx로 충분합니다. jQuery.cookie.js를 사용하여 쿠키에서 SID를 가져올 수 있습니다. 서버는 또한 SID를 기반으로 SID를 확인하여 사용자의 Redis 데이터가 만료되었는지 여부를 확인합니다.

추천 학습: "

PHP 비디오 튜토리얼

"

위 내용은 PHP에서 SSO 로그인을 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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