Je me demandais s'il était acceptable de mettre des données personnalisées dans un en-tête d'autorisation HTTP. Nous concevons une API RESTful et nous pourrions avoir besoin d'un moyen de spécifier une méthode d'autorisation personnalisée. À titre d'exemple, appelons cela l' FIRE-TOKEN
authentification.
Est-ce que quelque chose comme ça serait valide et autorisé selon les spécifications: Authorization: FIRE-TOKEN 0PN5J17HBGZHT7JJ3X82:frJIUN8DYpKDtOLCwo//yllqDzg=
La première partie de la deuxième chaîne (avant le ':') est la clé API, la deuxième partie est un hachage de la chaîne de requête.
la source
Mettez-le dans un en-tête personnalisé séparé.
La surcharge des en-têtes HTTP standard va probablement causer plus de confusion que cela ne vaut la peine et violera le principe de la moindre surprise . Cela peut également entraîner des problèmes d'interopérabilité pour vos programmeurs clients API qui souhaitent utiliser des kits d'outils prêts à l'emploi qui ne peuvent traiter que la forme standard des en-têtes HTTP typiques (tels que
Authorization
).la source
Authorization
tête standard avec votre propre schéma personnalisé devrait être plus que suffisant. De plus, vous évitez les demandes d'origine avant le vol comme l'indique @wilmoore. Les schémas personnalisés n'interfèrent pas avec les serveurs HTTP raisonnablement modernes que je connaisse, et si vous utilisez votre propre schéma, vous devrez l'analyser vous-même - aucune bibliothèque ne doit entrer en conflit (sinon la bibliothèque est mal écrite).Authorization
tête, plutôt que dans un en-tête personnalisé, est que les mandataires et les enregistreurs savent qu'il faut traiter les informations comme étant sensibles.Non, ce n'est pas une production valide selon la définition des «informations d'identification» dans la RFC 2617 . Vous donnez un schéma d'authentification valide, mais les valeurs de paramètre d'authentification doivent être de la forme
token "=" ( token | quoted-string )
(voir section 1.2), et votre exemple n'utilise pas "=" de cette façon.la source
Ancienne question que je connais, mais pour les curieux:
Croyez-le ou non, ce problème a été résolu il y a environ 2 décennies avec HTTP BASIC, qui transmet la valeur en tant que nom d'utilisateur encodé en base64: mot de passe. (Voir http://en.wikipedia.org/wiki/Basic_access_authentication#Client_side )
Vous pourriez faire de même, de sorte que l'exemple ci-dessus devienne:
la source