2016-09-06 20 views
0

フォーム認証を使用して既存のasp.net webformsアプリケーションにFacebook(および後でgoogleなど)認証を追加する必要があります。Forms認証とowin facebook認証(ウェブフォーム)

ほぼですが、フォーム認証とオーファン認証の間に競合があるようです。私のソリューションは、標準のVS 2015テンプレートに基づいています。次のように

外部認証プロバイダ(Facebookの)にリダイレクトするために、関連するコードは次のとおりです。

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などを使用しようとしました(これはおそらく同じ問題を抱えています) - 外部認証を許可します手ですべてを実装する

誰もがこの仕事をすることができましたか? あらかじめ。フォームが応答でリダイレクトを防止することが可能である。ネット4.5から

答えて

0

Hallelujaは、私は解決策を見つけた Response.SuppressFormsAuthenticationRedirect =はtrue。

ので、作業のコードは次のようになります。

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