2009-08-07 5 views
12

나는 사용자 계정 정보를 공유 할 일련의 사이트에 대한 계획을 수립하고 있습니다. 일단 사용자가 OpenID를 사용하여 로그인하면 사이트에 액세스 할 수 있고 자신이 누구인지 알 수 있습니다.OpenID를 사용하는 ASP.NET MVC 다중 사이트 SSO

이것을 달성하기 위해 사용할 수있는 일반적인 패턴/모범 사례는 무엇입니까?

+0

나는 비슷한 문제가 있다고 생각합니다. 구현 방법을 설명해 주시겠습니까? –

답변

12

모든 사이트가 URL에 공통 호스트 이름을 공유하는 경우 쿠키의 경로를 "/"로 지정하는 인증 쿠키 (FormsAuthentication.SetAuthCookie)를 설정하여 모든 사이트에서 사용자가 로그인 된 것을 볼 수 있습니다.

사이트가 공통 호스트 이름을 공유하지 않는 경우 "한 번 로그인하여 모든 곳에서 로그인하십시오"라는 유일한 방법은 모든 인증이 웹 사이트에서 발생하는 것입니다. 한 사이트 (아마도 사용자 인증 전용 사이트)와 다른 사이트에서 인증을 위해 사용자를 해당 사이트로 리디렉션 한 다음 해당 사이트는 다시 리디렉션됩니다. 본질적으로, 인증 사이트는 아이덴티티 프로 바이더가되며, OpenID Provider의 역할을 거의 정확하게 채 웁니다 (사실 DotNetOpenAuth가이 정확한 목적으로 사용될 수 있습니다). 귀하의 목표가 사용자의 OpenID로 로그인하게하는 것 같기 때문에 해당 인증 사이트의 OpenID 제공 업체가 OpenID를 사용하여 사용자를 인증 할 수 있습니다. 자신의 순수 Delegation OpenID Provider는 auth 요청의 영역이 신뢰할 수있는 사이트 링 중 하나 인 경우 checkid_immediate 요청에 즉시 응답하도록 작성 될 수 있습니다. 따라서 모든 사이트에서 싱글 사인온을 적용 할 수 있습니다.

+0

RE가 글로벌 인증 쿠키를 설정합니다. 그로 인해 취약점이 발생하지 않습니까? 이런 종류의 공격이 무엇인지는 잊었지만 authcookie가 도난당한 때입니다. 아니면이게 안전하지 않다고 오해하니? 한 가지 더 - 새로운 스택 Exchange 사이트가 어떻게 수행합니까? (메타에 로그인 한 후 자동으로 메타에 로그인 함)? –

+0

이것은 글로벌 쿠키가 아닙니다. 대부분의 쿠키와 마찬가지로 단일 인터넷 호스트만큼 광범위합니다. 해당 호스트의 모든 사이트를 제어하거나 신뢰하는 경우에만이 작업을 수행하려고합니다. 모든 * .stackexchange.com 사이트가 사용자 로그인을 공유하는 경우 쿠키는 도메인 전체에 해당됩니다. –

1

Microsoft에서 다음과 같은 패턴을 웹 서비스 보안에 & 사례를 고려하십시오 :

중개 인증 -입니다 http://msdn.microsoft.com/en-us/library/aa480560.aspx

주요 주제 - 웹 서비스 보안

시나리오, 패턴 및 구현 지침서를 웹 서비스 향상 (WSE) 3.0

http://msdn.microsoft.com/en-us/library/aa480545.aspx

궁극적으로 당신이 할 수있는 많은 방법을 theres. 한 웹 사이트에서 다른 도메인을 가리키는 토큰을 사용하여 URL을 작성하여 간단한 단일 로그온을 달성했습니다. 인코딩 된 & 암호화 된 토큰에는 세부 정보가 포함되어 이전 도메인으로 다시 제출됩니다. 두 번째 도메인에서 들어오는 요청을 받으면 기본 웹 서비스는 들어오는 요청의 토큰이 두 도메인에 알려진 공유 개인 키를 사용하여 이전 도메인에서 유효한지 확인합니다.