양식 인증을 사용하여 기존 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 또는 비슷한 것을 사용하려고 시도합니다 (아마도 동일한 문제가있을 것입니다). - 외부 인증을 수행하십시오. 손으로 모든 것을 구현하십시오.
누구든지이 작업을 수행 할 수 있습니까? 미리.