python3 безопасно проверяет имя пользователя и пароль ldap - PullRequest
0 голосов
/ 09 октября 2019

Как я могу проверить в python3, действительны ли имя пользователя и пароль?

Я уже спрашиваю у пользователя имя пользователя и пароль:

import getpass
import sys

sys.stdout.write("- Enter your (LDAP) username : ")
    username = input().lower()
password=getpass.getpass("- Enter your (LDAP) password : ")

Я знаю, что могу использовать ldapwhoamiчтобы проверить правильность, что-то вроде:

import subprocess

subprocess.run(['ldapwhoami', '-h', 'ldap-server', '-D', '{}@domain'.format(username)', '-x', 
                '-w', password], check=True)

, но затем будет создан процесс, в котором будет виден пароль. Итак, как я могу проверить эти учетные данные безопасным способом? Либо скрыть пароль, либо использовать библиотеку python или что-то в этом роде?

1 Ответ

0 голосов
/ 09 октября 2019

Вы можете получить это, используя библиотеку python-ldap, таким образом, не создается отдельный процесс.

import ldap
try:
    # build a client
    ldap_client = ldap.initialize("ldap://ldap-server.domain")
    # perform a synchronous bind
    ldap_client.set_option(ldap.OPT_REFERRALS, 0)
    ldap_client.simple_bind_s("{}@domain".format(username), password)
    print("LDAP credentials were good!")
except ldap.INVALID_CREDENTIALS:
    ldap_client.unbind()
    print("LDAP credentials incorrect!")
...