SSO (single sign-on) 영어 전체 이름 Single Sign On (간단히 SSO 라고 함. 여러 응용 프로그램 시스템에서 한 번만 로그인하면 다른 상호 신뢰할 수 있는 응용 프로그램 시스템에 액세스할 수 있다는 해석이다.
그림과 같이 Application1, Application2, Application3, SSO 등 4 개의 시스템이 있습니다. Application1, Application2, Application3 에는 로그인 모듈이 없고 SSO 에는 로그인 모듈만 있고 다른 비즈니스 모듈은 없습니다. Application1, Application2, Application3 에 로그인이 필요한 경우 이는 SSO (single sign-on) 에 대한 Dell 의 정의와 완전히 일치합니다. < P > SSO (단일 사인온) 기술 구현에 대해 이야기하기 전에 일반적인 로그인 인증 메커니즘에 대해 이야기하겠습니다. < P > 위 그림과 같이 브라우저 (Browser) 에서 로그인이 필요한 애플리케이션에 액세스합니다. 사용자 이름과 비밀번호를 기입한 후 로그인 인증을 완료합니다. 이 시점에서 이 사용자의 세션 중 로그인 상태를 yes 로 표시하고 브라우저 (Browser) 에 쿠키를 기록합니다. 이 쿠키는 이 사용자의 고유 식별자입니다. 다음에 우리가 이 앱을 다시 방문할 때, 요청에는 이 쿠키가 실려 있고, 서버측은 이 쿠키에 따라 해당 세션을 찾아 세션을 통해 이 사용자가 로그인했는지 여부를 판단한다. (데이비드 아셀, Northern Exposure (미국 TV 드라마), 성공명언) 특별한 구성을 하지 않으면 이 쿠키의 이름은 jsessionid 이고 값은 서버 (server) 에서 고유합니다.
한 기업은 일반적으로 도메인 이름이 하나뿐이며 보조 도메인 이름으로 서로 다른 시스템을 구별합니다. 예를 들어, 우리는 a.com 이라는 도메인 이름을 가지고 있으며, app1.a.com 과 app2.a.com 이라는 두 가지 비즈니스 시스템이 있습니다. SSO (싱글 사인온) 를 하려면 sso.a.com 이라는 로그인 시스템이 필요합니다.
우리는 sso.a.com 에 로그인하기만 하면 app1.a.com 과 app2.a.com 도 로그인했습니다. 위의 로그인 인증 메커니즘을 통해 sso.a.com 에 로그인했다는 것을 알 수 있습니다. 실제로 sso.a.com 의 서비스측 세션 (session) 에 로그인 상태를 기록하고 브라우저측 (Browser) 의 sso.a.com 에 기록되어 있습니다. 그러면 어떻게 앱 1.A.COM 과 앱 2.A.COM 을 등록할 수 있을까요? 여기에 두 가지 문제가 있습니다: < P > 그렇다면 이 두 가지 문제를 어떻게 해결할 수 있을까요? 첫 번째 문제의 경우 SSO 가 로그인한 후 쿠키의 도메인을 최상위 도메인인 a.com 으로 설정하여 모든 하위 도메인의 시스템이 최상위 도메인의 쿠키에 액세스할 수 있도록 할 수 있습니다. 쿠키를 설정할 때 최상위 도메인과 자체 도메인만 설정할 수 있으며 다른 도메인은 설정할 수 없습니다. 예를 들어, 우리는 자신의 시스템에서 Baidu.com 의 도메인에 쿠키를 설정할 수 없습니다. < P > 쿠키의 문제가 해결되었습니다. session 의 문제를 다시 살펴보겠습니다. 우리는 SSO 시스템에 로그인했고, 이때 app1 을 다시 방문했고, 쿠키도 app1 의 서버 (서버) 로 데려왔는데, app1 의 서버측에서 이 쿠키에 해당하는 세션을 어떻게 찾을 수 있을까? (윌리엄 셰익스피어, Northern Exposure (미국 TV 드라마), 성공명언) 여기서는 그림과 같이 세 시스템의 세션 * * * * 을 즐길 예정입니다. * * * spring-Session 과 같이 session 을 즐길 수 있는 여러 가지 솔루션이 있습니다. 이렇게 두 번째 문제도 해결되었다.
동일한 도메인 아래의 단일 사인온이 구현되지만 실제 단일 사인온은 아닙니다.
동일한 도메인 아래의 SSO (single sign-on) 는 쿠키 최상위 도메인을 활용하는 기능입니다. 다른 영역이라면요? 도메인 간 쿠키는 즐기지 않습니다. 어떻게 해야 합니까? < P > 여기서는 단일 사인온을 위한 표준 프로세스인 CAS 프로세스에 대해 설명하겠습니다. < P > 위 그림은 CAS 공식 홈페이지의 표준 절차입니다. 구체적인 프로세스는 다음과 같습니다. < P > 이 시점에서 도메인 간 단일 사인온이 완료됩니다. 나중에 app 시스템을 다시 방문하면 app 가 로그인됩니다. 다음으로 app2 시스템에 액세스할 때의 프로세스를 살펴보겠습니다. < P > 이렇게 하면 app2 시스템은 로그인 절차를 거치지 않아도 이미 로그인되어 있습니다. SSO, app, app2 는 서로 다른 도메인에 있으며, 이들 사이의 세션 * * * 도 문제없다. < P > 일부 학생들은 SSO 시스템이 로그인한 후 원래 비즈니스 시스템으로 점프할 때 ST 매개 변수를 가지고 있고, 비즈니스 시스템은 ST 를 가지고 SSO 에 다시 접속해 검증해야 한다는 질문을 받았는데, 이 단계는 좀 불필요하다고 생각합니다. (윌리엄 셰익스피어, Northern Exposure (미국 TV 드라마), 공부명언) 그는 SSO 로그인 인증이 통과된 후 콜백 주소를 통해 사용자 정보를 원래 비즈니스 시스템으로 반환하고, 원래 비즈니스 시스템은 로그인 상태를 직접 설정하여 프로세스가 간단하고 로그인을 완료하기를 원합니다. 좋지 않습니까? < P > 사실 이런 문제는 심각한 문제입니다. 제가 SSO 에 로그인하지 않고 브라우저에서 직접 콜백의 주소를 입력하고 위조된 사용자 정보를 가지고 있다면, 비즈니스 시스템도 로그인했다고 생각하시는 건가요? (윌리엄 셰익스피어, Northern Exposure (미국 TV 드라마), 성공명언) 이것은 매우 무섭다. < P > SSO (단일 사인온) 의 모든 프로세스가 소개됩니다. 원칙은 모두 잘 알고 있습니다. 싱글 사인온이 해야 할 일을 요약하다:
자신이 쓴 JWT/TOKEN 문장 참조