내 django/python 앱에서 내 SSO/SAML 공급자로부터 반환 된 XML 응답에 포함 된 서명을 확인하기 위해 M2Crypto를 사용하려고 시도하고 있지만 얻을 수없는 것 같습니다. 작업.Python/M2Crypto를 사용하여 SAML 서명 확인
내 XML 응답은 두 번째 예제 here과 비슷합니다.
수신자 : 및 here's 내 실제의 pastelistbin입니다.
내가 검증을 시도하기 위해이 같은 일부 코드를 사용하고 있습니다 : 나는 당겨 할 수 있기 때문에,
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
내가 성공적으로 응답에서 NameID을 얻을 수 있고, 내가 성공적으로 인증서를로드하고있어 알고 발행인 등을 포함 할 수 있습니다.
비록 XML에서 전달 된 해시를 시도했으나 다양한 부분을 인코딩하지 않고 signed_info
매개 변수 (SignedInfo 태그, Response 태그, 전체 태그)에 대해 다양한 XML 비트를 전달했습니다.), 그리고 XML을 독점적으로 정규화되도록하려면 ElementTree/ElementC14N.py을 사용하여 변환을 시도 했으므로 시도했지만 긍정적 인 결과를 얻지는 못했습니다.
무엇이 여기에 있습니까? 잘못된 XML에 대해 유효성을 검사하려고합니까? 내 확인 기술에 문제가 있습니까?
@Ennael을 알아 냈습니까? 당신은 [내 질문] (http://stackoverflow.com/questions/21209510/validating-saml-signature-in-python) 좀 봐 줄래? –