Question

Je dispose d'un service Web protégé en obligeant l'application tierce consommateur à transmettre un certificat client. J'ai installé le certificat sur le service Web fournisseur en production et sur le client. Ce processus fonctionne actuellement correctement pour d'autres clients dotés d'une configuration similaire. La version actuelle est écrite en .NET 3.5 et fonctionne parfaitement sur ma machine de développement sous cassini (et fonctionne de manière autonome), mais refuse de travailler sur ma machine de production avec le même code et la même configuration de certificat. J'ai confirmé que le service Web du fournisseur accepte le certificat installé sur le client via le navigateur, mais lorsque le certificat est ajouté à un appel de service Web par programme, je reçois un 403, l'accès est refusé. Je produis l'empreinte du certificat ajouté à l'appel avant qu'il ne fasse la demande au Webservice protégé. Il s'agit bien du certificat attaché correct. Je pense que quelque part sur la ligne, il n'a pas accès à la partie clé privée du certificat.

Des idées?

Remarque: j'ai donné au processus IIS l'accès aux répertoires ~ / crypto appropriés.

C ++ et .NET 3.5

Était-ce utile?

La solution

J'ai eu ce genre de problème il y a quelques semaines. La solution dans mon cas consistait à utiliser l'emprunt d'identité afin d'obtenir un accès approprié au magasin de certificats. Par défaut, le thread de travail IIS s'exécutait en tant qu'utilisateur système et, en tant que tel, n'avait pas accès au magasin approprié. L'ajout du certificat à un magasin d'utilisateurs spécifique et l'emprunt d'identité de cet utilisateur ont résolu tous les problèmes.

Je continuerai toutefois à suivre cette question, sachant que l’usurpation d’identité n’est pas une solution miracle, et que des problèmes en découleront dans ce scénario.

Autres conseils

Il y a une raison distincte pour que cela ne fonctionne pas sur ma machine. Lorsqu'il est exécuté dans Visual Studio, il s'exécute avec mes informations d'identification, qui ont été utilisées pour installer le certificat. Ainsi, a automatiquement la permission d'accéder au magasin de clés privées sur la machine. Toutefois, lorsqu’il s’exécute en dehors de cassini (dans l’EDI), le processus IIS n’avait pas de permission d’accéder au magasin de clés privées.

Solution temporaire: exécutez le domaine d'application en tant que système local . Mauvais pour la sécurité, mais l’application est opérationnelle (bien qu’elle soit assistée par bandes) jusqu’à ce que je puisse trouver une solution plus permanente.

Vous pouvez simplement coller cet autocollant sur votre programme et l'appeler un jour:

alt text

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top