Source code for squaresdb.settings.saml_decode
#!/usr/bin/python
import base64
import sys
import urllib
import zlib
# Based on https://lists.oasis-open.org/archives/saml-dev/200910/msg00003.html
[docs]
def decode_authn_request(authn_request):
""" AuthnRequest is always deflated, base64 encoded and url-escaped.
:parameter authn_request: AuthnRequest
:return: The decoded AuthnRequest if successful else empty string.
"""
decoded = ''
a = urllib.unquote(authn_request)
a = a.strip('SAMLRequest=')
try:
decoded = zlib.decompress(base64.b64decode(a), -8)
except (zlib.error, TypeError):
try:
decoded = zlib.decompress(base64.b64decode(a))
except (zlib.error, TypeError):
pass
return decoded
if __name__ == '__main__':
print(decode_authn_request(sys.stdin.read()))