6

Facebook/Google認証のみを使用するASP.NET 5 MVC 6アプリを作成しています。私はまた、全体のASP.NETアイデンティティなしクッキーのミドルウェアを使用しようとしている - この記事次 https://docs.asp.net/en/latest/security/authentication/cookie.html'SignInScheme'オプションを指定する必要があります

だから私は認証なしで空白のアプリで開始、その後Microsoft.AspNet.Authentication.Cookiesを追加し、 Microsoft.AspNet.Authentication.Facebook NuGetパッケージには、私が必要としないものは何も含まれていない非常に最小限のアプローチをとるためにパッケージされています。

Startup.csのConfigureに次のコードを追加しましたが、 "SignInSchemeオプションを指定する必要があります"というエラーが表示されています。私が逃しているものは何ですか?あなたが見ているエラーメッセージによって示されているように

app.UseCookieAuthentication(options => 
      { 
       options.AuthenticationScheme = "MyCookieMiddlewareInstance"; 
       options.LoginPath = new PathString("/Accounts/Login/"); 
       options.AccessDeniedPath = new PathString("/Error/Unauthorized/"); 
       options.AutomaticAuthenticate = true; 
       options.AutomaticChallenge = true; 
      }); 

      app.UseFacebookAuthentication(options => 
      { 
       options.AppId = "myFacebookAppIdGoesHere"; 
       options.AppSecret = "myFacebookAppSecretGoesHere"; 
      }); 

答えて

8

は、あなたが自分のFacebookのミドルウェアオプションにoptions.SignInSchemeを設定する必要があります。あなたもConfigureServicesからグローバルに設定することができ、

app.UseFacebookAuthentication(options => { 
    options.AppId = "myFacebookAppIdGoesHere"; 
    options.AppSecret = "myFacebookAppSecretGoesHere"; 

    // This value must correspond to the instance of the cookie 
    // middleware used to create the authentication cookie. 
    options.SignInScheme = "MyCookieMiddlewareInstance"; 
}); 

を代わりに(それが設定されますすべての認証ミドルウェアはoptions.SignInSchemeを設定する必要はありません):

public void ConfigureServices(IServiceCollection services) { 
    services.AddAuthentication(options => { 
     // This value must correspond to the instance of the cookie 
     // middleware used to create the authentication cookie. 
     options.SignInScheme = "MyCookieMiddlewareInstance"; 
    }); 
} 
+0

ありがとうございます。フォローアップの質問: "MyCookieMIddlewareInstance"は私のクッキーの名前ですか?彼がFacebook/Googleによって認証された後に登録するための一時クッキーを作成する必要があります。私は別のクッキー名を使用しますか?その場合、そのCookie名はどこで設定しますか? – Sam

+0

いいえ、AuthenticationSchemeはCookie名に影響を与えません。純粋に内部識別子です。クッキー名を変更するには、 'CookieName'プロパティを使用します。 – Pinpoint

+0

明示的なAuthenticationSchemeを設定していない場合は、CookieAuthenticationDefaults.AuthenticationSchemeです。 – Kugel

関連する問題