Как я должен зашифровать пароли для доступа к API, не показывая алгоритм клиенту? - PullRequest
0 голосов
/ 28 октября 2019

У меня есть REST API (.net), который для первоначального входа требует шифрования пароля (RSA с OAEP). Причина была в том, чтобы скрыть пароли пользователей из локальных журналов.

Выполнение этого шифрования с помощью javascript является сложным, и мне нужно было бы сообщить клиенту открытый ключ. Конечный пользователь сможет перепроектировать метод шифрования, а затем использовать его для грубого (или даже худшего) доступа. Так зачем, верно (это SSL Secure).

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

Спасибо ^ _ ^

1 Ответ

1 голос
/ 28 октября 2019

Это похоже на общий вопрос аутентификации. Вы можете решить это так же, как и аутентификацию пользователя. Подумайте об этом так:

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

Выше показано, как веб-сайты могут показывать контент только для зарегистрированных пользователей. Проверяя ранее указанный токен при каждом новом запросе.

Теперь примените этот метод к вашему REST Api. Пользователь должен запросить токен (который не должен быть вашим главным паролем, а уникальным сгенерированным паролем для каждого пользователя), а затем сохранить его локально в течение X времени. Каждый раз, когда пользователь отправляет запрос в API, он отправляет этот токен, который проверяется.

Это также, как это делают обычные API. Вам понадобится токен или какой-то другой способ. Если вы показываете действительно конфиденциальную информацию, токен должен время от времени обновляться (от минут до дней, в зависимости от того, насколько конфиденциальна). Вы ведете учет действительных токенов на своем сервере. Таким образом, если какой-либо токен «украден», он будет действителен только в течение небольшого промежутка времени.

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