summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xipsilon/providers/saml2/admin.py17
-rw-r--r--templates/admin/providers/saml2_sp_new.html18
2 files changed, 32 insertions, 3 deletions
diff --git a/ipsilon/providers/saml2/admin.py b/ipsilon/providers/saml2/admin.py
index 552d655..5d97126 100755
--- a/ipsilon/providers/saml2/admin.py
+++ b/ipsilon/providers/saml2/admin.py
@@ -23,6 +23,7 @@ from ipsilon.providers.saml2.provider import ServiceProvider
from ipsilon.providers.saml2.provider import ServiceProviderCreator
from ipsilon.providers.saml2.provider import InvalidProviderId
import re
+import requests
VALID_IN_NAME = r'[^\ a-zA-Z0-9]'
@@ -73,11 +74,25 @@ class NewSPAdminPage(Page):
return self.form_new(message, message_type)
name = value
- elif key == 'meta':
+ elif key == 'metatext':
+ if len(value) > 0:
+ meta = value
+ elif key == 'metafile':
if hasattr(value, 'content_type'):
meta = value.fullvalue()
else:
self._debug("Invalid format for 'meta'")
+ elif key == 'metaurl':
+ if len(value) > 0:
+ try:
+ r = requests.get(value)
+ r.raise_for_status()
+ meta = r.content
+ except Exception, e: # pylint: disable=broad-except
+ self._debug("Failed to fetch metadata: " + repr(e))
+ message = "Failed to fetch metadata: " + repr(e)
+ message_type = "error"
+ return self.form_new(message, message_type)
if name and meta:
try:
diff --git a/templates/admin/providers/saml2_sp_new.html b/templates/admin/providers/saml2_sp_new.html
index 46e4906..b3cef19 100644
--- a/templates/admin/providers/saml2_sp_new.html
+++ b/templates/admin/providers/saml2_sp_new.html
@@ -17,10 +17,24 @@
</div>
<div class="form-group">
- <label for="meta">Metadata file:</label>
- <input type="file" name="meta" id="file"
+ <label for="metafile">Metadata file:</label>
+ <input type="file" name="metafile" id="file"
title="The metadata file generated by the Service Provider"/>
</div>
+ - OR -
+ <div class="form-group">
+ <label for="metaurl">Metadata url:</label>
+ <input type="text" name="metaurl" id="url"
+ title="The metadata url exposed by the Service Provider (ex. http://service.provider/saml/metadata )"/>
+ </div>
+ - OR -
+ <div class="form-group">
+ <label for="metatext">Metadata text:</label>
+ <br>
+ <textarea name="metatext" rows="10" cols="80"
+ title="The metadata generated by the Service Provider"
+ form="{{ name }}"></textarea>
+ </div>
<button id="submit" class="btn btn-primary" name="submit" type="submit" value="Submit">
Save