Puede crear sus propios esquemas de autenticación personalizados que utilicen el Authorization:
encabezado; por ejemplo, así es como funciona OAuth .
Como regla general, si los servidores o proxies no comprenden los valores de los encabezados estándar, los dejarán tranquilos y los ignorarán. Está creando sus propias claves de encabezado que a menudo pueden producir resultados inesperados: muchos proxies eliminarán los encabezados con nombres que no reconocen.
Habiendo dicho eso, posiblemente sea una mejor idea usar cookies para transmitir el token, en lugar del Authorization:
encabezado, por la simple razón de que las cookies fueron diseñadas explícitamente para llevar valores personalizados, mientras que la especificación para los métodos de autenticación incorporados de HTTP realmente no dice de cualquier forma, si quieres ver exactamente lo que dice, echa un vistazo aquí .
El otro punto sobre esto es que muchas bibliotecas de cliente HTTP tienen soporte integrado para autenticación Digest y Basic, pero pueden hacer la vida más difícil al intentar establecer un valor sin procesar en el campo de encabezado, mientras que todas brindan soporte fácil para cookies y permitir más o menos cualquier valor dentro de ellos.
Authorization:
encabezado) es por dominio. Esto significa que si configura el dominio de la cookie en "este dominio" y la ruta en "/", tendrá un alcance idéntico al de la autenticación HTTP. Sin embargo, realmente depende de usted, pero como señala Julian Reschke, probablemente no debería definir un nuevo esquema de autenticación a menos que ustedfeel that you have something of generic use
, algo que pueda usarse en otra aplicación.En el caso de la solicitud CROSS ORIGIN, lea esto:
Enfrenté esta situación y al principio elegí usar el
Authorization
encabezado y luego lo eliminé después de enfrentar el siguiente problema.Authorization
El encabezado se considera un encabezado personalizado. Por lo tanto, si se realiza una solicitud entre dominios con elAutorization
encabezado establecido, el navegador envía primero una solicitud de verificación previa . Una solicitud de verificación previa es una solicitud HTTP mediante el método OPTIONS, esta solicitud elimina todos los parámetros de la solicitud. Su servidor debe responder conAccess-Control-Allow-Headers
Encabezado con el valor de su encabezado personalizado (Authorization
encabezado).Entonces, 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 rendimiento. Como solución temporal, estoy enviando tokens en parámetros http, que sé que no es la mejor manera de hacerlo, pero no puedo comprometer el rendimiento.
fuente
Authorization token
(datos confidenciales) para mi aplicación. Por la misma razón que no deberíamos enviar datos confidenciales en GET, no deberíamos usar token de autorización en params. Según w3 w3.org/Protocols/rfc2616/rfc2616-sec15.html#sec15.1.3 "El protocolo HTTP NO DEBE utilizar formularios basados en GET para el envío de datos confidenciales".Esto está un poco anticuado, pero puede haber otros que busquen 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 cliente registradas conocidas. En este caso, puede utilizar el
Basic
esquema de autenticación con el identificador del cliente como el ID de usuario y el secreto compartido del cliente como la contraseña. No necesita esquemas de autenticación patentados, solo identifique claramente los que los clientes usarán para cada espacio de protección. Prefiero solo uno para cada espacio de protección, pero los estándares HTTP permiten tanto múltiples esquemas de autenticación en cada respuesta de encabezado WWW-Authenticate como múltiples encabezados WWW-Authenticate en cada respuesta; esto resultará confuso para los clientes de la API sobre qué opciones utilizar. Sea coherente y claro, entonces se utilizarán sus API.fuente
Recomendaría no utilizar la autenticación HTTP con nombres de esquemas personalizados. Sin embargo, si cree que tiene algo de uso genérico, puede definir un nuevo esquema. Consulte http://greenbytes.de/tech/webdav/draft-ietf-httpbis-p7-auth-latest.html#rfc.section.2.3 para obtener más detalles.
fuente
Por favor, pruebe a continuación en cartero: -
En el ejemplo de la sección de encabezado funciona para mí.
Autorización: JWT eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyIkX18iOnsic3RyaWN0TW9kZSI6dHJ1ZSwiZ2V0dGVycyI6e30sIndhc1BvcHVsYXRlZCI6ZmFsc2UsImFjdGl2ZVBhdGhzIjp7InBhdGhzIjp7InBhc3N3b3JkIjoiaW5pdCIsImVtYWlsIjoiaW5pdCIsIl9fdiI6ImluaXQiLCJfaWQiOiJpbml0In0sInN0YXRlcyI6eyJpZ25vcmUiOnt9LCJkZWZhdWx0Ijp7fSwiaW5pdCI6eyJfX3YiOnRydWUsInBhc3N3b3JkIjp0cnVlLCJlbWFpbCI6dHJ1ZSwiX2lkIjp0cnVlfSwibW9kaWZ5Ijp7fSwicmVxdWlyZSI6e319LCJzdGF0ZU5hbWVzIjpbInJlcXVpcmUiLCJtb2RpZnkiLCJpbml0IiwiZGVmYXVsdCIsImlnbm9yZSJdfSwiZW1pdHRlciI6eyJkb21haW4iOm51bGwsIl9ldmVudHMiOnt9LCJfZXZlbnRzQ291bnQiOjAsIl9tYXhMaXN0ZW5lcnMiOjB9fSwiaXNOZXciOmZhbHNlLCJfZG9jIjp7Il9fdiI6MCwicGFzc3dvcmQiOiIkMmEkMTAkdTAybWNnWHFjWVQvdE41MlkzZ2l3dVROd3ZMWW9ZTlFXejlUcThyaDIwR09IMlhHY3haZWUiLCJlbWFpbCI6Im1hZGFuLmRhbGUxQGdtYWlsLmNvbSIsIl9pZCI6IjU5MjEzYzYyYWM2ODZlMGMyNzI2MjgzMiJ9LCJfcHJlcyI6eyIkX19vcmlnaW5hbF9zYXZlIjpbbnVsbCxudWxsLG51bGxdLCIkX19vcmlnaW5hbF92YWxpZGF0ZSI6W251bGxdLCIkX19vcmlnaW5hbF9yZW1vdmUiOltudWxsXX0sIl9wb3N0cyI6eyIkX19vcmlnaW5hbF9zYXZlIjpbXSwiJF9fb3JpZ2luYWxfdmFsaWRhdGUiOltdLCIkX19vcmlnaW5hbF9yZW1vdmUiOltdfSwiaWF0IjoxNDk1MzUwNzA5LCJleHAiOjE0OTUzNjA3ODl9.BkyB0LjKB4FIsCtnM5FcpcBLvKed_j7rCCxZddwiYnU
fuente
that article full of misleadings
,a lot of his points does not make sense
, etc., de alguna manera (es decir, es probable que sea algo más allá de un comentario aquí). ¿Quizás podrías escribir una respuesta o una publicación de blog? Sería muy interesante comparar argumentos.