Типы авторизации в ядре asp.net - PullRequest
0 голосов
/ 12 января 2019

Я не понимаю, какой тип авторизации в проекте: авторизация на основе утверждений или политик. это зависит от проекта безопасности проекта или они одинаковы? в соответствии с документом Microsoft мы можем настроить и использовать претензии следующим образом:

private async Task CreateUserAndClaim(IServiceProvider serviceProvider) 
{
var claimList = (await UserManager.GetClaimsAsync(user)).Select(p => p.Type);  
if (!claimList.Contains("DateOfJoing")){  
    await UserManager.AddClaimAsync(user, new Claim("DateOfJoing", "09/25/1984"));  
}  
}

, а затем использовать эту претензию следующим образом:

public void ConfigureServices(IServiceCollection services) 
{
 services.AddAuthorization(options =>  
{  
    options.AddPolicy("IsAdminClaimAccess", policy => policy.RequireClaim("DateOfJoing")); 
}

[Authorize(Policy = "IsAdminClaimAccess")]  
public IActionResult TestMethod1(){}

и настройте и используйте политику следующим образом:

public class MinimumTimeSpendRequirement: IAuthorizationRequirement  
{
public MinimumTimeSpendRequirement(int noOfDays)  
{  
    TimeSpendInDays = noOfDays;  
}  

protected int TimeSpendInDays { get; private set; }  
}

public class MinimumTimeSpendHandler : AuthorizationHandler<MinimumTimeSpendRequirement>
{
...
var dateOfJoining = Convert.ToDateTime(context.User.FindFirst(  
        c => c.Type == "DateOfJoining").Value);  
}

public void ConfigureServices(IServiceCollection services)  
{
services.AddAuthorization(options =>  
 {  
    ...  
    ...  
    options.AddPolicy("IsAdminPolicyAccess", policy => policy.Requirements.Add(new MinimumTimeSpendRequirement(365)));  
 } 
}

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

1 Ответ

0 голосов
/ 12 января 2019

Утверждения - это то, что определяет пользователя, это пара ключ-значение.

Возраст : 30 | Секс : Мужской | Имя : Боб Марли | Электронная почта : foo@kek.com

Вы получаете картину. Затем вы можете выполнить проверку авторизации на основе претензии и стоимости.

Далее

Вы можете определить политику, политика - это то, что вам нужно соблюдать, чтобы получить доступ. Он может состоять из нескольких проверок претензий.

Таким образом, вы можете создать политику: IsMaleAndOver18 потребует, чтобы у пользователя было 2 заявления: Возраст , где значение больше 18 и где Пол - мужчина.

При реализации они могут выглядеть одинаково в коде, но на самом деле они очень разные.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...