LDAP: протокол и средства управления централизованной авторизацией
LDAP (Lightweight Directory Access Protocol) - это протокол доступа к каталогам, который используется для управления и доступа к распределенным каталогам информации, таким как список пользователей, группы и другие.
Пример кода для подключения к серверу LDAP и получения информации о пользователе:
import ldap
#Подключение к серверу LDAP
l = ldap.initialize('ldap://ldap.server.com')
#Отправить удостоверение пользователя для получения доступа
username = "user1"
password = "password1"
l.simple_bind_s(username, password)
#Поиск пользователя по имени пользователя
search_filter = "(&(objectClass=user)(sAMAccountName=%s))" % 'username1'
results = l.search_s('ou=Users,dc=server,dc=com', ldap.SCOPE_SUBTREE, search_filter)
#Получить информацию о пользователе
user_info = results[0][1]
print(user_info["displayName"][0])
print(user_info["mail"][0])
Пример кода для создания пользователя в каталоге LDAP:
import ldap
#Подключение к серверу LDAP
l = ldap.initialize('ldap://ldap.server.com')
#Отправить удостоверение пользователя для получения доступа
username = "admin"
password = "admin123"
l.simple_bind_s(username, password)
#Данные нового пользователя
username = "user2"
password = "password2"
cn = "User 2"
sn = "2"
mail = "user2@example.com"
#Создать нового пользователя
dn = "cn=%s,ou=Users,dc=server,dc=com" % cn
attrs = {}
attrs['objectclass'] = ['top', 'person', 'organizationalPerson', 'user']
attrs['cn'] = cn
attrs['sn'] = sn
attrs['userPrincipalName'] = username
attrs['sAMAccountName'] = username
attrs['unicodePwd'] = unicode('\"' + password + '\"','iso-8859-1')
attrs['mail'] = mail
l.add_s(dn, attrs)
print("User created successfully.")
Это только несколько примеров того, как можно использовать LDAP. Протокол LDAP используется для многих задач, например, для аутентификации пользователей, настройки авторизации, хранения данных о пользователе и многих других. Важно знать, что LDAP является расширяемым протоколом, который позволяет разработчикам создавать свои собственные схемы объектов и расширения для удовлетворения потребностей своих приложений.