De la contraseña al token, una historia de autorización

1. Te dedico mi contraseña

 

Xiaoliang ha desarrollado un programa de "mayordomo de tarjetas de crédito", que puede leer automáticamente los correos electrónicos relacionados con tarjetas de crédito desde el buzón, analizarlos y resumirlos y elaborar un informe. 

 

Xiao Liang encontró al experto en tarjetas de crédito Zhang Dafang para que lo probara: "Tienes tantas tarjetas de crédito. Mira mi aplicación, puedes estar seguro de que te encantará".

 

Zhang Dapang lo intentó varias veces y dijo: "Oye, tu programa necesita leer mi buzón de correo de NetEase, por lo que necesitas un nombre de usuario / contraseña".

 

"Sí, solo necesita decirle la contraseña al programa de entrada. Mi programa será encriptado y almacenado para que usted se asegure de que no se filtre".

 

"Vamos, no te diré mi contraseña. Para la comodidad de recordar, todas mis contraseñas son universales. Si se filtran, se terminará".

 

Xiao Liang dijo: "Hagámoslo, no lo guardo, lo usaré una vez al acceder al buzón y lo desecharé cuando lo use".

 

"Crees que eres Alibaba. Tienes un respaldo crediticio. Eres solo un pequeño sitio web. Te dedico mi contraseña y siempre me siento inseguro. Confío en ti. ¿Pueden otros confiar en ti?"

 

Xiao Liang también lo piensa, esta es una gran barrera psicológica, todos tienen que defender su contraseña hasta la muerte.

 

2. Token

 

Después de una semana, Xiao Liang felizmente llevó a Zhang Dapang a ver la versión mejorada de "Credit Card Butler".

 

"Se actualizó a 2.0. No es necesario que solicite el nombre de usuario y la contraseña del buzón de NetEase esta vez".

 

"Entonces, ¿cómo accedes a mi buzón?"

 

"Es muy simple. He proporcionado una nueva entrada, inicie sesión con una cuenta de NetEase. Después de hacer clic en ella, será redirigido al sistema de autenticación de NetEase para iniciar sesión. El sistema de autenticación de NetEase le pedirá que ingrese su nombre de usuario y contraseña, y preguntarle si desea permitir que el mayordomo de la tarjeta de crédito acceda al buzón de NetEase, después de que lo confirme, será redirigido al sitio web de mi 'mayordomo de tarjeta de crédito' nuevamente, y al mismo tiempo traerá un 'token', puedo usar este token para acceder al buzón de NetEase a través de API. Durante el proceso, nunca tendré acceso a su nombre de usuario y contraseña, ¿qué tal, está satisfecho ahora? "

 

"Puede decirlo a la ligera. Usted, el administrador de la tarjeta de crédito, es un sitio web pequeño y no tiene ninguna reputación. ¿Cómo puede NetEase confiar en su sitio web?"

 

"Por supuesto que primero tengo que registrarme en NetEase. Me enviarán app_id y app_secret. Cuando redireccione a NetEase, necesito enviar esto, para que NetEase sepa que la aplicación" Credit Card Manager "está solicitando autorización. "

 

 

(Click para agrandar)

 

Zhang Dafang dijo: "Lo redirigiste para redirigirlo, ¿no es en realidad solo para obtener una ficha?"

 

"Sí, debido a que no confía en el mayordomo de mi tarjeta de crédito y no le permite guardar su contraseña, debe usar el método de token. Lo emite el Centro de certificación de NetEase, que en realidad representa su autorización para el mayordomo de la tarjeta de crédito para acceder al buzón. Por lo tanto, con este token, puede acceder a su buzón "

 

"Así es", preguntó Zhang Dafang, "¿Por qué usas Javascript para leer el token?"

 

"De esta manera, mi servidor back-end no necesita participar y el trabajo se realiza en el front-end. ¿Has notado el # en esa URL? Www.a.com/callback#token=<Token devuelto por NetEase> "

 

