Отказ в авторизации Asp.net по претензиямC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Отказ в авторизации Asp.net по претензиям

Сообщение Anonymous »

Я работаю с .NET 8, и мне нужна помощь в настройке политик авторизации. В частности, я хочу, чтобы политика по умолчанию разрешала доступ всем пользователям, кроме тех, у кого есть утверждение «external_employee». Кроме того, мне нужна еще одна политика, позволяющая разрешить всем пользователям, включая тех, у кого есть утверждение «external_employee».
База кода, над которой я сейчас работаю, включает тысячи конечных точек, поэтому моя цель — использовать политика по умолчанию запрещает доступ ко всем конечным точкам для внешних сотрудников. Есть несколько конечных точек, которые должны быть доступны только в том случае, если применяется политика «ExternalEmployeeAllowed».
Проблема в том, что библиотека авторизации ASP.NET оценивает обе политики. При сбое одной политики результатом всегда является ошибка 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 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Доступ к основным претензиям в уровне обслуживания в API приложения Net Core 6
    Anonymous » » в форуме C#
    0 Ответы
    5 Просмотры
    Последнее сообщение Anonymous
  • ASP.NET Core 8: отказ в авторизации по утверждениям
    Anonymous » » в форуме C#
    0 Ответы
    8 Просмотры
    Последнее сообщение Anonymous
  • ASP.NET Core 8: отказ в авторизации по утверждениям
    Anonymous » » в форуме C#
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • Получение «Запрос к `/users/login` не применил никаких проверок авторизации». при использовании авторизации в cakePHP
    Anonymous » » в форуме Php
    0 Ответы
    27 Просмотры
    Последнее сообщение Anonymous
  • Конфликт базовой авторизации и авторизации на предъявителя между nginx и моим веб-приложением
    Anonymous » » в форуме Php
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous

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