1

인증에 WSFederationAuthenticationModule을 사용하고 있습니다. 사용자가 인증되지 않으면 ADFS 웹 에이전트로 리디렉션됩니다. ADFS 쿠키는 응용 프로그램 세션보다 오래 지속되기 때문에 때로는 응용 프로그램으로 바로 돌아갈 수 있습니다.WSFederationAuthenticationModule을 사용할 때 세션이 만료 된 후 로그 아웃 요청을 올바르게 처리하는 방법은 무엇입니까?

거의 언제나 사용자가 원하는 것을 시도하고 사용자가 세션을 만료하고 다시 로그인하면 (다시 로그인 한 후나 계속해서 좋은 쿠키를 찾은 후) 리디렉션됩니다.) 그리고 나서 그들은 그들이 원하는 것을 할 수 있습니다. 그러나 가 '로그 아웃'을 클릭하면 로그 아웃됩니다.. 그러나 모듈은 가로 채서이를 다시 돌려 보낸 다음 세션이 복원되면 다시 '로그 아웃'을 클릭해야합니다.

로그 아웃은 MVC API 컨트롤러 동작입니다. 나는 그것이 앱의 정리 작업을 유발하기 때문에 보안 뒤에 숨기고 싶지는 않다. (로그 아웃을 클릭하지 않는다면 잠재적으로 이러한 일은 일어나지 않을 것이기 때문에 이것이 또한 문제라고 생각한다. 다른 문제입니다).

WSFederationAuthenticationModule 및 ADFS로 뭔가를 놓치고 있어야하는 것처럼 느껴집니다 ... 로그 아웃 작업을 익명/공개 작업으로 설정하는 것에 대해 옳지 않은 점이 있습니다. WSFederationAuthenticationModule의 의도에서이 점에 대해 약간의 고려가 있어야하지만이를 고정시킬 수는 없습니다.

+0

web.config에서 모듈을 어떻게 사용합니까? –

답변

0

내가 이해하는 한, 인증은 인증 쿠키를 통해 유지됩니다. 로그 아웃 작업에서 앱 컨트롤러에 다음을 추가해야합니다.

 FederatedAuthentication.SessionAuthenticationModule.SignOut(); 
    return View("LogOut"); 

그러면 로그 아웃됩니다. 이제 인증되지 않은 사람이 "LogOut"보기에 액세스 할 수없는 경우 로그인 페이지로 다시 리디렉션됩니다. 또 다른 한가지는 위에서 언급 한 내용이 세션 만료 후 누군가가 로그 아웃 페이지에 액세스하려고 시도한 후에도 (세션이 이미 만료되었지만) 먼저 인증을 위해 로그인 모듈로 리디렉션된다는 것입니다 (인증해야하기 때문에). 로그 아웃 페이지에 액세스)에 대해, 응이 같은 뭔가를 할 수 :

 if (User.Identity.IsAuthenticated) 
     ...u'r logout logic goes here together with other clean-up... 
    else 
     ...u could choose to return a view which says he is already logged out 

또는 로그인 서비스 측

(당신이 그것을 제어 할 경우) 요청이 어디에서 오는 확인하고 그에 따라 조치를 취할 수 있습니다.

+0

아. 내가 지금 무언가를 본다. 사람이 인증되지 않았다면 로그인 페이지로 이동하지만 ADFS이고 쿠키가 여전히 유용 할 수 있으며 (우리 앱과 독립적이다), 리디렉션은 그들은 다시 보내질 것입니다. – BigOmega

+0

사람이 여전히 좋은 쿠키를 가지고 있다면 로그인 페이지로 돌아 오지 않습니다. (좋은 인증 쿠키를 사용하면 로그 아웃 작업에 액세스 할 수 있기 때문에) -> 로그 아웃 작업이 실행됩니다. 쿠키가 만료되고 로그 아웃 작업에 인증 된 사용자가 필요한 경우 ADFS로 리디렉션됩니다. 그것은 모두 귀하의 로그 아웃 작업에 대한 액세스를 제어하는 ​​방법에 달려 있습니다. 로그 아웃 작업을 공개적으로 남겨두고 위와 같이 자세한 내용을 보려면 내부에 체크를 할 수 있습니다. – inniko