root/uauth/utils.py @ 836b9f76
| 764ef897 | Serghei MIHAI | import os
|
|
| 09d398ce | Serghei MIHAI | import logging
|
|
| 764ef897 | Serghei MIHAI | import json
|
|
| 09d398ce | Serghei MIHAI | ||
try:
|
|||
import ldap
|
|||
import ldap.modlist
|
|||
except ImportError:
|
|||
ldap = None
|
|||
from django.conf import settings
|
|||
logger = logging.getLogger(__name__)
|
|||
| 764ef897 | Serghei MIHAI | def get_idp_list():
|
|
| 318ca21b | Serghei MIHAI | idp_list_file = os.path.join(settings.METADATAS_DIR, 'idps.json')
|
|
| 764ef897 | Serghei MIHAI | return json.load(file(idp_list_file))
|
|
def is_organization_idp(entity_id, organization):
|
|||
idps = get_idp_list()
|
|||
for idp in idps:
|
|||
if entity_id == idp['ENTITY_ID']:
|
|||
return True
|
|||
return False
|
|||
def get_ldap_connection(conf=settings.LDAP_CONF):
|
|||
| 09d398ce | Serghei MIHAI | conn = ldap.initialize(conf['url'])
|
|
for key, value in conf['options']:
|
|||
conn.set_option(key, value)
|
|||
| 764ef897 | Serghei MIHAI | try:
|
|
conn.whoami_s()
|
|||
except ldap.SERVER_DOWN:
|
|||
logger.error('LDAP server down')
|
|||
return
|
|||
try:
|
|||
if 'credentials' in conf:
|
|||
conn.bind_s(*conf['credentials'])
|
|||
elif 'bind_dn' in conf:
|
|||
conn.bind_s(conf['bind_dn'], conf['bind_passwd'])
|
|||
except ldap.INVALID_CREDENTIALS:
|
|||
logger.warning('Invalid LDAP credentials')
|
|||
return
|
|||
return conn
|
|||
| 09d398ce | Serghei MIHAI | ||
def create_radius_user(username, password, **kwargs):
|
|||
| 764ef897 | Serghei MIHAI | connection = get_ldap_connection()
|
|
| 09d398ce | Serghei MIHAI | if connection:
|
|
| 008a36de | Serghei MIHAI | attrs = {'objectClass': ['radiusprofile', 'radiusObjectProfile'],
|
|
| 09d398ce | Serghei MIHAI | 'uid': username,
|
|
'userPassword': password,
|
|||
'cn': username}
|
|||
attrs.update(kwargs)
|
|||
ldif = ldap.modlist.addModlist(attrs)
|
|||
dn = 'uid=%s,%s' % (username, settings.LDAP_CONF['dn'])
|
|||
| 764ef897 | Serghei MIHAI | logger.debug('creating new radius user: %s' % dn)
|
|
| 09d398ce | Serghei MIHAI | connection.add_s(dn, ldif)
|
|
| 6a622bf4 | Serghei MIHAI | return True
|
|
else:
|
|||
return False
|