diff options
-rwxr-xr-x | ipsilon/providers/saml2/admin.py | 17 | ||||
-rw-r--r-- | templates/admin/providers/saml2_sp_new.html | 18 |
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 |