2015-07-13 3 views
0

Je configure un fournisseur MFA personnalisé pour ADFS 3.0 en implémentant IAuthenticationAdapter dans .NET. Cet adaptateur personnalisé génère un code aléatoire qui est transmis au téléphone mobile de l'utilisateur. Je veux limiter le nombre de fois que l'utilisateur peut entrer le code aléatoire, pour aider à empêcher une attaque de force brute. Je l'ai fait en utilisant un compteur de tentatives que je stocke dans le contexte qui est passé à BeginAuthentication() et TryEndAuthentication().Où stocker le compteur de tentatives dans l'adaptateur d'authentification personnalisé ADFS

Je viens de découvrir, cependant, que ce contexte n'est pas une chose côté serveur, mais est plutôt crypté et transféré au client dans un champ html caché.

L'utilisateur peut désormais contourner la limite de nouvelle tentative en naviguant simplement vers la page précédente, qui a la valeur précédente du nombre de tentatives, et en la soumettant à nouveau avec un nouveau code.

Je crois que j'ai besoin de stocker le nombre de tentatives seulement, mais où? Vous ne trouvez rien à ce sujet dans la documentation.

J'espère qu'ADFS lui-même supporterait une nouvelle tentative.

+0

Peut-être que je ferais mieux de supprimer la fonctionnalité de réessai tout à fait .. –

Répondre

0

Je n'ai pas trouvé d'emplacement côté serveur pour stocker des données pendant le processus d'authentification. Je crois qu'il n'y en a pas.

J'ai donc décidé de supprimer la fonction de réessai, supprimant ainsi la nécessité de données de session côté serveur. Mon module d'authentification de mot de passe à l'heure peut se passer de cette fonctionnalité.

Pourtant, cela ne me dérange pas. Sûrement, un module d'authentification plus élaboré aurait besoin d'un endroit pour suivre la progression de l'authentification côté serveur.