X-Git-Url: http://git.cascardo.info/?p=cascardo%2Fipsilon.git;a=blobdiff_plain;f=ipsilon%2Fproviders%2Fsaml2idp.py;h=a1247d5da3193442aea651708c622f2c2ac0b607;hp=507bba291491f164c0c51e8b449ae47085fdb975;hb=62cdf30afac58855d9895dfe32a58332315e50c4;hpb=11242b8a3cab8d1594644cf22285e94639cca158 diff --git a/ipsilon/providers/saml2idp.py b/ipsilon/providers/saml2idp.py index 507bba2..a1247d5 100755 --- a/ipsilon/providers/saml2idp.py +++ b/ipsilon/providers/saml2idp.py @@ -24,11 +24,11 @@ from ipsilon.providers.saml2.admin import AdminPage from ipsilon.providers.saml2.provider import IdentityProvider from ipsilon.tools.certs import Certificate from ipsilon.tools import saml2metadata as metadata +from ipsilon.tools import files from ipsilon.util.user import UserSession from ipsilon.util.plugin import PluginObject import cherrypy import lasso -import pwd import os @@ -141,6 +141,7 @@ class IdpProvider(ProviderBase): def __init__(self): super(IdpProvider, self).__init__('saml2', 'saml2') + self.admin = None self.page = None self.idp = None self.description = """ @@ -246,16 +247,13 @@ class Installer(object): def install_args(self, group): group.add_argument('--saml2', choices=['yes', 'no'], default='yes', help='Configure SAML2 Provider') - group.add_argument('--saml2-storage', - default='/var/lib/ipsilon/saml2', - help='SAML2 Provider storage area') def configure(self, opts): if opts['saml2'] != 'yes': return # Check storage path is present or create it - path = opts['saml2_storage'] + path = os.path.join(opts['data_dir'], 'saml2') if not os.path.exists(path): os.makedirs(path, 0700) @@ -264,14 +262,17 @@ class Installer(object): cert.generate('idp', opts['hostname']) # Generate Idp Metadata - url = 'https://' + opts['hostname'] + '/idp/saml2' + proto = 'https' + if opts['secure'].lower() == 'no': + proto = 'http' + url = '%s://%s/%s/saml2' % (proto, opts['hostname'], opts['instance']) meta = metadata.Metadata(metadata.IDP_ROLE) meta.set_entity_id(url + '/metadata') meta.add_certs(cert, cert) meta.add_service(metadata.SAML2_SERVICE_MAP['sso-post'], - url + 'SSO/POST') + url + '/SSO/POST') meta.add_service(metadata.SAML2_SERVICE_MAP['sso-redirect'], - url + 'SSO/Redirect') + url + '/SSO/Redirect') meta.add_allowed_name_format( lasso.SAML2_NAME_IDENTIFIER_FORMAT_TRANSIENT) @@ -294,18 +295,10 @@ class Installer(object): config = {'idp storage path': path, 'idp metadata file': 'metadata.xml', 'idp certificate file': cert.cert, - 'idp key file': cert.key} + 'idp key file': cert.key, + 'enabled': '1'} po.set_config(config) po.save_plugin_config(FACILITY) # Fixup permissions so only the ipsilon user can read these files - pw = pwd.getpwnam(opts['system_user']) - for root, dirs, files in os.walk(path): - for name in dirs: - target = os.path.join(root, name) - os.chown(target, pw.pw_uid, pw.pw_gid) - os.chmod(target, 0700) - for name in files: - target = os.path.join(root, name) - os.chown(target, pw.pw_uid, pw.pw_gid) - os.chmod(target, 0600) + files.fix_user_dirs(path, opts['system_user'])