Хочу запретить пользователя, когда он не был авторизован/аутентифицирован - но получение «не было указано в аутентификацC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Хочу запретить пользователя, когда он не был авторизован/аутентифицирован - но получение «не было указано в аутентификац

Сообщение Anonymous »

У меня есть функция контроллера API, которая в настоящее время украшена атрибутом [Authorize]. Это в основном подходит для цели, как и, вероятно, удачи, а не по дизайну. Используя токен носителя, им показана «запретная ошибка» 401.System.InvalidOperationException: No authenticationScheme was specified, and there was no DefaultChallengeScheme found.
Мое приложение должно иметь несколько схем аутентификации (или, возможно, схемы авторизации?), Которые добавляются/настроены в функции startup.cs 'configureservices'. Запретная ошибка вместо этого? Options.defaultChallengescheme был установлен , по крайней мере, один раз , но на самом деле установлен несколько раз - почему это проблема? Почему это не может понять, каким должен быть «по умолчанию»? Нужно ли добавить аутентификацию, которые действительно действуют как дефолт? Я не уверен, что могу не добавлять несколько аутентификационных OPENTS в IServiceCollection, поскольку такие вызовы, как .AddjwtBearer, похоже, добавляет еще одну аутентификацию . Я полагаю, я не очень понимаю, как на самом деле установить схему задач по умолчанию, если есть несколько аутентификационных OPENC. < /P>
//services var = IServiceCollection services

// Adding authentication
var firstUserpoolName = userpools.First().Key;
var authenticationBuilder = services.AddAuthentication(options =>
{
options.DefaultScheme = firstUserpoolName;
options.DefaultChallengeScheme = firstUserpoolName;
});

// Adding authentication for each userpool name
foreach (var userpool in userpools)
{
var userpoolDetails = userpool.GetChildren().ToList();
var userpoolAuthenticationBuilder = services.AddAuthentication();
userpoolAuthenticationBuilder.AddJwtBearer(userpool.Key, options =>
{
options.Audience = userpoolDetails.FirstOrDefault(d => d.Key == "Audience")?.Value;
// More options set here in actual code
});
}

string prioritySystem = Configuration["Priority_System"].ToLower();
string loginPath = string.Format("/{0}/login", prioritySystem);

//Adding cookie authentication
var cookiesAuthenticationBuilder = services.AddAuthentication(options =>
{
// Adding these options allows for the correct HttpContext to be accessible in any middleware
options.DefaultChallengeScheme = AuthenticationSchemes.CookieAuthenticationDefault;
options.DefaultAuthenticateScheme = AuthenticationSchemes.CookieAuthenticationDefault;
});

cookiesAuthenticationBuilder.AddCookie(options =>
{
options.LoginPath = loginPath;
options.EventsType = typeof(CustomCookieAuthenticationEvents);
// More options set here in actual code
});

// Adding SSO authentication
var ssoConfig = Configuration.GetSection(AuthenticationSchemes.OIDC_SSO);

if (ssoConfig.Exists())
{
services.AddAuthentication(options =>
{
options.DefaultAuthenticateScheme = AuthenticationSchemes.CookieAuthenticationDefault;
options.DefaultSignInScheme = AuthenticationSchemes.CookieAuthenticationDefault;
options.DefaultChallengeScheme = OpenIdConnectDefaults.AuthenticationScheme;
});
}
else
{
services.AddAuthentication(options =>
{
options.DefaultAuthenticateScheme = AuthenticationSchemes.CookieAuthenticationDefault;
options.DefaultSignInScheme = AuthenticationSchemes.CookieAuthenticationDefault;
});
}

if (ssoConfig.Exists())
{
// Setup SSO auth
services.Configure(builderSSOConfig);
var serviceProvider = services.BuildServiceProvider();
var builderAuthOptions = serviceProvider.GetService();

services.AddAuthentication().AddOpenIdConnect(AuthenticationSchemes.OIDC_SSO, options =>
{
options.CallbackPath = "/signin-oidc";
// More options set here in actual code
});
}


Подробнее здесь: https://stackoverflow.com/questions/795 ... -no-authen
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»