2009-04-24 4 views
5

폼 인증을 사용하는 ASP .NET 웹 응용 프로그램이 있습니다. 이 응용 프로그램을 "Foo"라고 부르 자. "Bar"라는 또 다른 ASP .NET 응용 프로그램을 만들고 있습니다.한 ASP .NET 응용 프로그램에서 다른 ASP .NET 응용 프로그램으로 사용자를 안전하게 전송

내가 원하는 것은 사용자가 Foo에 로그인 한 다음 막대 응용 프로그램의 페이지로 연결되는 링크를 클릭하는 것입니다. Bar 응용 프로그램은 Foo 사용자가 다시 로그인 할 필요가 없어야합니다. Foo 앱은 보안 티켓을 Bar 앱에 전달해야하며 사용자는 Bar 앱 내부에서 자신의 비즈니스에 대해 갈 수 있습니다.

또한 Bar 앱에 대한 액세스를 제한하고 싶습니다. 따라서 사용자가 처음 로그인하지 않고 Bar 앱에 액세스하려고하면 Foo 로그인 페이지로 리디렉션됩니다.

이것이 가능합니까? 그렇다면 어떻게 구현해야합니까?

+0

훌륭한 질문입니다. Stackoverflow에서 만나서 반갑습니다! +1! –

답변

2

나는 이것을 한 번했고 PHP 사이트와 ASP.NET 사이트 (나는 ASP.NET 개발자이지만 PHP에 관해서도 약간 알고 있음) 사이에있었습니다.

App1이 사용자의 진입 점이면 로그온 할 때 App1은 사용자 이름과 생성 된 키 (예 : GUID)로 구성된 해당 사용자의 키 - 값 쌍을 만들어야합니다. 프로그래밍 방식으로 App2와 통신하고이 키를 보냅니다 (예 : 백그라운드 스레드 실행). 사용자 JohnDoe가 App1에 성공적으로 로그인했다고 가정 해 보겠습니다.

앱 1은 키 (3l3kjlk3j4lkj34, JohnDoe에)를 생성하는 예는 www.app2.com/SetTempKey.aspx?userId=JohnDoe & 키로 HTTP를 통해 URL을 호출하는 경우 (통신 일종의 통해 앱 2로 전송

= 3l3kjlk3j4lkj34 - 보안상의 이유로 특정 IP의 요청 만 허용하는 페이지).

App2는 임시 액세스 키를 받고 저장합니다. App2가 www.app2.com/login.aspx에 로그인 페이지를 가지고 있다고 가정 해 봅시다.

app1에서 "go to our app2"와 같이 알맞은 레이블을 사용하여 www.app2.com/login.aspx?tempKey=3l3kjlk3j4lkj34에 대한 링크를 생성합니다. 사용자가 링크를 클릭하면 app2의 login.aspx 페이지가 호출됩니다. querystring에서 tempKey querystring 매개 변수가 있는지 확인한 다음 app2에 저장된 임시 키에서 키의 유효성을 검사하면 REALLY이 JohnDoe라는 것을 알 수 있습니다.

App2는 FormsAuthentication.RedirectFromLoginPage ("JohnDoe", true)를 호출하여 간단히 기록합니다 (먼저 사용자 이름과 formsAuth 쿠키가 영구/not_session_lived이어야 함).

... 꽤 많이 있습니다.

+0

확인. 나는 이것이 효과가있을 것이라고 생각한다. 키가 만료되도록 강요 하시겠습니까? 임시 저장소에 만료 날짜를 저장 한 다음 App2에서 키의 유효성을 확인할 때 유효성을 검사합니까? 어떻게 생각해? –

+0

간단한 만료 정책은 Cache 개체에 키를 저장하는 것으로 만료를 설정하면 슬라이딩 또는 절대 만료로 설정할 수 있습니다. 캐시 개체는 HttpRuntime.Cache입니다. –

+0

추가 정보가 필요하면 저에게 연락하십시오. 내 프로필에서 내 이메일 주소를 찾을 수 있습니다. 행운을 빕니다! –

관련 문제