Colección de citas famosas - Colección de consignas - Varios métodos de autenticación comunes para front-end y back-end (resumen)

Varios métodos de autenticación comunes para front-end y back-end (resumen)

Recientemente, estaba reconstruyendo el código de front-end de los productos anteriores de la compañía, abandonando el método de autenticación de cookies de sesión anterior y adoptando la autenticación de token. Sentí que era necesario resolver varios métodos de autenticación comunes en mi. agenda ocupada.

Actualmente contamos con cuatro métodos de autenticación comúnmente utilizados:

Autenticación básica HTTP

cookie de sesión

Verificación de token

OAuth (Autorización abierta)

1. Autenticación básica HTTP

Este método de autorización lo cumple el navegador

2. El servidor envía el código de solicitud de verificación 401 al cliente (WWW-Authenticate: reino básico = "google.com" es la clave. Si no hay un cliente, la interfaz de ingreso de nombre de usuario y contraseña no aparecerá. Los datos devueltos por). el servidor es aproximadamente el siguiente:

HTTP/1.0 401 No autorizado

Servidor: SokEvo/1.0

WWW-Authenticate: Basic domain=”google.com”

Tipo de contenido: texto/html

Longitud del contenido: xxx

3. Al cumplir con

Autorización: Básica d2FuZzp3YW5n

Nota: d2FuZzp3YW5n representa el nombre de usuario y la contraseña cifrados (nombre de usuario: contraseña y luego cifrado a través de base64. El proceso de cifrado es el comportamiento predeterminado del navegador . No necesitamos cifrar manualmente, solo necesitamos ingresar el nombre de usuario y la contraseña)

5. Después de recibir la información de solicitud anterior, el servidor extrae y descifra la información del usuario después del campo Autorización y compara el nombre de usuario y la contraseña descifrados con la base de datos del usuario para verificar. Si el nombre de usuario y la contraseña son correctos, el servidor proporcionará la información. recursos solicitados de acuerdo con la solicitud enviados al cliente

Efecto:

Cuando el cliente no está autenticado, aparecerá el cuadro de entrada de nombre de usuario y contraseña. está en estado pendiente. En este momento, el servicio es en realidad el usuario. Al ingresar el nombre de usuario y la contraseña, el cliente enviará la solicitud con el encabezado de Autenticación.

Autenticación exitosa:

server.js

let express = require("express");

let app = express() ;

app.use(express.static(__dirname+'/public'));

app.get("/Authentication_base",function(req,res){

console.log('req.headers.authorization:',req.headers)

if(!req.headers.authorization){

res.set({

'WWW-Authenticate':'Reino básico="wang"'

});

res.status(401).end();

}else{

let base64 = req.headers.authorization.split(" ")[1];

let userPass = new Buffer(base64, ' base64').toString().split(":");

dejar usuario = userPass[0];

dejar pasar = userPass[1];

if(user=="wang"&&pass="wang"){

res.end("OK");

}else{

res.status(401).end();

}

}

})

app.listen(9090)

index.html:

< meta charset="UTF-8">

Autenticación básica HTTP

Por supuesto que tienes que iniciar sesión Después de cerrar sesión, encontraremos que después de una autenticación exitosa, cada encabezado de solicitud traerá autenticación y su contenido. Entonces, ¿cómo podemos invalidar este inicio de sesión?

Después de buscar en línea durante mucho tiempo, la forma más efectiva actualmente es configurar una cuenta de cierre de sesión especial en el servidor durante la operación de cierre de sesión al recibir.

Cuando la información de autenticación se corrige para cerrar sesión con el nombre de usuario y la contraseña, el cierre de sesión se realiza correctamente. Cuando el cliente realiza la operación de cierre de sesión, modifica manualmente la autenticación en el encabezado de la solicitud y la establece en la cuenta de cierre de sesión y la contraseña predeterminadas del servidor.

A través de la simple explicación anterior, podemos darnos cuenta de las deficiencias de este método de verificación. El método de cifrado es simple, solo cifrado base64, y este método de cifrado es reversible. Al mismo tiempo, la información de nombre de usuario y contraseña se adjuntará al encabezado de cada solicitud, para que los rastreadores de la red externa puedan detectarla fácilmente.

Resumen:

Oficialmente debido a esto, este método de cifrado se usa generalmente en sistemas con bajos requisitos de seguridad interna, pero es relativamente común en este momento. raramente usado. Si el proyecto necesita implementarse en una red pública, no se recomienda este método. Por supuesto, también puede cifrar la transmisión con SSL, lo cual será mejor si tengo tiempo.

2.session-cookie

El segundo método es utilizar la sesión del lado del servidor (sesión) y la cookie del lado del navegador para lograr la autenticación de front-end y back-end. Debido a /oauth2.0/show?

Podemos usar esta dirección URL. Vea varios parámetros comunes de Auth2.0:

tipo_respuesta, tipo de retorno

client_id, ID de aplicación de terceros, emitido por el servidor de autorización ( qq) a la solicitud de terceros cuando se presenten solicitudes de terceros.

redirect_uri, inicio de sesión exitoso en la página de redireccionamiento

oauth_provider, proveedor de autorización de terceros

estado, código aleatorio proporcionado por una aplicación de terceros

Paso 2. Devolver la credencial de usuario (código) y devolver una credencial (código). Cuando el usuario hace clic en autorización e inicia sesión, el servidor de autorización generará una credencial de usuario (código). Esta credencial de usuario se agregará a la dirección redirigida redirigir_uri

/account/login?code=9e3efa6cea739f9aaab2&state=XXX

Paso 3. Solicite autorización al servidor de autorización:

Después del segundo paso de obtener el código, el trabajo posterior se puede pasar a un segundo plano para su procesamiento y finalizar la interacción con el usuario. A continuación, necesito obtener el token de acceso, que debemos utilizar para obtener información del usuario y otros recursos del servidor de autorización.

El fondo de la aplicación de terceros solicita el token de acceso del servidor de autorización a través del segundo paso del certificado (código). En este momento, se requiere la siguiente información:

client_id. identifica la identificación de la aplicación de terceros Emitido por el servidor de autorización (Github) a la aplicación de terceros cuando se envía la aplicación de terceros

client_secret El certificado de seguridad entre la aplicación de terceros y. el servidor de autorización, emitido por el servidor de autorización (Github) cuando se envía la aplicación de terceros A la aplicación de terceros

código La credencial de usuario devuelta en el primer paso redirigir_uri La dirección a la que saltar. segundo paso después de generar la credencial de usuario en el primer paso

estado Proporcionado por la aplicación de terceros El código aleatorio generado

Paso 4. Después de que el servidor de autorización acepta la autorización, devuelve una credencial de acceso a recursos (Token de acceso).

Paso 5. La aplicación de terceros solicita recursos relacionados desde el servidor de recursos a través de las credenciales (Token de acceso) en el paso 4.

Paso 6. Se aprobaron las credenciales de verificación del servidor de recursos (Token de acceso)