2010-12-30 13 views
4

StackOverflow에서 사용자 인증을 위해 OpenID를 사용하고 있습니다. 그래도 실제로 할 수 있어야하는 것은 내 사이트의 모든 하위 도메인에서 OpenID가 작동해야한다는 것입니다.하위 도메인 간 단일 OpenID

이 사이트는 각 지역이 가지고 그것을 자신의 하위 도메인의 훨씬 Kijiji 동일하게 동작

  • calgary.example.com
  • toronto.example.com
  • vancouver.example.com

사용자가 "캘거리"에 로그인하고 나중에 "토론토"에 로그인하면 해당 사용자는 "허가"를 받게됩니다 ider, 따라서 새로운 OpenID가 생겨서 새로운 로그인으로 이어집니다.

내 앱에 하나의 계정 아래에 여러 개의 OpenID가있을 수 있지만 관리가 번거로울 수 있습니다.

공급자가 최상위 도메인까지 연결하고 이후 모든 하위 도메인에서 작업 할 수있는 방법이 있습니까?

나는 DotNetOpenAuth를 사용하고 있습니다.

나는 항상 사용자가 http://example.com에 로그인 한 다음 폼 인증 domain = ".example.com"을 사용하여 모든 하위 도메인을 탐색 할 수 있도록해야한다고 생각했습니다.

답변

5

예. ASP.NET 컨트롤에 Realm 속성을 설정하거나 프로그래밍 방식으로 수행하는 경우 IAuthenticationRequest을 "https : //*.example.com"으로 설정합니다. 스키마는 http 또는 https 일 수 있지만 은 ReturnTo 속성에있는 어떤 체계와도 일치해야합니다 (기본값은 현재 요청에서 사용 된 구성입니다).과 일치해야합니다.

Google의 기존 사용자가있는 경우이 한 번만 변경하면 Google에서 사용자의 새로운 식별자를 생성하므로 계정에 대한 액세스 권한이 모두 상실됩니다. 그러므로 항상 하나의 영역을 결정하고 유지하는 것이 중요합니다. 그렇지 않으면 나중에 변경할 때 사용자를 계정에 묶을 수 있도록 주요 관심사를 뛰어 넘어야합니다.

와일드 카드 자체는 걱정하지 마십시오. https : //*.example.com을 귀하의 영역으로 설정하면 해당 패턴과 일치하는 모든 개별 사이트는 모두 Google 식별자를 갖게됩니다.

+0

nm, 알겠습니다. 나는 그것을 'Dim realm = "http : //"& Request.Url.Host'로 변경했고, 그것 모두가 작동합니다. –

+1

최종 표현식에 외모로 와일드 카드가 포함되어 있지 않습니다. 이는 내가 설정 한 것을 달성하지 못했다는 것을 의미합니다. 나는 당신이 찾고있는 것이'Request.Url.Scheme & ": // *."라고 믿는다. & HostStrippedDomainName' –