Как сохранить пользовательские претензии при использовании проверки подлинности Windows - PullRequest
0 голосов
/ 16 октября 2018

Я пытаюсь добавить претензию в свое приложение MVC при использовании аутентификации Windows, но претензия не сохраняется между запросами.

Любые предложения о том, как это сделать?Я добавляю заявку в Application_AuthorizeRequest в global.asax и считываю значение в моих контроллерах.

Global.asax:

protected void Application_AuthorizeRequest()
{
    var claimsPrincipal = User as ClaimsPrincipal;
    var claimsIdentity = User.Identity as ClaimsIdentity;
    if (!claimsPrincipal.Claims.Where(x => x.Type == "IsSpecial").Any()) \\ALWAYS TRUE!
    {
        var domain = User.Identity.Name.Split('\\')[0];

        using (var ctx = new PrincipalContext(ContextType.Domain, domain))
        using (var user = UserPrincipal.FindByIdentity(ctx, HttpContext.Current.User.Identity.Name))
        {
            if (user != null)
            {
                var groups = user.GetGroups()
                   .Select(x => x.SamAccountName);

                if (groups.Contains("Special User")
                {
                    claimsIdentity.AddClaim(new Claim("IsSpecial", "Yes"));
                }

Контроллер:

var claimsPrincipal = User as ClaimsPrincipal;
    var isSpecial = claimsPrincipal.Claims.Where(x => x.Type == "IsSpecial").First().Value;

1 Ответ

0 голосов
/ 16 октября 2018

Это способ работы.Удостоверение пользователя всегда создается заново для каждого запроса, хотя точный метод зависит от метода проверки подлинности.

Включение проверки подлинности Windows в основном означает, что имя пользователя автоматически задается для вас в качестве браузераотправляет тикет / имя пользователя / пароль.

Независимо от того, используете ли вы куки-файлы, токены на предъявителя или Windows Auth, и храните ли вы утверждения в AD, базе данных или в токене, вам все равно нужно добавить утверждения в некоторыхбалл за запрос

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