本文整理汇总了Python中ldap.SERVER_DOWN属性的典型用法代码示例。如果您正苦于以下问题:Python ldap.SERVER_DOWN属性的具体用法?Python ldap.SERVER_DOWN怎么用?Python ldap.SERVER_DOWN使用的例子?那么, 这里精选的属性代码示例或许可以为您提供帮助。您也可以进一步了解该属性所在类ldap
的用法示例。
在下文中一共展示了ldap.SERVER_DOWN属性的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: _check_ldap_password
# 需要导入模块: import ldap [as 别名]
# 或者: from ldap import SERVER_DOWN [as 别名]
def _check_ldap_password(cn, password):
"""Checks that the given cn/password credentials work on the given CN.
@param cn: Common name to log on
@param password: Password for cn
@return: True on success, False on failure
"""
cnx = ldap.initialize(config['ckanext.ldap.uri'])
try:
cnx.bind_s(cn, password)
except ldap.SERVER_DOWN:
log.error('LDAP server is not reachable')
return False
except ldap.INVALID_CREDENTIALS:
log.debug('Invalid LDAP credentials')
return False
# Fail on empty password
if password == '':
log.debug('Invalid LDAP credentials')
return False
cnx.unbind_s()
return True
示例2: check_password
# 需要导入模块: import ldap [as 别名]
# 或者: from ldap import SERVER_DOWN [as 别名]
def check_password(self, uid, password):
"""Check if the specified couple user/password is correct
In:
- ``uid`` -- the user id
- ``password`` -- the user password
Return:
- True if password is checked
"""
c = self.connect()
dn = self.get_user_dn(uid)
# Try to authenticate
try:
c.simple_bind_s(dn, password.encode('UTF-8'))
return True
except ldap.INVALID_CREDENTIALS:
log.info("Bad credentials for DN %r" % dn)
except ldap.SERVER_DOWN:
log.critical("LDAP server down")
finally:
c.unbind()
示例3: login
# 需要导入模块: import ldap [as 别名]
# 或者: from ldap import SERVER_DOWN [as 别名]
def login():
if request.method == 'GET':
return render_template('login.html')
else:
try:
user = authenticate(request.form.get('email'), request.form.get('password'))
except SERVER_DOWN:
flash("LDAP Server down.", "danger")
return render_template('login.html')
except INVALID_CREDENTIALS:
flash("Invalid credentials.", "danger")
return render_template('login.html')
except LdapSettingsNotPresentException:
flash("LDAP Settings not present. Check server logs.", "danger")
return render_template('login.html')
if not user or not user_has_groups_and_sharing(user):
flash("Access not allowed.", "danger")
return render_template('login.html')
redir = request.args.get('next', '/')
return redirect(redir)
示例4: main
# 需要导入模块: import ldap [as 别名]
# 或者: from ldap import SERVER_DOWN [as 别名]
def main():
try:
# Open a connection
ldap_client = ldap.initialize(LDAP_SERVER)
# Set LDAPv3 option
ldap_client.set_option(ldap.OPT_PROTOCOL_VERSION,3)
# Bind/authenticate with a user with appropriate rights
ldap_client.simple_bind("admin",'Secret123')
# Get user attributes defined in LDAP_ATTRS
result = ldap_client.search_s(LDAP_BASE_DN,ldap.SCOPE_SUBTREE,LDAP_FILTER, LDAP_ATTRS)
print(result)
except ldap.INVALID_CREDENTIALS as exception:
ldap_client.unbind()
print('Wrong username or password. '+exception)
except ldap.SERVER_DOWN as exception:
print('LDAP server not available. '+exception)
开发者ID:PacktPublishing,项目名称:Learning-Python-Networking-Second-Edition,代码行数:18,代码来源:connect_python_ldap.py
示例5: check_ldap_password
# 需要导入模块: import ldap [as 别名]
# 或者: from ldap import SERVER_DOWN [as 别名]
def check_ldap_password(cn, password):
'''Checks that the given cn/password credentials work on the given CN.
:param cn: Common name to log on
:param password: Password for cn
:returns: True on success, False on failure
'''
cnx = ldap.initialize(toolkit.config[u'ckanext.ldap.uri'], bytes_mode=False,
trace_level=toolkit.config[u'ckanext.ldap.trace_level'])
try:
cnx.bind_s(cn, password)
except ldap.SERVER_DOWN:
log.error(u'LDAP server is not reachable')
return False
except ldap.INVALID_CREDENTIALS:
log.debug(u'Invalid LDAP credentials')
return False
# Fail on empty password
if password == u'':
log.debug(u'Invalid LDAP credentials')
return False
cnx.unbind_s()
return True
示例6: _get_conn
# 需要导入模块: import ldap [as 别名]
# 或者: from ldap import SERVER_DOWN [as 别名]
def _get_conn(self):
self._log.debug('Setting up LDAP connection')
ldap.set_option(ldap.OPT_X_TLS_REQUIRE_CERT, ldap.OPT_X_TLS_NEVER)
try:
conn = ldap.initialize(self._url)
conn.set_option(ldap.OPT_NETWORK_TIMEOUT, 3)
conn.set_option(ldap.OPT_REFERRALS, ldap.OPT_OFF)
conn.simple_bind_s(self._binddn, self._bindpw)
except (
ldap.SERVER_DOWN,
ldap.NO_SUCH_OBJECT,
ldap.INVALID_CREDENTIALS
) as e:
if hasattr(e, 'message') and 'desc' in e.message:
msg = e.message['desc']
else:
msg = e.args[0]['desc']
self._log.debug('%s (%s)' % (msg, self._url))
return False
self._log.debug('LDAP connection established')
return conn
示例7: _find_ldap_user
# 需要导入模块: import ldap [as 别名]
# 或者: from ldap import SERVER_DOWN [as 别名]
def _find_ldap_user(login):
"""Find the LDAP user identified by 'login' in the configured ldap database
@param login: The login to find in the LDAP database
@return: None if no user is found, a dictionary defining 'cn', 'username', 'fullname' and 'email otherwise.
"""
cnx = ldap.initialize(config['ckanext.ldap.uri'])
if config.get('ckanext.ldap.auth.dn'):
try:
if config['ckanext.ldap.auth.method'] == 'SIMPLE':
cnx.bind_s(config['ckanext.ldap.auth.dn'], config['ckanext.ldap.auth.password'])
elif config['ckanext.ldap.auth.method'] == 'SASL':
if config['ckanext.ldap.auth.mechanism'] == 'DIGEST-MD5':
auth_tokens = ldap.sasl.digest_md5(config['ckanext.ldap.auth.dn'], config['ckanext.ldap.auth.password'])
cnx.sasl_interactive_bind_s("", auth_tokens)
else:
log.error("SASL mechanism not supported: {0}".format(config['ckanext.ldap.auth.mechanism']))
return None
else:
log.error("LDAP authentication method is not supported: {0}".format(config['ckanext.ldap.auth.method']))
return None
except ldap.SERVER_DOWN:
log.error('LDAP server is not reachable')
return None
except ldap.INVALID_CREDENTIALS:
log.error('LDAP server credentials (ckanext.ldap.auth.dn and ckanext.ldap.auth.password) invalid')
return None
except ldap.LDAPError, e:
log.error("Fatal LDAP Error: {0}".format(e))
return None
示例8: test_server_down_auth
# 需要导入模块: import ldap [as 别名]
# 或者: from ldap import SERVER_DOWN [as 别名]
def test_server_down_auth(self):
"""
Verify an ldap.SERVER_DOWN error will retry 2 more times and that
the connection is closed if all attempts fail.
"""
service = self.service()
testStats = {}
# Verify that without a SERVER_DOWN we don't need to retry, and we
# still have a connection in the pool
service._authenticateUsernamePassword_inThread(
u"uid=wsanchez,cn=user,{0}".format(self.baseDN),
u"zehcnasw",
testStats=testStats
)
self.assertEquals(testStats["retryNumber"], 0)
self.assertEquals(len(service.connectionPools["auth"].connections), 1)
testStats["raise"] = ldap.SERVER_DOWN
# Now try auth again
try:
service._authenticateUsernamePassword_inThread(
u"uid=wsanchez,cn=user,{0}".format(self.baseDN),
u"zehcnasw",
testStats=testStats
)
except LDAPQueryError:
# Verify the number of times we retried
self.assertEquals(testStats["retryNumber"], 2)
except:
self.fail("Should have raised LDAPQueryError")
示例9: ldap_auth
# 需要导入模块: import ldap [as 别名]
# 或者: from ldap import SERVER_DOWN [as 别名]
def ldap_auth(self, username, password):
if self.cert_path:
ldap.set_option(ldap.OPT_X_TLS_CACERTFILE, self.cert_path)
connection = ldap.initialize(self.ldap_url)
connection.set_option(ldap.OPT_REFERRALS, 0)
if not password:
return False
auth_user = username + self.user_suffix
try:
if self.bind_user:
# use search filter to find DN of username
connection.simple_bind_s(self.bind_user, self.bind_password)
sfilter = self.search_filter % username
result = connection.search_s(self.base_dn, ldap.SCOPE_SUBTREE, sfilter, ['dn'])
if len(result) < 1:
return False
auth_user = result[0][0]
connection.simple_bind_s(auth_user, password)
except ldap.INVALID_CREDENTIALS:
return False
except (ldap.SERVER_DOWN, ldap.INVALID_DN_SYNTAX) as err:
logger.warning("%s", err)
return None
return True
示例10: ldap_auth
# 需要导入模块: import ldap [as 别名]
# 或者: from ldap import SERVER_DOWN [as 别名]
def ldap_auth(self, username, password):
if self.cert_path:
ldap.set_option(ldap.OPT_X_TLS_CACERTFILE, self.cert_path)
connection = ldap.initialize(self.ldap_url)
connection.set_option(ldap.OPT_REFERRALS, 0)
if not password:
return False
auth_user = username + self.user_suffix
try:
if self.bind_user:
# use search filter to find DN of username
connection.simple_bind_s(self.bind_user, self.bind_password)
sfilter = self.search_filter % username
result = connection.search_s(self.base_dn, ldap.SCOPE_SUBTREE, sfilter, ['dn'])
if len(result) < 1:
return False
auth_user = result[0][0]
connection.simple_bind_s(auth_user, password)
except ldap.INVALID_CREDENTIALS:
return False
except (ldap.SERVER_DOWN, ldap.INVALID_DN_SYNTAX) as err:
logger.warn("%s", err)
return None
return True
示例11: testLdapUnavaible
# 需要导入模块: import ldap [as 别名]
# 或者: from ldap import SERVER_DOWN [as 别名]
def testLdapUnavaible(self):
cfg2 = cfg.copy()
cfg2['uri'] = 'ldaps://notaldap:637'
cfg2['checkcert'] = 'on'
inv = Backend(cfg2, cherrypy.log, 'ldap', attr, 'uid')
try:
ldapc = inv._connect()
ldapc.simple_bind_s(inv.binddn, inv.bindpassword)
except ldap.SERVER_DOWN as e:
return
else:
raise AssertionError("expected an exception")
示例12: testConnectSSLWrongCA
# 需要导入模块: import ldap [as 别名]
# 或者: from ldap import SERVER_DOWN [as 别名]
def testConnectSSLWrongCA(self):
cfg2 = cfg.copy()
cfg2['uri'] = 'ldaps://ldap.ldapcherry.org:637'
cfg2['checkcert'] = 'on'
inv = Backend(cfg2, cherrypy.log, 'ldap', attr, 'uid')
ldapc = inv._connect()
try:
ldapc.simple_bind_s(inv.binddn, inv.bindpassword)
except ldap.SERVER_DOWN as e:
assert e.args[0]['info'] == 'TLS: hostname does not match CN in peer certificate' or \
e.args[0]['info'] == '(unknown error code)'
else:
raise AssertionError("expected an exception")
示例13: _bind
# 需要导入模块: import ldap [as 别名]
# 或者: from ldap import SERVER_DOWN [as 别名]
def _bind(self, dn, password):
""" bind a user in ldap with given password
ldap does not support unicode for binding
so we must cast password to utf-8
"""
log.debug('binding with dn: %s' % dn)
try:
self._conn.simple_bind_s(dn, password.encode('utf-8'))
except SERVER_DOWN:
self._conn = ldap.initialize(self._url)
self._conn.simple_bind_s(dn, password.encode('utf-8'))
示例14: find_ldap_user
# 需要导入模块: import ldap [as 别名]
# 或者: from ldap import SERVER_DOWN [as 别名]
def find_ldap_user(login):
'''Find the LDAP user identified by 'login' in the configured ldap database
:param login: The login to find in the LDAP database
:returns: None if no user is found, a dictionary defining 'cn', 'username',
'fullname' and 'email otherwise.
'''
cnx = ldap.initialize(toolkit.config[u'ckanext.ldap.uri'], bytes_mode=False,
trace_level=toolkit.config[u'ckanext.ldap.trace_level'])
cnx.set_option(ldap.OPT_NETWORK_TIMEOUT, 10)
if toolkit.config.get(u'ckanext.ldap.auth.dn'):
try:
if toolkit.config[u'ckanext.ldap.auth.method'] == u'SIMPLE':
cnx.bind_s(toolkit.config[u'ckanext.ldap.auth.dn'],
toolkit.config[u'ckanext.ldap.auth.password'])
elif toolkit.config[u'ckanext.ldap.auth.method'] == u'SASL':
if toolkit.config[u'ckanext.ldap.auth.mechanism'] == u'DIGEST-MD5':
auth_tokens = ldap.sasl.digest_md5(toolkit.config[u'ckanext.ldap.auth.dn'],
toolkit.config[
u'ckanext.ldap.auth.password'])
cnx.sasl_interactive_bind_s(u'', auth_tokens)
else:
log.error(u'SASL mechanism not supported: {0}'.format(
toolkit.config[u'ckanext.ldap.auth.mechanism']))
return None
else:
log.error(u'LDAP authentication method is not supported: {0}'.format(
toolkit.config[u'ckanext.ldap.auth.method']))
return None
except ldap.SERVER_DOWN:
log.error(u'LDAP server is not reachable')
return None
except ldap.INVALID_CREDENTIALS:
log.error(
u'LDAP server credentials (ckanext.ldap.auth.dn and ckanext.ldap.auth.password) '
u'invalid')
return None
except ldap.LDAPError, e:
log.error(u'Fatal LDAP Error: {0}'.format(e))
return None
示例15: _search
# 需要导入模块: import ldap [as 别名]
# 或者: from ldap import SERVER_DOWN [as 别名]
def _search(self, base, fltr, attrs=None, scope=ldap.SCOPE_SUBTREE):
self._log.debug('Search base: %s, filter: %s, attributes: %s, scope: %s' % (base, fltr, attrs, scope))
try:
results = self._conn.search_s(base, scope, fltr, attrs)
except (ldap.NO_SUCH_OBJECT, ldap.SERVER_DOWN) as e:
self._log.debug(self._get_ldap_msg(e))
results = False
except ldap.REFERRAL as e:
self._log.critical("Replica %s is temporarily unavailable." % self._fqdn)
self._log.debug("Replica redirected")
self._log.debug(e.message['info'])
exit(1)
return results