Show AuthnStatement together with all attributes on result page.

This commit is contained in:
Rebecka Gulliksson
2016-01-15 12:20:15 +01:00
parent 62d12bd346
commit ecaee0a93b

View File

@@ -2,11 +2,13 @@
from __future__ import print_function from __future__ import print_function
import argparse import argparse
import cgi
import importlib import importlib
import logging import logging
import os import os
import re import re
import sys import sys
import xml.dom.minidom
import six import six
from six.moves.http_cookies import SimpleCookie from six.moves.http_cookies import SimpleCookie
@@ -329,9 +331,15 @@ class Service(object):
class User(object): class User(object):
def __init__(self, name_id, data): def __init__(self, name_id, data, saml_response):
self.name_id = name_id self.name_id = name_id
self.data = data self.data = data
self.response = saml_response
@property
def authn_statement(self):
xml_doc = xml.dom.minidom.parseString(str(self.response.assertion.authn_statement[0]))
return xml_doc.toprettyxml()
class ACS(Service): class ACS(Service):
@@ -374,7 +382,7 @@ class ACS(Service):
logger.info("AVA: %s", self.response.ava) logger.info("AVA: %s", self.response.ava)
user = User(self.response.name_id, self.response.ava) user = User(self.response.name_id, self.response.ava, self.response)
cookie = self.cache.set_cookie(user) cookie = self.cache.set_cookie(user)
resp = Redirect("/", headers=[ resp = Redirect("/", headers=[
@@ -668,7 +676,9 @@ def main(environ, start_response, sp):
return sso.do() return sso.do()
body = dict_to_table(user.data) body = dict_to_table(user.data)
body += '<br><a href="/logout">logout</a>' authn_stmt = cgi.escape(user.authn_statement)
body.append('<br><pre>' + authn_stmt + "</pre>")
body.append('<br><a href="/logout">logout</a>')
resp = Response(body) resp = Response(body)
return resp(environ, start_response) return resp(environ, start_response)