2012-09-18 15 views
5

He estado investigando sobre este concepto de Oauth y todavía estoy muy confundido acerca de este concepto. Una de mis preguntas principales es cómo se registra uno con una cuenta de Google o una cuenta de Twitter.¿Cómo se registra un usuario con Oauth?

Por ejemplo, digamos que para poder registrarme en mi sitio web, debe proporcionar un nombre de usuario/contraseña/correo electrónico/nombre de grupo. Si te registras a través de mi sitio web, entonces puedes proporcionar esos campos muy fácilmente. Sin embargo, digamos que el usuario quiere registrarse a través de google. ¿Cómo se poblarían esos campos?

Según tengo entendido, una vez que se registra con sus credenciales de google, se le redirige a una página en mi sitio web donde completa los campos obligatorios. No estoy seguro de si esto es correcto. ¿Alguien puede ayudarme a entender esto más?

+0

De qué Oauth estás hablando. Hay diferentes, y también se considera roto. – hakre

+0

Si se está autenticando con Oauth, ¿por qué necesita un nombre de usuario y contraseña? Para correo electrónico y grupo, necesitaría una página de registro separada. Con una cuenta de Google puede obtener una dirección de correo electrónico, pero otras cuentas de Oauth pueden no tener una disponible. – mcrumley

+0

@hakra OAuth * no * está roto, se puede usar de forma segura si se implementa correctamente. Sin embargo, tiene sus inconvenientes y complejidades, como casi todos los estándares que tienen en cuenta muchos casos de uso. –

Respuesta

6

Básicamente OAuth funciona así (dependiendo de la versión de estos puntos se componen de múltiples pasos):

  • permite redirigir al usuario a un proveedor, donde se registra en
  • el usuario es redirigido de nuevo a usted y recibe un token de acceso

el uso de este token de acceso a continuación, puede solicitar los datos de los usuarios del proveedor. Normalmente, los proveedores brindan una llamada que puede usar para solicitar la dirección de correo electrónico del usuario, el nombre completo y un identificador de usuario (específico del proveedor) , pero eso no es parte de OAuth.

Cómo usa ahora esta información para manejar a ese usuario como si hubiera iniciado sesión en su sitio por completo por su cuenta. Probablemente desee crear un nuevo objeto de usuario de su lado cada vez que vea una nueva identificación de usuario .

+0

O veo. Entonces, si estoy entendiendo correctamente, una vez que un usuario inicia sesión con su dirección de correo electrónico/contraseña de Google, entonces tengo que redirigirlos a mi propia página donde completan el resto de las credenciales. – user1436497

+0

@ user1436497 podrías, pero eso sería un mal UX. – Mahn

0

Hay un par de conceptos básicos que necesitan cierta claridad antes de poder entender cómo se produce el registro de un nuevo usuario con OAuth2. Estos son:

  • propietario del recurso (Usted, el ser humano)
  • proveedor de identidad (Google, Facebook, Twitter, etc.)
  • de recursos del servidor (Igual que el proveedor de identidad, o algún otro servicio)
  • Recursos (cosas que desea el acceso a)
  • aplicación cliente (La aplicación que está utilizando para acceder a esas cosas)

para el nuevo registro de usuario, usted seguirá º La misma secuencia de aplicación de cliente que solicita autorización para obtener acceso a los recursos. Esto activará una página de inicio de sesión, el usuario inicia sesión, el código de autorización es creado (por el IdP) y enviado de vuelta a la aplicación del cliente. La aplicación del cliente intercambia este código por un token de acceso (se necesita alguna firma de cifrado, lee la documentación, básicamente, permite que la aplicación del cliente demuestre su propia identificación).

Este token de acceso se utiliza para solicitar acceso a los recursos, en este caso, el nuevo perfil de usuario. Puede ser el nombre, el correo electrónico, la imagen, etc. Utilice esto para crear una nueva fila en la base de datos de perfil de su aplicación cliente. Se crea una nueva cuenta de usuario.

Luego, para inicios de sesión posteriores, la aplicación cliente usará este token de acceso para validar su vida con el servidor de autenticación de Google y luego creará una sesión/cookie local para iniciar sesión en el usuario.

Espero que esto esté claro.

Cuestiones relacionadas