У меня есть функция контроллера 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
Хочу запретить пользователя, когда он не был авторизован/аутентифицирован - но получение «не было указано в аутентификац ⇐ C#
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Создание пользователя Google в php: не авторизован для доступа к этому ресурсу/API
Anonymous » » в форуме Php - 0 Ответы
- 18 Просмотры
-
Последнее сообщение Anonymous
-