私は、Webアプリケーション(Model-View-Controller)テンプレートと.Netを使用して、VS17で新しいASP.NETコアWebアプリケーションプロジェクトを作成しましたフレームワーク "+" ASP.NET Core 2 "を設定します。認証設定は「個別のユーザーアカウント」に設定されています。同じエンドポイントのCookieとベアラ認可を組み合わせたASP.NET Core 2.0
私は次のサンプルのエンドポイントがあります。
[Produces("application/json")]
[Route("api/price")]
[Authorize(Roles = "PriceViwer", AuthenticationSchemes = "Cookies,Bearer")]
public class PriceController : Controller
{
public IActionResult Get()
{
return Ok(new Dictionary<string, string> { {"Galleon/Pound",
"999.999" });
}
}
"Cookies,Bearer"
はCookieAuthenticationDefaults.AuthenticationScheme
とJwtBearerDefaults.AuthenticationScheme
を連結することによって導出されます。
トークンとクッキーの両方の認証方法を使用してアクセスできるように、エンドポイントの許可を設定できるようにすることを目的としています。ここで
私は私のStartup.csでの認証のために持っている設定は次のとおりです。
のでservices.AddAuthentication()
.AddCookie(cfg => { cfg.SlidingExpiration = true;})
.AddJwtBearer(cfg => {
cfg.RequireHttpsMetadata = false;
cfg.SaveToken = true;
cfg.TokenValidationParameters = new TokenValidationParameters() {
ValidIssuer = Configuration["Tokens:Issuer"],
ValidAudience = Configuration["Tokens:Issuer"],
IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(Configuration["Tokens:Key"]))
};
});
、私はブラウザを使用してエンドポイントにアクセスしようとすると、I get the 401 response with a blank html page.
その後、私はログインして、私がしようとするとエンドポイントに再びアクセスするには、私は同じ応答を得ます。
次に、ベアラトークンを指定してエンドポイントにアクセスしようとします。 And that returns the desired result with the 200 response.
私は[Authorize(AuthenticationSchemes = "Cookies,Bearer")]
を削除するのであれば、その後、状況は逆になる - クッキー認証作品と上記使用されるようにしかし同じベアラトークン方式、200を返すことは何も結果が得られていないと単にデフォルトAspIdentityのログインページにリダイレクト。
私はここ2可能性のある問題を見ることができます:
1)ASP.NETコアは「組み合わせ」の認証を許可していません。 2) 'Cookies'は有効なスキーマ名ではありません。しかし、正しいものは何ですか?
お知らせください。ありがとうございました。
Idendityを使用していますか? – Nikolaus
aspnet core 1.0で同じcookieとBearerを使用しています。 2.0への移行私は同じ問題を抱えています:( – Ruchan
アクションで「AuthenticationScheme」といっしょに言及する必要はないでしょう。 – Ruchan