0

J'ai actuellement un site web asp.net 2 asp.net hébergé dans IIS sécurisé avec l'authentification Windows. Une exigence est venu à pour l'instant nous pour soutenir l'authentification par certificat client, en plus de fenêtres, et je me bats pour savoir: - si cela est possible du tout - s'il y a des exemples de travail disponiblesWeb api 2 - windows + client cert auth - est-ce possible?

Je pensais que peut être en mesure d'ajouter un middleware ou un messagehandler ou un filtre Oowin supplémentaire, mais ne peut pas voir ceux qui le font spécifiquement pour Windows au lieu de s'en remettre uniquement à IIS. Je sais que thinktecture identitymodel peut faire un cert client, mais pas sûr si les deux peuvent être combinés?

Exemple de formes + gagner que je pensais peut-être similaire est ici https://techblog.dorogin.com/mixed-windows-forms-authentication-for-ajax-single-page-application-e4aaaac0424a

Répondre

0

droit si j'ai réussi à comprendre. Heureusement, si un contrôleur renvoie un 401, IIS ajoute automatiquement les en-têtes negotiate/ntlm, donc si un utilisateur est sur un navigateur Windows, il s'authentifiera automatiquement comme d'habitude. Donc, avec cela à l'esprit, de garder les fenêtres de travail auth, I:

  • mis à jour le site dans IIS et VS pour permettre l'anonymat et des fenêtres auth
  • ajouté le [AuthorizeAttribute] comme un filtre d'action global (ce qui provoque 401 à retourner si l'utilisateur n'est pas authentifié au moment où ils ont frappé le filtre)

pour obtenir le certificat client travail auth, j'ai utilisé la magnifique bibliothèque Thinktecture.IdentityModel, ce qui m'a permis d'ajouter une seule ligne à mon démarrage Fichier .cs (nous utilisons OWIN donc c'était facile)

app.UseClientCertificateAuthentication(); 

Voir https://github.com/IdentityModel/Thinktecture.IdentityModel/blob/master/samples/OWIN/AuthenticationTansformation/KatanaAuthentication/Startup.cs pour un exemple