2010-08-09 6 views
0

J'ai un peu de problème.Comment générer une signature XML Axis2 avec des certificats distribués

Nous avons un moteur d'interface centralisé qui parlera à un service Web qui fournira des informations complémentaires et permettra de soumettre des demandes à des systèmes externes. Tout ceci est bon et bon jusqu'à ce que nous ayons à intégrer cela avec la sécurité requise de ce fournisseur.

Ils émettent des certificats distribués par le biais de cartes à puce (clé USB) que l'utilisateur final doit utiliser pour que le logiciel interagisse avec ledit système (les services Web). Ils insistent pour que la signature (parfois multiple) soit faite contre le certificat de l'utilisateur final sur sa clé usb. La clé privée est, bien sûr, protégée par mot de passe. Comment puis-je connecter Axis2 qui finira par gérer tout cela aux certificats qui sont sur l'ordinateur de l'utilisateur final.

Le système est principalement une application de client lourd hérité dans Delphi 5, le moteur d'interface interagit principalement avec la base de données. Nous avons maintenant réussi à connecter un morceau de code qui connecte efficacement la station de l'utilisateur final au serveur d'interface via une simple socket TCP.

---- ---- EDIT

Nous avons implémenté la solution avec intercepteur de signature personnalisée au sein CXF (nous avons changé d'axe) qui a transmis le contenu du message à un proxy de signature qui à son tour trouver et connectez le bon service de signature s'exécutant sur la session interactive de l'utilisateur d'où provient la requête d'origine. J'ai accepté la réponse d'Eugène parce que même si nous n'avons pas utilisé les composants qu'il a spécifiés, nous avons implémenté la solution qui suivait les directives générales de sa proposition.

Il est impossible d'échapper au fait que la signature doit être effectuée dans une session interactive pour l'utilisateur à cause du jeton USB. Des contraintes supplémentaires ont été imposées en raison du fait que nous avons utilisé des systèmes hérités et de la nécessité de faire fonctionner le système dans un environnement partagé (serveur de bureau à distance). Bien que cela soit possible, il n'est pas supporté naturellement par les frameworks de services Web ou les bibliothèques cryptographiques.

Répondre

0

Si vous avez le certificat résidant sur le jeton USB du client, la signature (en tant qu'opération cryptographique) doit être effectuée côté client. Si vous pouvez modifier cette application Delphi, vous pouvez utiliser SecureBlackbox pour la signature. Je ne sais rien sur Axis2, mais si cela permet la création et le branchement de modules cryptographiques personnalisés, alors vous en ferez un qui prendra un hachage (ce qui est réellement signé) et l'enverra au client pour signature.

+0

Merci Eugene, désolé pour la réponse tardive. Oui, ce serait une approche viable, mais pour la signature XML, le composant Axis devrait envoyer le message SOAP sérialisé pour la signature dans son ensemble rendant l'utilisation de la signature XML plus naturelle. Bien que nous n'utilisions pas de blackbox sécurisée, nous avons implémenté une solution dans ce sens. – Newtopian

Questions connexes