Я работаю с .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
Отказ в авторизации Asp.net по претензиям ⇐ C#
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Доступ к основным претензиям в уровне обслуживания в API приложения Net Core 6
Anonymous » » в форуме C# - 0 Ответы
- 5 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Конфликт базовой авторизации и авторизации на предъявителя между nginx и моим веб-приложением
Anonymous » » в форуме Php - 0 Ответы
- 18 Просмотры
-
Последнее сообщение Anonymous
-