web-dev-qa-db-fra.com

Les jetons SAML sont-ils mis en cache/stockés n'importe où sur le navigateur?

Scénario:
1) Le navigateur (utilisateur) demande une ressource au fournisseur de service (SP).
2) SP redirige (avec une demande SAML) vers le fournisseur d'identité (IdP).
3) Puisqu'il s'agit de la première connexion, l'utilisateur communique ses informations d'identification au (IdP).
4) Le PDI redirige ensuite le navigateur (avec la réponse SAML comprenant le jeton SAML) vers la page SP.

J'ai deux questions:

A. À l'étape 4, le navigateur stocke-t-il ou met-il en cache le jeton SAML Response et/ou SAML?

B. Si oui, quel genre de choses (attributs? Délais d'attente? Protocoles?) M'empêche de prendre ce jeton SAML stocké. Puis le copier sur un autre ordinateur (avec une nouvelle session) et utiliser ce jeton pour vous connecter au même SP?

16
funa68

La réponse est "en quelque sorte" sur la mise en cache. Dans votre scénario, la réponse sera envoyée par le biais de POST au fournisseur de services à partir du navigateur. Le navigateur peut donc "mettre en cache" les données POST qui contiennent la réponse SAML. Donc, comme n'importe quel autre événement POST dans les navigateurs, si l'utilisateur devait utiliser le bouton de retour suffisamment de fois après s'être connecté au SP pour revenir au POST événement, les données POST pourraient être renvoyées au SP.

Quelques éléments permettent d’empêcher la réponse de se faire détourner -

  1. Utilisation du protocole HTTPS entre toutes les parties
  2. Application SP des attributs NotBefore & NotOnOrAfter
  3. Application du critère d'utilisation ponctuelle par le SP (le SP doit s'assurer que la réponse n'est pas réutilisée pendant sa période de validité. Si le message est reçu en dehors de la fenêtre de validité, le SP doit jeter le message)
9
Ian

L'IDP stocke généralement un cookie de session sur le navigateur client identifiant la session SAML. Le vol de ce cookie de session n'est probablement pas plus protégé que tout autre cookie de session.

L'utilisation de HTTPS dans la communication entre SP et IDP fournira une bonne protection contre le détournement de session.

4
Stefan Rasmusson

Pour la question A, cela dépend probablement du navigateur que vous utilisez.

Pour la question B, plusieurs mécanismes empêchent la réutilisation de la réponse SAML:

  1. SubjectConfirmationData a les attributs NotBefore et NotOnOrAfter qui spécifient la période de validité de l'assertion SAML. Ainsi, l'assertion SAML ne peut pas être utilisée en dehors de cette période. 
  2. SubjectConfirmationData a l'attribut InResponseTo qui spécifie la demande SAML pour laquelle l'assertion SAML est émise. Ainsi, l'assertion SAML ne peut pas être utilisée pour une autre demande SAML.
  3. Le SP doit s'assurer que l'assertion SAML n'est pas rejouée en conservant un ensemble d'assertions SAML utilisées.

Vous pouvez lire les sections 4.1.4.3 et 4.1.4.5 de la spécification des profils SAML.

2
fajarkoe

Je connais ce vieux message, mais la réponse est oui, le navigateur stocke le jeton SAML en tant que cookie. (En règle générale) Vous pouvez le voir dans la liste des cookies de votre navigateur, via divers inspecteurs de trafic/session tels que Fiddler, SAML Tracer sur FF, etc. 

0
Mark