Was ist der beste Weg, mit Python auf eine sichere Unternehmens-Soap-API zuzugreifen?Python

Python-Programme
Anonymous
 Was ist der beste Weg, mit Python auf eine sichere Unternehmens-Soap-API zuzugreifen?

Post by Anonymous »

Das Szenario:
  • Das Projekt, an dem ich arbeite, umfasst einen Unternehmens-SOAP-Endpunkt (Oracle SOA). Dies verwendet SOAP 1.2
  • Über SoapUI habe ich einen vollständigen Satz von Anforderungen, die ich replizieren muss. Insbesondere die ausgehende Sicherheit:

    Muss ein Zeitstempel-Token mit Millisekundengenauigkeit haben
  • Muss ein Benutzernamen-Token mit einer Nonce haben
  • Muss eine Signatur haben (BinarySecurityToken unter Verwendung eines einzelnen Zertifikats zum Signieren und ein Signaturelement im Sicherheitsheader für die Benutzername-Token, Zeitstempel und Text – unter Verwendung eines bestimmten Paares aus privatem Schlüssel und Zertifikat.
  • Muss über eine Verschlüsselung mit dem öffentlichen Schlüssel des Servers verfügen (den ich habe), und der symmetrische Schlüssel muss in einen EncryptedKey verschlüsselt werden. – Insbesondere müssen das Benutzernamen-Token und der Text verschlüsselt werden.
[*]Es gibt eingehende Sicherheit als Nun ja, die Nachricht muss mit dem öffentlichen Schlüssel des Servers entschlüsselt werden.


Das Problem:
  • Ich weiß nicht, wie ich das in Python reproduzieren soll. Die Testumgebung (die keine Anmeldeinformationen verwendet) funktioniert mit Zeep einwandfrei, daher weiß ich, dass die Struktur meiner Nachricht in Ordnung ist. Zeep unterstützt dies jedoch nicht muss verstanden werden, und ich kann anscheinend nicht herausfinden, wie ich XML-Teile verschlüsseln würde.
  • Ich habe darüber nachgedacht, Zeep-Egress-Plugins zu schreiben, um die Verschlüsselungsteile zu handhaben, aber es scheint mir, dass dies zu Ärger führen würde.
  • Suds-Community ist die andere hoch angesehene Option und unterstützt zusätzliche Sicherheitseinstellungen, aber ich glaube nicht, dass es so funktionieren würde erfordert SOAP 1.2, und Suds-Community scheint nur SOAP 1.1 zu unterstützen. Es scheint auch keine BinarySecurityTokens ohne py-wsse zu unterstützen, und py-wsse kann nicht von pip installiert werden.
Der andere Dienst, der dies geschrieben hat und verbraucht, verwendet Apache Axis 2 mit Rampart, aber das hilft mir nicht Policy.xml, aber es scheint keine Möglichkeit zu geben, diese Informationen in Python zu nutzen, außer die XML-Anfrage manuell zu erstellen. Idealerweise muss die Lösung Python verwenden und Mac-freundlich sein (unser Unternehmen verwendet Macs für die Entwicklung).

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post