api - method - Personalice el encabezado HTTP de autorización
rest authorization header (5)
Necesito autenticar a un cliente cuando envía una solicitud a una API. El cliente tiene un token de API y estaba pensando en usar el encabezado de Authorization
estándar para enviar el token al servidor.
Normalmente, este encabezado se usa para la autenticación Basic
e Digest
. Pero no sé si se me permite personalizar el valor de este encabezado y usar un esquema de autenticación personalizado, por ejemplo:
Authorization: Token 1af538baa9045a84c0e889f672baf83ff24
¿Recomendarías esto o no? ¿O hay un mejor enfoque para enviar el token?
En el caso de solicitud CROSS ORIGIN lea esto:
Enfrenté esta situación y al principio elegí usar el Encabezado de Authorization
y luego lo eliminé después de enfrentar el siguiente problema.
Authorization
encabezado de Authorization
se considera como un encabezado personalizado. Por lo tanto, si se realiza una solicitud entre dominios con el Autorization
encabezado de Autorization
, el navegador primero envía una solicitud de verificación previa. La solicitud de verificación previa es una solicitud HTTP por el método OPTIONS, esto elimina todos los parámetros. Su servidor debe responder con el Access-Control-Allow-Headers
tiene el valor de su encabezado personalizado (encabezado de Authorization
).
Por lo tanto, para cada solicitud que envía el cliente (navegador), el navegador envía una solicitud HTTP adicional (OPCIONES). Esto deterioró el rendimiento de mi API. Debe verificar si agregar esto degrada su desempeño. Como solución alternativa, estoy enviando tokens en parámetros http, que sé que no es la mejor manera de hacerlo, pero no pude comprometerme con el rendimiento.
Esto está un poco anticuado, pero puede haber otros buscando respuestas a la misma pregunta. Debería pensar qué espacios de protección tienen sentido para sus API. Por ejemplo, es posible que desee identificar y autenticar el acceso de la aplicación cliente a sus API para restringir su uso a aplicaciones conocidas y registradas. En este caso, puede usar el esquema de autenticación Basic
con el identificador del cliente como ID de usuario y secreto compartido del cliente como la contraseña. No necesita esquemas de autenticación patentados, simplemente identifique los que los clientes usarán para cada espacio de protección. Prefiero solo una para cada espacio de protección, pero los estándares HTTP permiten múltiples esquemas de autenticación en cada respuesta de encabezado WWW-Authenticate y múltiples encabezados WWW-Authenticate en cada respuesta; esto será confuso para los clientes de API qué opciones usar. Sea consistente y claro, entonces se usarán sus API.
Por favor, intente abajo en el cartero: -
En la sección de encabezado, ejemplo, trabajo para mí ...
Autorización: JWT eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyIkX.BkyB0LjKB4FIsCtnM5FcpcBLvKed_j7rCCxZddwiYnU
Puede crear sus propios esquemas de autenticación personalizados que usen el encabezado Authorization:
por ejemplo, así es como funciona OAuth .
Como regla general, si los servidores o los proxies no entienden los valores de los encabezados estándar, los dejarán en blanco e ignorarlos. Está creando sus propias claves de encabezado que a menudo pueden producir resultados inesperados: muchos proxies quitarán encabezados con nombres que no reconocen.
Una vez dicho esto, es posiblemente una mejor idea usar cookies para transmitir el token, en lugar del encabezado Authorization:
por la sencilla razón de que las cookies fueron diseñadas explícitamente para transportar valores personalizados, mientras que la especificación para los métodos de autenticación HTTP incorporados no realmente diga de cualquier manera: si quiere ver exactamente lo que dice, eche un vistazo aquí .
El otro punto al respecto es que muchas bibliotecas de clientes HTTP tienen soporte integrado para Digest y Basic auth, pero pueden dificultar la vida al intentar establecer un valor sin formato en el campo del encabezado, mientras que todas brindarán un soporte sencillo para las cookies y lo harán permitir más o menos cualquier valor dentro de ellos.
Yo recomendaría no usar autenticación HTTP con nombres de esquema personalizados. Si cree que tiene algo de uso genérico, puede definir un nuevo esquema, sin embargo. Ver http://greenbytes.de/tech/webdav/draft-ietf-httpbis-p7-auth-latest.html#rfc.section.2.3 para más detalles.