Я хочу, чтобы разные методы контроллера аутентифицировались разными JWT.
Startup.cs выглядит следующим образом:
services
.AddAuthentication()
.AddJwtBearer("Schema1", options =>
{
...
// use JWT Authentication with secretKey1
var issuerSecretKey = "secretKey1";
options.TokenValidationParameters.IssuerSigningKey = new SymmetricSecurityKey(
Encoding.ASCII.GetBytes(issuerSecretKey));
})
.AddJwtBearer("Schema2", options =>
{
...
// use JWT Authentication with secretKey2
var issuerSecretKey = "secretKey2";
options.TokenValidationParameters.IssuerSigningKey = new SymmetricSecurityKey(
Encoding.ASCII.GetBytes(issuerSecretKey));
});
services.AddAuthorization(options =>
{
options.DefaultPolicy = new AuthorizationPolicyBuilder()
.RequireAuthenticatedUser()
.AddAuthenticationSchemes("Schema1", "Schema2")
.Build();
});
Контроллер
[Authorize(AuthenticationSchemes = "Schema1")]
public ActionResult Method1(int id)
{
//some code
}
[Authorize(AuthenticationSchemes = "Schema2")]
public ActionResult Method2(int id)
{
//some code
}
После этого я беру Почтальон и выполнить запрос к Method1 с JWT с помощью secretKey2, но он успешно проходит авторизацию! Я использовал этот ответ { ссылка }
Что я должен сделать, чтобы авторизовать Method1 с помощью JWT с помощью secretKey1 и авторизовать Method2 с помощью JWT с помощью secretKey2? Может быть, я должен использовать дополнительные механизмы, такие как политика или роль?