2017-11-02 9 views
3

여러 ASP.NET MVC 5 기반 응용 프로그램이 다른 웹 풀이있는 동일한 IIS 서버에서 실행됩니다.내 ASP.Net MVC 5 응용 프로그램간에 Windows 인증 세션을 통과하는 방법이 있습니까?

모든 내 앱은 Windows 인증을 사용하여 사용자를 로그인합니다. 내 문제는 사용자가 각 앱에 대해 인증을 받아야만 사용할 수 있다는 것입니다.

저는 인증을 관리하고 창 인증 세션을 나머지 응용 프로그램에 전달할 새 응용 프로그램을 만드는 방법을 모색 중입니다. 따라서 기존 응용 프로그램에서는 사용 가능한 세션이 없으면 새로운 응용 프로그램 인 authenticationBroker 응용 프로그램으로 리디렉션됩니다. 내 인증 브로커는 사용자에게 Windows Credentialial을 제공하라는 메시지를 표시합니다. 일단 인증되면 사용자는 인증 된 세션과 함께 리퍼러 응용 프로그램으로 리다이렉트되어 필요한 경우 다른 통합 서비스에 동일한 세션을 전달할 수 있습니다.

사용자가 인증 된 후에 내 인증 브로커를 디자인하여 어딘가에 데이터베이스에 저장할 수 있습니다. 그런 다음 해당 토큰을 사용하여 사용자를 검색하여 사용자 ID를 만들 수 있습니다. 그러나 이것은 IIS 인증 세션을 응용 프로그램과 공유하지 않고 대신 토큰을 공유합니다.

실제 Windows 인증 세션을 모든 응용 프로그램에 전달하고 관리하는 인증 브로커를 만들려면 어떻게해야합니까?

답변

0

확실히 세션 상태를 공유 할 수 있습니다.

당신이 인증은 NTLM 또는 기본을 사용하는 경우에 따라 달라집니다 공유 할 수 있는지 여부 : 이 (https://www.codeproject.com/Articles/1040453/ASP-NET-Session-State-Management-with-Redis-Local 예 레디 스로이 작업을 수행하는 방법을 여기 참조) 프로세스를 통해 세션을 배포하는 설치에 영구 공유 시설을 필요로 입증. 이것이 NTLM으로 달성 될 수 있는지 확신 할 수 없습니다. 나는이 티켓이 사용자 + 프로세스에 발행되기 때문에 Kerberos로는 얻을 수 없다고 확신합니다. (같은 사용자로 모든 앱 풀을 실행하는 행운을 가질지라도 ...)

(인트라넷과는 대조적으로) 인터넷에서 사용할 수 있습니다. Windows 인증 옵션을 사용하지 않는 것이 좋습니다. 대신 Windows 인증 - 쿠키 또는 Windows 인증 - 토큰 대체를 선택하십시오. 당신이 설명한 STS/브로커로 행해지면 발행 된 쿠키/토큰이 3 가지 앱 모두에서 인정되는 한 3 가지 별도의 로그인 페이지를 실행할 수 있지만 이상한 접근 방식처럼 들릴 수는 있지만 그 이유는, 다른 시간대 나 기존 코드베이스에서 로그인 페이지를 다르게 브랜드화해야 할 필요성).