Zhang Dafang dijo: "Lo sé, esto se llama fragmento hash, solo permanecerá en el lado del navegador, solo Javascript puede acceder a él y no se enviará a otros servidores a través de una solicitud http nuevamente. Creo que esto es para mejorar Sea seguro ".

 

Xiao Liang dijo: "Sí, esa ficha es muy, muy importante. ¡Debe almacenarse correctamente y no puede filtrarse!"

 

"Pero a través de la redirección en el paso 6, este token se envió a mi navegador en texto sin formato. Aunque es https, otros no lo robarán, pero se puede encontrar en el historial del navegador o en el registro de acceso. ¿Expuesto?"

 

Xiao Liang dijo: "Esto ..., dije que ustedes tienen un fuerte sentido de seguridad. Déjenme pensar si hay una forma más segura".

 

3. Código de autorización + Token

 

Una semana más tarde, Xiao Liang actualizó con éxito el mayordomo de la tarjeta de crédito a 3.0.

 

Le dijo a Zhang Dafang: "Esta vez oculté con éxito la ficha muy importante y autorizada. ¿Le gustaría echar un vistazo?"

 

"¿Hablas primero de cómo te escondes?"

 

"De hecho, la idea general es similar a la anterior, excepto que introduje una capa intermedia llamada Código de autorización. Cuando inicia sesión con una cuenta de NetEase, el Centro de autenticación de NetEase no me enviará un token directamente esta vez, sino un código de autorización (código de autorización). código), después de que el servidor de mayordomo de mi tarjeta de crédito obtuviera este código, volví a visitar el centro de autenticación de NetEase en segundo plano y esta vez me envió el token real. Vayamos directamente a la imagen: "

 

(Click para agrandar)

 

Zhang Dapang dijo: "Es más fácil de entender. En esencia, se toma el código de autorización devuelto para completar 'en secreto' el proceso de solicitud del token en el fondo del servidor, por lo que el navegador de tokens no es accesible en absoluto, ¿verdad?"

 

"¿Qué es la solicitud secreta de un token? Esta es una comunicación normal entre el servidor de mayordomo de mi tarjeta de crédito y NetEase, pero no puede verlo".

 

"Es broma, aunque has ocultado el token, el código de autorización sí está expuesto. Mira el paso 7, puedo verlo en el navegador en texto plano. Si alguien lo obtiene, se puede obtener de la misma manera. ¿simbólico?"

 

Xiao Liang dijo: "Debemos tener medidas defensivas. Por ejemplo, este código de autorización está asociado con el app_id y el app_secret aplicado por el administrador de mi tarjeta de crédito. El Centro de Certificación de NetEase solo considerará legal la solicitud de token emitida por el administrador de la tarjeta de crédito. ; y el código de autorización también puede tener una duración limitada. Por ejemplo, caduca en 5 minutos y el código de autorización solo se puede cambiar por un token, pero no por segunda vez ".

 

"Suena bien, bueno, ¡puedo usarlo con confianza esta vez!"

 

4. Posdata

 

En realidad, este artículo habla de los tres métodos de autenticación en OAuth, en orden:

1. Concesión de credenciales de contraseña del propietario del recurso (Concesión de credenciales de contraseña del propietario del recurso)

2. Subvención implícita

3. Concesión del código de autorización

 

Existe otro tipo llamado Credenciales de cliente, que se usa menos y no se trata en el artículo.

 

Estos nombres son un poco extraños, pero no son de naturaleza tan complicada. En OAuth, hay varios términos que todos pueden entender:

Propietario del recurso: este es nuestro Zhang Dafang arriba

Servidor de recursos: buzón de NetEase

Cliente: Este es el mayordomo de la tarjeta de crédito de arriba.

Servidor de autorización: Centro de certificación NetEase mencionado anteriormente

Supongo que te gusta

Origin blog.csdn.net/qq_43422918/article/details/115327825
Recomendado
Clasificación