Реагировать с аутентификацией Windows - PullRequest
0 голосов
/ 05 мая 2020

У меня есть веб-API на основе intr anet, который я буду защищать с помощью windows аутентификации, но как мне также защитить внешний интерфейс с точки зрения показа только определенных действий пользователям с определенной ролью?

Например, в MVC я мог бы сделать что-то вроде этого в представлении:

if (User.IsInRole("SecureRoleA") == true)
 ...show button <button></button>
}

Но в реакции:

  1. Я не буду доступ к User.IsInRole и
  2. любой код, который я пишу таким образом, будет доступен для просмотра в файле javascript, который не кажется очень безопасным (даже если сервер также должен проверить, есть ли у них доступ).

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

Ответы [ 2 ]

0 голосов
/ 05 мая 2020

Любой код авторизации, который вы пишете во внешнем интерфейсе, предназначен только для взаимодействия с пользователем, а не для безопасности. Поскольку, как вы сказали, он будет виден, но также доступен для редактирования на пользовательском устройстве. Но определенно полезно скрыть кнопки для функций, к которым пользователь все равно не может получить доступ.

Распространенным методом было создание локального JSON веб-токена при входе в систему и отправка его в приложение пользовательского интерфейса. Затем его можно хранить в локальном хранилище и отправлять со всеми запросами.

0 голосов
/ 05 мая 2020

Вы должны использовать токен и добавить дополнительные данные для возврата json:

var token = new JwtSecurityToken
                    (
                        issuer: _configuration["Issuer"],
                        audience: _configuration["Audience"],
                        claims: claims,
                        expires: DateTime.UtcNow.AddDays(60),
                        notBefore: DateTime.UtcNow,
                        signingCredentials: new SigningCredentials(new SymmetricSecurityKey
                                (Encoding.UTF8.GetBytes(_configuration["SigningKey"])),
                            SecurityAlgorithms.HmacSha256)
                    );
return Ok(new
                {
                    token,
                    fullName = user.FullName,
                    roles = role,
            });

и доступа к роли проверки кода реакции

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