Проверка секретного ключа пользователя для входа в веб-сайт

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

Это то, что я планирую сделать: -

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

Я видел такие сайты, как startssl.com, прося секретный ключ пользователя для проверки их личности (см. скриншот прилагается). Итак, что нужно для реализации такой системы?

Screenshot of website asking for private key

Ответ 1

Просто, чтобы прояснить поток

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