私のdjango/pythonアプリケーションで、私のSSO/SAMLプロバイダから返されたXML応答に含まれる署名をM2Cryptoを使って検証しようとしていますが、作業。Python/M2Cryptoを使用したSAML署名の確認
私のXML応答は、2番目の例のように見えますhere。
ETA:とhere's実際のXMLのペーストビン。
私が検証を試みるように、このようないくつかのコードを使用しています:
def verify_signature(signed_info, cert, signature):
from M2Crypto import EVP, RSA, X509
x509 = X509.load_cert_string(base64.decodestring(cert), X509.FORMAT_DER)
pubkey = x509.get_pubkey().get_rsa()
verify_EVP = EVP.PKey()
verify_EVP.assign_rsa(pubkey)
verify_EVP.reset_context(md='sha1')
verify_EVP.verify_init()
verify_EVP.verify_update(signature.decode('base64'))
result = verify_EVP.verify_final(signed_info)
return result
私は引くことができますので、私は成功した応答から名前IDを取得することができますし、私は成功した証明書をロードしています知っています発行者などがそれに含まれています。
しかし、私は、渡されたXMLをハッシュし、様々な部分をエンコードしないで、signed_info
パラメータ(SignedInfoタグ、Responseタグ、全体私はElementTree/ElementC14N.pyを使用して、XMLが独占的に正規化されていることを確認しようとしました。これは、Transformの実行が必要であることを意味しますが、肯定的な結果は得られません。
私はここで何が欠けていますか?間違ったXMLを検証しようとしていますか?私の検証技術に何か問題がありますか?
あなたはこれを@Ennaelで把握しましたか?あなたは[私の質問](http://stackoverflow.com/questions/21209510/validating-saml-signature-in-python)を見ていただけますか? –