 |

10.11.2020, 14:58
|
|
Постоянный
Регистрация: 21.12.2014
Сообщений: 716
С нами:
5996077
Репутация:
108
|
|
В общем, пока юзал Python Flask, делал в общем сервис один, и понял что собственно с LDAP не так уж и просто работать как казалось бы.
Остановился на банальной авторизации, кароче суть не в том, пришлось писать самому (читать документацию, что я как обычно не делаю), ну что бы другие не мучились, вот уже готовая функция которая возвращает Trueесли креды совпали и Falseесли не совпали.
Там все просто, сначала коннект под админом, поиск пользователя по всей базе, потом получение bind dn (грубо говоря путь), и авторизация уже под ним (под полученным юзером), после возвращение результата, но готовой я ее так и не нашел, по этому вот.
Python:
Код:
from
ldap3
import
Server
,
Connection
,
ALL
,
SUBTREE
def
auth_ldap
(
nname
,
passw
)
:
s
=
Server
(
'ldaps://ldap.k21'
,
port
=
636
,
use_ssl
=
True
,
get_info
=
ALL
)
# параметры подключения к серверу вашему
c
=
Connection
(
s
,
user
=
'cn=admin,dc=k21'
,
password
=
'adminpassword'
)
# собственно, креды админа
if
not
c
.
bind
(
)
:
#print('Do not connect to ldap ADMIN ACCOUNT, incorrect credentials')
adm
=
False
return
adm
else
:
#print('You successful connect to ldap ADMIN ACCOUNT, correct credentials')
adm
=
True
c
.
search
(
search_base
=
'dc=k21'
,
# база в которой искать
search_filter
=
'(cn='
+
nname
+
')'
,
#по какому параметру искать, ищем по cn (обычно логин)
search_scope
=
SUBTREE
,
# искать по всему дереву (дочерные группы и т.д.)
paged_size
=
5
)
for
entry
in
c
.
response
:
mk
=
entry
[
'dn'
]
# получаем dn пользователя
#print(mk)
c
.
unbind
(
)
try
:
c2
=
Connection
(
s
,
user
=
mk
,
password
=
passw
)
if
not
c2
.
bind
(
)
:
#print('Do not connect to ldap, incorrect credentials user')
aut
=
False
else
:
#print('You successful connect to ldap, correct credentials user')
aut
=
True
c2
.
unbind
(
)
except
:
#print('Если логин не совпал')
aut
=
False
return
aut
ans
=
auth_ldap
(
'user'
,
'password'
)
print
(
ans
)
Будут вопросы, пишите в ЛС, на протяжении полугода еще буду с этим всем работать 🙂
|
|
|

10.11.2020, 19:18
|
|
Постоянный
Регистрация: 30.03.2017
Сообщений: 408
С нами:
4800741
Репутация:
98
|
|
Python:
Код:
if
not
c2
.
bind
(
)
:
#print('Do not connect to ldap, incorrect credentials user')
aut
=
False
else
:
#print('You successful connect to ldap, correct credentials user')
aut
=
True
Python:
Код:
auth
=
False
if
not
c2
.
bind
(
)
else
True
|
|
|

11.11.2020, 11:16
|
|
Постоянный
Регистрация: 21.12.2014
Сообщений: 716
С нами:
5996077
Репутация:
108
|
|
Сообщение от winten
Python:
Код:
if
not
c2
.
bind
(
)
:
#print('Do not connect to ldap, incorrect credentials user')
aut
=
False
else
:
#print('You successful connect to ldap, correct credentials user')
aut
=
True
Python:
Код:
auth
=
False
if
not
c2
.
bind
(
)
else
True
Ну с оптимизацией я не дружу, так что это уже дело каждого лично, потом трансформировать его как кому удобно.
А так, спасибо за замечание.
|
|
|

11.11.2020, 20:42
|
|
Постоянный
Регистрация: 10.07.2019
Сообщений: 453
С нами:
3602995
Репутация:
98
|
|
fucking english
|
|
|

12.11.2020, 12:30
|
|
Постоянный
Регистрация: 21.12.2014
Сообщений: 716
С нами:
5996077
Репутация:
108
|
|
Сообщение от Михаил Бластов
fucking english
3-й класс, 2-й семестр где-то.
|
|
|
|
 |
Предыдущая тема
Следующая тема
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|