Pregunta Autenticación básica de HTTP y token de portador


Actualmente estoy desarrollando una REST-API que está protegida por HTTP-Basic para el entorno de desarrollo. Como la autenticación real se realiza a través de un token, todavía estoy tratando de averiguar cómo enviar dos encabezados de autorización.

He intentado esto:

curl -i http://dev.myapp.com/api/users \
  -H "Authorization: Basic Ym9zY236Ym9zY28=" \
  -H "Authorization: Bearer mytoken123"

Podría, por ejemplo, desactivar la autenticación HTTP para mi IP, pero como normalmente trabajo en diferentes entornos con direcciones IP dinámicas, esta no es una buena solución. Entonces, ¿me estoy perdiendo algo?


76
2018-03-06 16:16


origen


Respuestas:


Pruebe este para impulsar la autenticación básica en url:

curl -i http://username:password@dev.myapp.com/api/users -H "Authorization: Bearer mytoken123"
               ^^^^^^^^^^^^^^^^^^

Si el anterior no funciona, entonces no tienes nada que ver con eso. Entonces prueba las siguientes alternativas.

Puedes pasar el token con otro nombre. Porque maneja la autorización de su Aplicación. Entonces puede usar esta flexibilidad fácilmente para este propósito especial.

curl -i http://dev.myapp.com/api/users \
  -H "Authorization: Basic Ym9zY236Ym9zY28=" \
  -H "Application-Authorization: mytoken123"

Tenga en cuenta que he cambiado el encabezado en Application-Authorization. Entonces, desde su aplicación, capture el token bajo ese encabezado y procese lo que necesita hacer.

Otra cosa que puedes hacer es pasar el token a través de POST parámetros y tomar el valor del parámetro desde el lado del servidor. Por ejemplo, pasar token con el parámetro curl post:

-d "auth-token=mytoken123"

42
2018-03-21 17:04



Estándar (https://tools.ietf.org/html/rfc6750) dice que puedes usar:

  • Parámetro del cuerpo codificado en el formulario: Autorización: Portador mytoken123
  • Parámetro de consulta de URI: access_token = mytoken123

Por lo tanto, es posible pasar muchos tokens de portador con URI, pero se desaconseja hacer esto (ver la sección 5 en el estándar).


26
2017-08-12 07:36



curl --anyauth

Le dice a Curl que descubra el método de autenticación por sí mismo, y usa   el más seguro que el sitio remoto dice apoyar. Esto es hecho por   primero haciendo una solicitud y verificando los encabezados de respuesta, por lo tanto   posiblemente induciendo una red adicional de ida y vuelta. Esto es usado   en lugar de establecer un método de autenticación específico, que puede   hacer con --basic, --digest, --ntlm, y   --negociar.


1
2018-03-26 20:30



Si está utilizando un proxy inverso como nginx en el medio, puede definir un token personalizado, como X-API-Token.

En nginx deberías reescribirlo para el proxy ascendente (tu api de descanso) para que sea solo auth:

proxy_set_header Authorization $http_x_api_token;

... mientras que nginx puede usar el encabezado de Autorización original para verificar HTTP AUth.


1
2018-06-21 14:35



Tuve un problema similar: autenticación de dispositivo y usuario en el dispositivo. Usé un Cookie encabezado junto a un Authorization: Bearer... encabezamiento.


0
2018-04-10 00:43