Когда я использую токен Bearer с контроллером AspNetCore, защищенным [Authorize]
, я получаю сообщение журнала:
info: Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationHandler[7]
Identity.Application was not authenticated. Failure message: Unprotect ticket failed
Я пытаюсь понять, что это означает и что может быть причиной этого.
Класс Api Startup
имеет следующую настройку.Api использует AspNet Identity Core.
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<UserAccountDbContext>(options => options.UseSqlServer(connectionString,
sql => sql.MigrationsAssembly(MigrationsAssembly)));
services.AddIdentity<UserAccount, IdentityRole>()
.AddEntityFrameworkStores<UserAccountDbContext>();
services.AddTransient<UserManager<UserAccount>>();
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
services.AddAuthorization();
services.AddAuthentication("Bearer")
.AddJwtBearer("Bearer", options =>
{
options.Authority = _configuration.OAuth2.ServerUri;
options.RequireHttpsMetadata = false;
options.Audience = "api";
});
}
И:
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseAuthentication();
app.UseMvc();
}
Ответ вызывающей стороне - Несанкционированный (401) без объяснения причин.
РЕДАКТИРОВАТЬ:
Я думаю, что это как-то связано с куки-файлами, как указано в комментарии.Я вижу печенье Identity.Application
.Я очистил это и попытался, но не помог.Я думаю, что это может быть связано с тем, как настроены мой токен-сервер и сервер Api (оба используют AspNet Identity).
У меня есть один проект Mvc, работающий в качестве Idp на localhost: 5000.Тогда мой менеджер пользователей Api, который имеет защищенный контроллер, размещается на localhost: 5001.Когда я пытаюсь получить доступ к защищенному контроллеру, меня перенаправляют на страницу входа в проект IdP (который, как мне кажется, устанавливает cookie).Затем я пытаюсь использовать токен с контроллером и получаю вышеупомянутую ошибку.
Если я удаляю куки между получением токена и совершением вызова Api, я получаю следующий журнал:
2019-02-11 23:35:15.3711 [INFO] Authorization failed for the request at filter 'Microsoft.AspNetCore.Mvc.Authorization.AuthorizeFilter'.
info: Microsoft.AspNetCore.Mvc.ChallengeResult[1]
Executing ChallengeResult with authentication schemes ().
2019-02-11 23:35:15.3711 [INFO] Executing ChallengeResult with authentication schemes ().
info: Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationHandler[12]
AuthenticationScheme: Identity.Application was challenged.
2019-02-11 23:35:15.3711 [INFO] AuthenticationScheme: Identity.Application was challenged.
info: Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker[2]