OpenIdDictを認証に使用するasp.netコアWebアプリケーションがあります。私は認証されていないAjax呼び出しがレスポンス本体に200とログインフォームを返すことに気付きました。 OpenIdDictが要求を処理してから、ASP.NETコアがそれを処理して200を返すので、これを読んだところから期待される動作です。Startup.csで 'UseIdentity()'が呼び出されているため、ASP.NETコアが処理しています。私がOpenIdDictで見たすべての例は、 'UseIdentity'を呼び出しています。私は2つの質問があります。openIdDictでは、Startup.csに 'UseIdentity()'が必要ですか?
- ASP.NETコアでリクエストを処理したくない場合は、単に 'UseIdentity()'を削除できますか?私はそれを試して、今は200の代わりに401を取得します。これに何らかの害がありますか、OpenIdDictに 'UseIdentity()'が必要ですか?
- UIビューのログインにリダイレクトする機能を失いたくない場合は、これを実行してOnRedirectToLoginを上書きするのが最も簡単で安全な方法ですか?コード例以下:
options.Cookies.ApplicationCookie.Events = new CookieAuthenticationEvents { OnRedirectToLogin = ctx => { if (ctx.Request.Path.StartsWithSegments("/api") && ctx.Response.StatusCode == (int) HttpStatusCode.OK) { ctx.Response.StatusCode = (int) HttpStatusCode.Unauthorized; } else { ctx.Response.Redirect(ctx.RedirectUri); } return Task.FromResult(0); } };
コードサンプルのソース:ここでは、この問題のhttps://devblog.dymel.pl/2016/07/07/return-401-unauthorized-from-asp-net-core-api/
さらなる議論:https://github.com/aspnet/Security/issues/804
これは素晴らしいです。ありがとう! – Bloodhound
Core 2.0とOpenIdDict 2.xで同じことを行うためのサンプルプロジェクトやガイドがありますか? – Bloodhound
すべてのOpenIddictサンプルが2.x用に更新されました:https:// github。com/openiddict/openiddict-samplesにあります。残念なことに、パスベースの認証ミドルウェアの選択はもはや2.xではサポートされておらず、[Authorize(AuthenticationSchemes = "Bearer")]アプローチを使用することをお勧めします。詳細についてはhttps://github.com/aspnet/Announcements/issues/262をご覧ください。 – Pinpoint