web-dev-qa-db-ja.com

ASP.NET Core 2.0 Preview 1:カスタムログインパスを使用してCookie認証を設定する方法

ASP.NET Core 2.0では、.UseAuthentication()ミドルウェアに重大な変更が加えられ、 ここで言及した古い構文 が機能しなくなりました。

新しいバージョンはaddAuthenticationの設定を処理しているように見えますが、カスタムログインおよびログアウトURLを指定した古いコードを変更する方法に関する詳細はどこにもありません。

        services.AddAuthentication(o =>
        {
            // Where can I specify this?????
            var opt = new CookieAuthenticationOptions()
            {
                LoginPath = "/api/login",
                LogoutPath = "/api/logout",
            };

           o.DefaultSignInScheme = CookieAuthenticationDefaults.AuthenticationScheme;
           o.DefaultAuthenticateScheme = CookieAuthenticationDefaults.AuthenticationScheme;
        });

任意の助けをいただければ幸いです...

11
Rick Strahl

2.0で少し変更されたため更新RTM bits

予想よりもはるかに簡単ですが、 公式ドキュメント はまだ更新されていないため、プレーンCookie authで機能するものは次のとおりです。

構成:

ConfigureServices()で、特定の認証メカニズムを構成します。

_services
    .AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
    .AddCookie(o =>
    {
        o.LoginPath = "/api/login";
        o.LogoutPath = "/api/logout";
        // additional config options here
    });
_

次に、Configure()でミドルウェアを実際に接続します。

_app.UseAuthentication();
_

認証コンポーネントの使用

次に、実際のAuthコンポーネントを使用するために、ロジックは_HttpContext.Authentication_オブジェクトから、コントローラーコードのようなアプリケーションロジックのHttpContextにシフトしました。

_await HttpContext.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme,
            new ClaimsPrincipal(identity));
_

または:

_await HttpContext.SignOutAsync(CookieAuthenticationDefaults.AuthenticationScheme);
_
13
Rick Strahl

投稿した例は、とにかく実際のコードではないようです(つまり、AddCookieAuthenticationへの引数としてではなく、AddAuthentication呼び出し内にあるnew CookieAuthenticationOptions())。 AddAuthorization呼び出し内に認証を追加するのではなく、ここで標準ミドルウェアをセットアップするだけです。 この発表 を参照してください。

古い:

services.AddAuthentication(sharedOptions => 
       sharedOptions.SignInScheme = CookieAuthenticationDefaults.AuthenticationScheme);

app.UseOpenIdConnectAuthentication(new OpenIdConnectOptions
   AutomaticChallenge = true,
   AutomaticAuthenticate = true,

新着:

app.AddAuthentication(o => {
   o.DefaultChallengeScheme = OpenIdConnectDefaults.AuthenticationScheme;
   o.DefaultSignInScheme = CookieAuthenticationDefaults.AuthenticationScheme;
   o.DefaultAuthenticateScheme = CookieAuthenticationDefaults.AuthenticationScheme;
});

そしてその

services.AddXxxAuthentication(new XxxOptions() { ... });

に置き換えられます

services.AddXxxAuthentication(options => {
});

構成を受け入れる他のすべてのメソッドとインラインになります。

また、 ASP.NET Core Announcements GitHub Repository を常に見る価値があります。ASP.NETCore Teamが次のバージョンの重大な変更を発表する場合、そこに特定のマイルストーンを選択するだけです。つまり、 2.0 .0-preview12.0.0-preview2 など.

10
Tseng