Estoy tratando de implementar la autenticación OpenID para mi sitio. Este es el escenario:
Quiero que el usuario sea capaz deAlmacenar la información necesaria de OpenID
- inicio de sesión utilizando sólo OpenID (. Usuario puede simplemente ponerse verificado visitando proveedor de OpenID hay necesidad de crear una cuenta personalizada con el correo electrónico, contraseña),
- A través del correo electrónico/contraseña (el usuario se ha registrado en el sitio al completar un formulario)
- Adjunte identificación (es) abierta (s) a sus cuentas (cuentas abiertas + correo electrónico para una cuenta).
Ahora no sé qué credenciales debo almacenar para la identificación abierta. y no estoy seguro sobre el esquema DB. Aquí está el esquema de base de datos:
Table: Users
UserId => PK
... => Custom info. Not related to authentication.
Table: Authentication
AuthenticationId => PK
LoginId => (when custom site membership => email address) (when openId => openid unique address)
UserId => FK to Users.
Provider =>(when custom site membership => "CUSTOM") (when openId => openid provider address)
Password => filled when using custom membership. empty when using open id.
Ahora, cuando un usuario inicia una sesión, ya sea mediante el uso de miembros openid/encargo, acabo de mirar a la mesa de autenticación y busco credenciales y obtener el usuario correspondiente. Si no hay usuarios, creo un nuevo usuario y agrego una entrada en la tabla de autenticación.
La pregunta principal: ¿Es almacenando
Provider
yLoginId
(ver los comentarios anteriores para ver lo que se almacena en estos campos) suficientes para almacenar la autenticación OpenID? ¿Debo almacenar datos adicionales para que cuando el usuario regrese pueda autenticarlo en base a mis datos guardados?¿Sugiere algún otro enfoque (más eficiente) para implementar esto?
Gracias.
I retira la columna de la 'prestador de y añade' IsOpenId' de tipo 'bit'. ¿Cuáles son las ventajas de separar las tablas de autenticación (para OpenID y Custom) [En lugar de eliminar la innecesaria columna 'Contraseña' para las autenticaciones OpenID]? – Kamyar
He reforzado mi respuesta para usted. –
¡Perfecto! Gracias. – Kamyar