python3: add detection of xml encoding

This commit is contained in:
Frédéric Péters 2018-03-25 09:58:14 +02:00
parent 7df3a6f5e0
commit 239f39c097
2 changed files with 13 additions and 1 deletions

View File

@ -3,6 +3,7 @@ import datetime
import importlib import importlib
from functools import wraps from functools import wraps
import isodate import isodate
from xml.parsers import expat
from django.contrib import auth from django.contrib import auth
from django.core.urlresolvers import reverse from django.core.urlresolvers import reverse
@ -246,3 +247,13 @@ def login(request, user):
break break
else: else:
auth.login(request, user) auth.login(request, user)
def get_xml_encoding(content):
xml_encoding = 'utf-8'
def xmlDeclHandler(version, encoding, standalone):
xml_encoding = encoding
parser = expat.ParserCreate()
parser.XmlDeclHandler = xmlDeclHandler
parser.Parse(content, True)
return xml_encoding

View File

@ -272,8 +272,9 @@ class LoginView(ProfileMixin, LogMixin, View):
return self.sso_failure(request, login, idp_message, status_codes) return self.sso_failure(request, login, idp_message, status_codes)
self.log.info('Got SAML Artifact Response', extra={'saml_response': result.content}) self.log.info('Got SAML Artifact Response', extra={'saml_response': result.content})
result.encoding = utils.get_xml_encoding(result.content)
try: try:
login.processResponseMsg(result.content) login.processResponseMsg(result.text)
login.acceptSso() login.acceptSso()
except lasso.ProfileMissingResponseError: except lasso.ProfileMissingResponseError:
# artifact is invalid, idp returned no response # artifact is invalid, idp returned no response