Как мне сгенерировать ограниченный по времени ключ или пароль без сохранения данных - PullRequest
1 голос
/ 03 апреля 2011

Вот мой сценарий ...

  1. Пользовательское клиентское приложение отправляет запрос на доступ к веб-службе.

  2. Webservice отвечает«ключ», который действителен только в течение X секунд / минут (время может быть переменным или, по крайней мере, определяемым в моем веб-сервисе)

  3. Пользовательское клиентское приложение немедленно использует ключ для дальнейшегоrequest.

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

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

Я думаю, что я действительно спрашиваюэто лучший подход для этого.

Язык: VB.Net

Ответы [ 3 ]

1 голос
/ 03 апреля 2011

Хранить ключ где-то не удастся, характер хэша в том, что вы не можете получить информацию, из которой он был сгенерирован. Если вы хотите получить информацию обратно, используйте вместо этого алгоритм шифрования.

0 голосов
/ 11 февраля 2012

В итоге мы пошли со следующим ....

Соль, известная приложению Имя пользователя пользователя Текущая дата / время + 5 секунд

объединяют вышеперечисленное в конкретномпорядок в виде строки и MD5-хэш.

У нас есть специальный URL-адрес, который они могут использовать в качестве хеша в качестве параметра строки запроса.

Мы сравниваем хэш с 5 хешами, сгенерированными в то времязапроса (один для текущей секунды и один для каждой из предыдущих 4 секунд).Если хэш параметра QS соответствует одному из этих 5 сгенерированных хэшей, мы принимаем запрос и выполняем соответствующие действия.

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

Таким образом, у нас есть ключ, действительный только в течение 5 секунд с момента его создания.

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

Простой, эффективный и, поскольку все наши запросы API по SSL, безопасный.

0 голосов
/ 03 апреля 2011

мы использовали сторонний инструмент для этого.Это называется Crypkey.Очень настраиваемый, но не дешевый.

...