ASP.NET Core 8: отказ в авторизации по утверждениямC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 ASP.NET Core 8: отказ в авторизации по утверждениям

Сообщение Anonymous »

Я работаю с .NET 8, и мне нужна помощь в настройке политик авторизации. В частности, я хочу, чтобы политика по умолчанию разрешала доступ всем пользователям, кроме тех, у кого есть утверждение «external_employee». Кроме того, мне нужна еще одна политика, позволяющая разрешить всем пользователям, включая пользователей с утверждением external_employee.
База кода, над которой я сейчас работаю, включает тысячи конечных точек, поэтому моя цель — использовать политику по умолчанию, чтобы запретить доступ ко всем конечным точкам для внешних сотрудников. Есть несколько конечных точек, которые должны быть доступны только в том случае, если применяется политика ExternalEmployeeAllowed.
Проблема в том, что библиотека авторизации ASP.NET Core оценивает обе политики. При сбое одной политики результатом всегда является ошибка 403 Forbidden. Я ищу решение, чтобы это работало правильно.
Спасибо.
Конфигурация промежуточного программного обеспечения авторизации:
services.AddAuthorizationBuilder()
.AddPolicy("ExternalEmployeeAllowed", policy => policy.RequireAuthenticatedUser())
.SetDefaultPolicy(new AuthorizationPolicyBuilder()
.RequireAuthenticatedUser()
.RequireAssertion(context =>
{
var guestClaim = context.User.Claims.FirstOrDefault(e=>e.Type == "external_employee");
var isGuest = guestClaim is not null;
return !isGuest;
})
.Build());

Пример контроллера:
[ApiController]
[Route("test")]
public class TestController : Controller
{
[Authorize(Policy = "ExternalEmployeeAllowed")]
[HttpGet("check1")]
//Any authenticated user can access this endpoint and also the user has the claim external_employee
public IActionResult GetCheck1() => Ok(); //This return 403 when a user has the claim external_employee

[Authorize]
[HttpGet("check2")]
//Any authenticated user can access this endpoint but not if the user has the claim external_employee
public IActionResult GetCheck2() => Ok(); //This works fine.
}


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

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • ASP.NET Core 8: отказ в авторизации по утверждениям
    Anonymous » » в форуме C#
    0 Ответы
    8 Просмотры
    Последнее сообщение Anonymous
  • Отказ в авторизации Asp.net по претензиям
    Anonymous » » в форуме C#
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • Ошибка Bad Gateway (502) при вызове API Core Core .NET .NET из другого API Core .NET .NET .NET .NET
    Anonymous » » в форуме C#
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous
  • Ошибка Bad Gateway (502) при вызове API Core Core .NET .NET из другого API Core .NET .NET .NET .NET
    Anonymous » » в форуме C#
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous
  • Невозможно получить доступ к утверждениям JWT из ASP.NET HttpContext.
    Anonymous » » в форуме C#
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous

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