2011-11-07 4 views
1

저는 Windows Identity Foundation을 사용하여 사이트 로그인을 관리하고 있습니다.Windows ID 기반 - 클레임 로그 아웃 또는 업데이트

사용자가 로그인 할 때 요청에 대한 일부 정보를 사용하고 있습니다. 그것은 모두 잘 작동하지만, 지금은이 시나리오 관리 할 필요가 :

  1. 사용자가 이미 athenticated, 로그인 유효한 토큰을 갖고.
  2. 하지만 사용자가 다른 사이트에서 리디렉션을 통해 다시 탐색하기로 결정했습니다.
  3. 요청에 대한 정보가 다릅니다. 그는 자연스럽게 자신의 새로운 정보
  4. 또는 자신의 기존 토큰을 업데이트하여 새로운 토큰을 생성하도록 -
  5. 나는
      그를 아웃
    • 을 하나합니다.

그래서 내 질문은 :

  1. 어떻게 윈도우 신원 재단에서 로그 아웃합니까?
  2. 또는 기존 클레임을 어떻게 업데이트합니까?

나는이 코드를 시도 :

public void ExpireClaims(HttpContextBase httpContextBase) 
    { 
     var module = 
      httpContextBase.ApplicationInstance.Modules["WSFederationAuthenticationModule"] as 
      WSFederationAuthenticationModule; 
     if (module == null) 
     { 
      return; 
     } 
     module.SignOut(true); 
    } 

을하지만 모듈은 항상 곁에 null입니다.

그리고 난이 시도 :

public void FederatedSignOut(string replyUrl) 
    { 
     WSFederationAuthenticationModule.FederatedSignOut(null, new Uri(replyUrl)); 
    } 

을하지만 난이 작업을 수행 할 때 내가 null 참조 execption를 얻을.

대단히 감사합니다.

답변

8

는 기본적으로 로그 아웃하는 것은 너무 쿠키를 삭제한다 :

FormsAuthentication.SignOut

또는

FederatedAuthentication.SessionAuthenticationModule.SignOut

또는

FederatedAuthentication.SessionAuthenticationModule.DeleteSessionTokenCookie

가 작동합니다.

또는 FederatedPassiveSignInStatus (도구 상자에 있어야 함)을 사용하십시오. SignOutAction 속성을 FederatedSignOut으로 설정하면 컨트롤에서 STS 세션도 지워집니다.

+0

감사합니다. FederatedAuthentication.SessionAutheticationModule.SignOut을 사용하고 있습니다. FormsAuthentication.SignOut을 사용하는 것만으로도 사용자가 현재있는 사이트가 아닌 페더레이션 사이트에 액세스 할 수 있음을 알게되었습니다. 최종 옵션도 조사하게됩니다. 다시 한번 감사드립니다. – Sean

+0

그 후, 위의 방법은 현재의 의존 당사자로부터 나를 사인했을뿐입니다.그들은 신뢰하는 모든 당에서 나를 사인하지 않았다. 나는 내 자신의 사용자 정의 연합 사인을 구현해야만했다. 여기 내 다른 질문에 대한 링크가 있습니다 : http://stackoverflow.com/questions/8228746/wif-federatedsignout-not-signing-user-out-all-sites – Sean

+0

또한, 나는 당신이 클레임을 갱신 할 수 없다는 것을 발견했습니다. 토큰. 현명한 행동을 보이는 보안 관점에서! – Sean

관련 문제