Проверка дополнительных привилегий с помощью авторизации на основе политик в ASP.NET Core 2.1 - PullRequest
0 голосов
/ 11 июня 2018

Я использую ASP.NET Core 2.1 с авторизацией на основе политик для групп Active Directory, настроенных в appsettings.json.У меня есть несколько вызовов для настройки каждой политики, подобной следующей:

services.AddAuthorization(options =>
{
    options.AddPolicy("UserGroup"), policy =>
    {
        policy.RequireAuthenticatedUser();
        policy.RequireRole(jsonAuthSection.UserGroup);
    });
});

Я украшаю различные контроллеры API с различными политиками по мере необходимости следующим образом:

[Authorize("UserGroup")]

Однако у меня теперь есть моделигде некоторые свойства требуют административного членства для изменения.Чтобы упростить это, я использую типы, допускающие значения NULL, и когда свойство связано (подразумевается, что было указано изменение / значение), мне нужно проверить наличие дополнительных разрешений:

AuthorizationResult isAdmin = await this.authorizationService.AuthorizeAsync(this.User, "AdminGroup");

if (updateModel.Locked != null && !isAdmin.Succeeded)
{
    return this.StatusCode(StatusCodes.Status401Unauthorized, "some message");
}

// More checks...

Пользователям предлагается ввести учетные данные вместо простого сбоя.Какова более подходящая стратегия для достижения этой цели?

1 Ответ

0 голосов
/ 11 июня 2018

Вы должны возвращаться 403 - Запрещено .

...