deb-python-pysaml2/src/saml2/userinfo/ldapinfo.py

37 lines
1.3 KiB
Python

import ldap
from ldap import SCOPE_SUBTREE
from saml2.userinfo import UserInfo
class UserInfoLDAP(UserInfo):
def __init__(self, uri, base, filter_pattern, scope=SCOPE_SUBTREE,
tls=False, user="", passwd="", attr=None, attrsonly=False):
UserInfo.__init__(self)
self.ldapuri = uri
self.base = base
self.filter_pattern = filter_pattern
self.scope = scope
self.tls = tls
self.attr = attr
self.attrsonly = attrsonly
self.ld = ldap.initialize(uri)
self.ld.protocol_version = ldap.VERSION3
self.ld.simple_bind_s(user, passwd)
def __call__(self, userid, base="", filter_pattern="", scope=SCOPE_SUBTREE,
tls=False, attr=None, attrsonly=False, **kwargs):
if filter_pattern:
_filter = filter_pattern % userid
else:
_filter = self.filter_pattern % userid
_base = base or self.base
_scope = scope or self.scope
_attr = attr or self.attr
_attrsonly = attrsonly or self.attrsonly
arg = [_base, _scope, _filter, _attr, _attrsonly]
res = self.ld.search_s(*arg)
# should only be one entry and the information per entry is
# the tuple (dn, ava)
return res[0][1]