Almacene oAuth básico para una sesión en un sitio web

3

No estoy seguro de si hay una buena manera de hacer esto. Actualmente tengo un sitio web en el que los usuarios inician sesión. En ese sitio web hay páginas que tienen llamadas API a otro servicio, este servicio utiliza:

  

Autorización: nombre de usuario BÁSICO: contraseña

Donde el nombre de usuario y la contraseña no son los mismos que los utilizados para iniciar sesión en el sitio. ¿Hay alguna manera de tenerlo donde hagan un segundo inicio de sesión en mi sitio (una vez que vayan a una de estas páginas) y luego usen esta cadena de autenticación base64 en varias páginas de mi sitio de forma segura?

No puedo almacenar exactamente el nombre de usuario y la contraseña en una base de datos, ya que simplemente sería texto sin formato. Actualmente podría hacer que envíen el usuario / pase en todas las páginas que necesitan la API y simplemente lo publiquen sin almacenarlo, pero esto es un gran dolor que hacer en cada solicitud.

¿Existe alguna posibilidad de almacenar esto durante la duración de su inicio de sesión en mi sitio de forma segura?

    
pregunta Lain 05.02.2018 - 16:34
fuente

2 respuestas

1

Tal vez puedas probar la sessionStorage API del navegador para almacenar la base64 cadena de autenticación. Al igual que en algunos sitios web bancarios, puede pedir al usuario que ingrese la cadena de autenticación una vez que haya iniciado sesión, cifrar la cadena usando la clave pública de su servidor y almacenarla en sessionStorage. Con cada llamada a la API, puede pasar esta cadena cifrada y descifrarla en su servidor para realizar la lógica que desee.

Una vez que el usuario cierre sesión y se cierre el navegador, se eliminará el valor almacenado en sessionStorage. Hasta entonces, el valor estará presente en el almacenamiento de su navegador.

    
respondido por el Daniel Netto 05.02.2018 - 19:47
fuente
0

Tal vez puedas guardarlo en el cliente. Es una idea un poco loca, pero de esta manera no tienes estos datos en el servidor.

Puede cifrar el nombre de usuario / contraseña con cifrado simétrico y almacenarlo como cookie.

De esta manera, cada vez que el usuario solicita una página, envía una cookie cifrada, con la que usted descifra y envía una solicitud a su servicio.

Esa no es una solución a prueba de balas, pero de esta manera no tiene todas las credenciales en el servidor y no tiene texto en los clientes.

    
respondido por el Aria 05.02.2018 - 17:30
fuente

Lea otras preguntas en las etiquetas