J'ai une application angular que je devais rediriger à l'extérieur vers une page non angular html, donc j'ai pensé que je pouvais simplement utiliser le $window.location.href
pour rediriger l'application angular vers mon site externe. Cela fonctionne en fait très bien, cependant, j'ai un backend nodejs/express qui vérifie le jeton d'authentification avant de servir tout contenu (même le contenu statique).
Cela nécessite l'envoi d'un jeton d'authentification dans l'en-tête de la requête http. Maintenant la question:
Pouvez/comment ajouter un jeton d'authentification à la demande qui est effectuée en modifiant le $window.location.href
avant son envoi?
Lorsque vous utilisez $window.location.href
c'est le navigateur qui fait la requête HTTP et non votre code JavaScript. Par conséquent, vous ne pouvez pas ajouter un en-tête personnalisé comme Authorization
avec votre valeur de jeton.
Vous pouvez ajouter un cookie via JavaScript et y placer votre jeton d'authentification. Les cookies seront automatiquement envoyés depuis le navigateur. Cependant, vous souhaiterez examiner les implications de sécurité de l'utilisation d'un cookie par rapport à un en-tête. Étant donné que les deux sont accessibles via JavaScript, il n'y a pas de vecteur d'attaque supplémentaire. Sauf si vous supprimez le cookie après le chargement de la nouvelle page, un exploit CSRF peut être disponible.
J'utilise JWT comme authentification sur un Laravel PHP backend, et cela fonctionne en mettant ?token=...
Dans l'URL. Par exemple, lorsque vous utilisez AngularJS avec plug-in satellizer, j'ajoute ?token=' + $auth.getToken()
à l'URL.
Je l'utilise strictement pour les appels API, en utilisant SSL. Sachez que ce n'est peut-être pas un moyen d'authentification sécurisé dans votre cas d'utilisation.