2016-09-06 9 views
0

양식 인증을 사용하여 기존 asp.net webforms 애플리케이션에 Facebook (및 나중의 Google 등) 인증을 추가해야합니다.Forms 인증 및 owin 페이스 북 인증 나란히 (웹 양식)

거의 없지만 formsauthentication과 owin 인증간에 충돌이있는 것 같습니다. 내 솔루션은 표준 VS 2015 템플릿을 기반으로합니다.

관련 코드는 다음과 외부 인증 공급자 (페이스 북)이됩니다로 리디렉션 : 내가 폼 인증을 해제하는 경우

string redirectUrl = 
       ResolveUrl(String.Format(CultureInfo.InvariantCulture, 
        "~/Account/RegisterExternalLogin?{0}={1}&returnUrl={2}", IdentityHelper.ProviderNameKey, 
        provider, ReturnUrl)); 
      var properties = new AuthenticationProperties { RedirectUri = redirectUrl }; 

      Context.GetOwinContext().Authentication.Challenge(properties, provider); 
      Response.StatusCode = 401; 
      Response.End(); 

이 작동합니다. 내가 폼 인증이있는 경우, 사용자는 Web.config의에 정의 된 폼 인증 URL로 리디렉션됩니다 :

<authentication mode="Forms"> 
     <forms name=".ASPXAUTH_Test" loginUrl="~/start/login.aspx" timeout="60" > 
     </forms> 
    </authentication> 
내 understandint에서

HTTP 상태 코드 (401)에서 web.config에서 URL로 리디렉션을 트리거 . 다른 상태 코드를 설정하려고했지만 전혀 작동하지 않습니다. web.config에서 양식 인증을 해제해도 실제 로그인 프로세스가 계속 작동하지만 (놀라 울 정도로) 보호되지 않은 페이지에 액세스하는 동안 로그되지 않은 대신 IIS 오류 페이지가 표시됩니다.

내가 지금까지 모든 대안이 나에게 유혹하지 않는 것

:-(제대로 함께 작동하도록 작업 폼 인증 및 owin 외부 인증을받을 수 없다는 것 : - 신원 프레임 워크로 전환 (우리의 특정 환경에서는 이것이 절대적으로 선택 사항이 아닙니다.) 완성을 위해 언급 한 것입니다. - web.api 또는 비슷한 것을 사용하려고 시도합니다 (아마도 동일한 문제가있을 것입니다). - 외부 인증을 수행하십시오. 손으로 모든 것을 구현하십시오.

누구든지이 작업을 수행 할 수 있습니까? 미리.

답변

0

할렐루야는, I는 솔루션을 발견

는 형태가 응답 리디렉션 방지 할 수있다 닷넷 4.5

: Response.SuppressFormsAuthenticationRedirect = TRUE;

  var owinContext = Context.GetOwinContext(); 
      owinContext.Authentication.Challenge(properties, provider); 
      Response.SuppressFormsAuthenticationRedirect = true; 
      Response.StatusCode = 401; 
      Response.End(); 
:

그래서 작업 코드는 같을 것이다