Я установил следующую аутентификацию в своем клиенте MVC.
JwtSecurityTokenHandler.DefaultInboundClaimTypeMap.Clear();
services.AddAuthentication(_ =>
{
//_.DefaultScheme = "Cookies";
//_.DefaultChallengeScheme = "oidc";
_.DefaultScheme = JwtBearerDefaults.AuthenticationScheme;
})
.AddCookie("Cokies")
.AddFacebook()
.AddGoogle()
.AddJwtBearer()
.AddOpenIdConnect("oidc", _ => { });
Поскольку по умолчанию установлено значение JWT, я представляю, что остальные ( Cookie , Facebook , Google и OpenIdConnect ) просто игнорируются, если декоратор авторизации вызывается без параметров.
Однако я просто получаю 401 Unauthorized без дополнительной информации.Например, если я закомментирую оператор схемы по умолчанию для JWT и активирую cookie, например, так:
{
_.DefaultScheme = "Cookies";
_.DefaultChallengeScheme = "oidc";
//_.DefaultScheme = JwtBearerDefaults.AuthenticationScheme;
}...
Я получаю страницу ошибки разработчика, на которой говорится, что идентификатор клиента неизвестен.Но в этом случае я получаю только страницу по умолчанию в Chrome с кодом ошибки.Я думал, что, возможно, нужно установить схему вызова по умолчанию, но нет смысла делать это для JWT, верно?Кроме того, я не вижу поля для этого в JwtBearerDefaults class.
Чего мне не хватает в моем MVC-клиенте для правильной аутентификации?Или проблема в моей конфигурации IDS4?
Я некоторое время гуглял, но не получаю никаких обращений, которые говорят со мной и которые я бы признал значимыми.Может быть, мое невежество, хотя ...
Более короткая версия, по-прежнему вызывающая ту же проблему, выглядит следующим образом.
JwtSecurityTokenHandler.DefaultInboundClaimTypeMap.Clear();
services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(_ =>
{
_.Authority = "https://localhost:44300";
_.Audience = "http://localhost:5001";
});
Мой IDS4 работает на порту 44300 (проверено с .well-known ) и API находится на порту 5001.