2012-04-07 12 views
11

Estoy tratando de implementar un sistema de inicio de sesión para iniciar sesión en un sitio web mediante la autenticación de clave pública. No estoy seguro de si esto es factible.Verificar la clave privada del usuario para el inicio de sesión del sitio web

Esto es lo que planeo hacer: -

  1. Si bien la firma, la clave pública del usuario se guarda en el sitio web.
  2. Cuando el usuario intenta iniciar sesión más tarde, el sitio web le pide al usuario su clave privada correspondiente.
  3. El usuario se autentica si la clave privada coincide con la clave pública que el usuario proporcionó al registrarse.

He visto sitios como startssl.com que solicitan la clave privada del usuario para verificar su identidad (consulte la captura de pantalla adjunta). Entonces, ¿qué se necesita para implementar dicho sistema?

Screenshot of website asking for private key

+3

Pero no es el usuario que proporciona su clave privada derrotar el propósito ? La clave privada debe mantenerse privada en todos los casos. La forma en que normalmente se hace es que el sitio web cifra un token con la clave pública de los usuarios, y el usuario lo descifra utilizando su clave privada y lo proporciona al sitio web. – Ikke

+1

Parece sencillo [autenticación de cliente] (http://httpd.apache.org/docs/2.0/ssl/ssl_howto.html) – Raffaele

+0

Sí, la clave privada se mantiene privada en todo momento. No se envía al servidor. Vea cómo startssl.com le pide al usuario que verifique el uso de la clave privada en la captura de pantalla. Estoy buscando algo así. – Sparky

Respuesta

6

sólo para aclarar el flujo

  1. el usuario se registra, mediante el sencillo nombre de usuario y la contraseña par de edad. También se le solicita que ingrese al menos una clave pública (otras pueden agregarse más adelante desde un panel de administración de perfil)
  2. El servidor almacena la clave pública del usuario y la asocia con su usuario en un certificado
  3. La próxima vez que el cliente realiza una solicitud presentando su certificado (esto debe ser manejado por el navegador, por lo que ocurre de forma transparente para el usuario), el motor SSL del lado del servidor comprueba si conoce el cliente y si lo hace se procesa la solicitud y El código autenticará y autorizará al usuario ya que conoce el enlace entre una clave pública y un usuario. Si el cliente es no identificado, el servidor debe redirigir a alguna página para permitir SignIn arriba o inicio de sesión manual (tal vez para añadir una nueva clave pública)
+3

[este] (http://cweiske.de/tagebuch/ssl-client-certificates.htm) es un buen tutorial con Apache y PHP como tecnologías del lado del servidor – Raffaele

+0

Muchas gracias @Raffaele, exactamente lo que estaba buscando. – Sparky

Cuestiones relacionadas