Merge pull request #428 from bogdan-ds/remote_encoding_fix
Using the binary response content of requests to avoid incorrect metadata encoding
This commit is contained in:
@@ -750,7 +750,7 @@ class MetaDataExtern(InMemoryMetaData):
|
||||
"""
|
||||
response = self.http.send(self.url)
|
||||
if response.status_code == 200:
|
||||
_txt = response.text.encode("utf-8")
|
||||
_txt = response.content
|
||||
return self.parse_and_check_signature(_txt)
|
||||
else:
|
||||
logger.info("Response status: %s", response.status_code)
|
||||
@@ -814,7 +814,7 @@ class MetaDataMDX(InMemoryMetaData):
|
||||
response = requests.get(mdx_url, headers={
|
||||
'Accept': SAML_METADATA_CONTENT_TYPE})
|
||||
if response.status_code == 200:
|
||||
_txt = response.text.encode("utf-8")
|
||||
_txt = response.content
|
||||
|
||||
if self.parse_and_check_signature(_txt):
|
||||
return self.entity[item]
|
||||
|
22
tests/SWITCHaaiRootCA.crt.pem
Normal file
22
tests/SWITCHaaiRootCA.crt.pem
Normal file
@@ -0,0 +1,22 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIDnzCCAoegAwIBAgINSWITCHaai+Root+CAzANBgkqhkiG9w0BAQUFADBrMQsw
|
||||
CQYDVQQGEwJDSDFAMD4GA1UEChM3U3dpdGNoIC0gVGVsZWluZm9ybWF0aWtkaWVu
|
||||
c3RlIGZ1ZXIgTGVocmUgdW5kIEZvcnNjaHVuZzEaMBgGA1UEAxMRU1dJVENIYWFp
|
||||
IFJvb3QgQ0EwHhcNMDgwNTE1MDYzMDAwWhcNMjgwNTE1MDYyOTU5WjBrMQswCQYD
|
||||
VQQGEwJDSDFAMD4GA1UEChM3U3dpdGNoIC0gVGVsZWluZm9ybWF0aWtkaWVuc3Rl
|
||||
IGZ1ZXIgTGVocmUgdW5kIEZvcnNjaHVuZzEaMBgGA1UEAxMRU1dJVENIYWFpIFJv
|
||||
b3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDUSWbn/rhWew/s
|
||||
LJRyciyRKDGyFXSgiDO/EohYuZLw6EAKLLlhZorNtEHQbbn0Oo13S33MclHMvGWT
|
||||
KJM0u1hG+6gLy78EPmJbqAE1Uv23wVEH4SX0VJfl3JVqIebiAH/CjuLubgMUspDI
|
||||
jOdQHNLS7pthTbm7Tgh7zMsiLPyMTZJep5CGbqv8NoK6bMaF0Z+Bt7e1JRlhHFCV
|
||||
iJJaR/+hfpzLsJ8NWVivvrpRGaGJ1XR+9FGsTkjNdMCirNJJZ6XvUOe5w7pHSd9M
|
||||
cppFP0eyLs02AMzMXI4iz6PK/w3EdzXGXpK+gSgvLxWYct4xHpv1e2NXhNgdJOSN
|
||||
9ra/wJLVAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEG
|
||||
MB0GA1UdDgQWBBTpmuIGWOsP14EDXVyXubG1k307hDANBgkqhkiG9w0BAQUFAAOC
|
||||
AQEAMV/eIW6pFB+mbk7rD7hUPTWDRaoca3kHqmFGFnHfuY8+c0/Mqjh8Y/jyX1yb
|
||||
f58crTSWrbyGbUZ3oxDGQ34tuZSkmeR32NqryiX3sP5qlNSozVguQKt8o4vhS1Qe
|
||||
WPsXALs3em2pdKuIGSOpbuDnopPcmU2g5Zi2R5P7qpKDKAKtNUEwV+LW7GBMEksO
|
||||
Nj7BFXk4AFBFBijaYJGgHmoKSImVgeNIvsV+BSv5HJ4q6vcxfnwuvvGHM0AGphYO
|
||||
6f5qtHMUgvAblI8M/2QsBgethaGrirtKJ3aCRLdaR2R1QfaGRpck/Ron5/MpMxiJ
|
||||
wLT8YlW/zjx2yNABhPSAjfzeMw==
|
||||
-----END CERTIFICATE-----
|
@@ -7,12 +7,13 @@ from collections import OrderedDict
|
||||
from future.backports.urllib.parse import quote_plus
|
||||
|
||||
from saml2.config import Config
|
||||
from saml2.mdstore import MetadataStore
|
||||
from saml2.mdstore import MetadataStore, MetaDataExtern
|
||||
from saml2.mdstore import MetaDataMDX
|
||||
from saml2.mdstore import SAML_METADATA_CONTENT_TYPE
|
||||
from saml2.mdstore import destinations
|
||||
from saml2.mdstore import name
|
||||
from saml2 import sigver
|
||||
from saml2.httpbase import HTTPBase
|
||||
from saml2 import BINDING_SOAP
|
||||
from saml2 import BINDING_HTTP_REDIRECT
|
||||
from saml2 import BINDING_HTTP_POST
|
||||
@@ -385,6 +386,14 @@ def test_load_local():
|
||||
assert cfg
|
||||
|
||||
|
||||
def test_load_remote_encoding():
|
||||
crypto = sigver._get_xmlsec_cryptobackend()
|
||||
sc = sigver.SecurityContext(crypto, key_type="", cert_type="")
|
||||
httpc = HTTPBase()
|
||||
mds = MetaDataExtern(ATTRCONV, 'http://metadata.aai.switch.ch/metadata.aaitest.xml', sc, full_path('SWITCHaaiRootCA.crt.pem'), httpc)
|
||||
mds.load()
|
||||
|
||||
|
||||
def test_load_string():
|
||||
sec_config.xmlsec_binary = sigver.get_xmlsec_binary(["/opt/local/bin"])
|
||||
mds = MetadataStore(ATTRCONV, sec_config,
|
||||
|
Reference in New Issue
Block a user