2008-09-04 9 views
95

당사는 여러 도메인이 각 도메인에서 호스팅되는 하나의 웹 사이트로 설정되어 있습니다. 현재 각 도메인에는 쿠키를 통해 수행되는 자체 인증이 있습니다.여러 도메인에 단일 로그온

한 도메인에 로그온 한 사용자가 다른 도메인에 액세스해야하는 경우 다른 도메인에있는 다른 웹 사이트에서 다른 자격 증명을 사용하여 다시 로그인해야합니다.

싱글 사인온 (SSO)으로 옮길 생각 이었기 때문에이 번거 로움을 없앨 수있었습니다. 이 점에 관해서 어떤 경험도 없기 때문에 이것이 어떻게 성취 될 수 있는지에 대한 아이디어는 고맙게 생각합니다.

감사합니다.

편집 : 웹 사이트에는 인터넷 (외부) 및 인트라넷 (회사 내부에서 사용) 사이트가 혼합되어 있습니다.

+0

[OpenID] (http://openid.net/)의 작업처럼 들리지만 로그인 도메인의 ID 만 허용하십시오. – Neall

답변

2

Active Directory를 사용하는 경우 각 앱에서 인증을 위해 AD를 사용할 수 있으므로 로그인이 원활해질 수 있습니다.

그렇지 않은 경우 응용 프로그램이 백그라운드에서 서로 이야기 할 수 있으면 sessionids를 사용하고 다른 모든 응용 프로그램에 서비스를 제공하는 하나의 응용 프로그램을 처리하도록 할 수 있습니다.

+0

은 domain1.com 및 domain2.com과 domain3.com에 사용자 이름과 비밀번호를 입력해야만이 세션에 처음 방문하게됩니다. – HaBo

14

호스트 이름은 어떻게 다릅니 까?

이 호스트가 공유 할 수있는 쿠키 :

  • mail.xyz.com
  • www.xyz.com
  • logon.xyz.com

그러나 이러한 작업을 수행 할 수 없습니다

  • abc.com
  • xyz.com
  • www.tre.com 당신은 쿠키 기반 솔루션을 세게 할 수있는 전자의 경우

. GUID와 데이터베이스 세션 테이블을 생각해보십시오.

76

다음과 같이 내가 여기에 구현 작동하신 SSO 솔루션 :

  1. 로그인을 관리하는 스크립트 master_login.php와 마스터 도메인, login.mydomain.com이 있습니다.
  2. 각 클라이언트 도메인에는 client_login.php 스크립트가 있습니다.
  3. 모든 도메인에는 공유 사용자 세션 데이터베이스가 있습니다.
  4. 클라이언트 도메인에 로그인해야 할 경우 마스터 도메인 (login.mydomain.com/master_login.php)으로 리디렉션됩니다. 사용자가 마스터에 로그인하지 않은 경우 사용자로부터 인증을 요청합니다 (즉, 로그인 페이지 표시). 사용자가 인증되면 데이터베이스에 세션이 만들어집니다. 사용자가 이미 인증 된 경우 데이터베이스에서 세션 ID를 찾습니다.
  5. 마스터 도메인은 세션 ID를 전달하는 클라이언트 도메인 (client.mydomain.com/client_login.php)으로 돌아갑니다.
  6. 클라이언트 도메인은 마스터로부터 세션 ID를 저장하는 쿠키를 생성합니다. 클라이언트는 세션 ID를 사용하여 공유 데이터베이스를 조회하여 로그인 한 사용자를 찾을 수 있습니다.

참고 : master_login.php 만의 화이트리스트

  • 마스터와 클라이언트의 도메인으로 리디렉션 4122
    • 세션 ID가 RFC에서 알고리즘으로 생성 된 고유 글로벌 식별자 다른 최상위 도메인에있을 수 있습니다. 예 : client1.abc.com, client2.xyz.com, login.mydomain.com
  • +0

    이것은 좋은 해결책 인 것 같습니다. 데이터베이스에 무엇을 저장합니까? 그것은 (session_id, username, hashed_password)입니까? –

    +1

    당신은 어떻게 master 도메인 인 login.mydomain.com이 다운되는 경우를 처리합니까? 그 시점에서 로그인이 불가능합니까? – jjxtra

    +3

    본문에서 어떤 코드 예제 나 github repo가 ​​생성 되었습니까? –

    30

    바퀴를 다시 발명하지 마십시오. JOSSO, OpenSSO, CAS, Shibboleth 및 기타와 같은 오픈 소스 교차 도메인 SSO 패키지가 많이 있습니다. Microsoft 기술 전체 (IIS, AD)를 사용하는 경우 Microsoft Federation (ADFS)을 대신 사용할 수 있습니다.

    +2

    절대적으로 - 너무 많은 사람들이 자신의 보안 솔루션을 사용하여 자신이 재생, XSRF 또는 다른 공격에 취약하다는 것을 알게되었습니다. –

    +3

    +1 보안 휠을 재발행해서는 안됩니다. –

    +6

    OpenSSO가 작동하지 않으며 JOSSO 및 CAS는 Java 솔루션입니다. 단지 FYI – OneHoopyFrood

    관련 문제