sandbox/ldap_test/adsearch.py
2024-11-02 14:14:15 +03:00

112 lines
3.1 KiB
Python

""""
import ldap
from ldap.controls import SimplePagedResultsControl
ldap.set_option(ldap.OPT_REFERRALS, 0)
ldap.set_option(ldap.OPT_PROTOCOL_VERSION, 3)
connection = ldap.initialize(f"ldap://10.10.14.103")
# connection.simple_bind_s("admin", "password")
base = "dc=EPP,dc=RU"
scope = ldap.SCOPE_SUBTREE
filter = "(&(objectClass=person)(description=vasya@EPP.RU))"
attrs = ['*']
req_ctrl = SimplePagedResultsControl(criticality=True, size=1000, cookie='')
pagination_settings = SimplePagedResultsControl(criticality=True, size=1000, cookie='')
ldap_search_query = connection.search_ext(
base, ldap.SCOPE_SUBTREE, filter, attrlist=attrs, serverctrls=[pagination_settings]
)
known_ldap_resp_ctrls = {
SimplePagedResultsControl.controlType: SimplePagedResultsControl,
}
total_results = []
pages = 0
while True:
pages += 1
rtype, rdata, rmsgid, serverctrls = connection.result3(ldap_search_query,
resp_ctrl_classes=known_ldap_resp_ctrls)
print(rdata)
page_controls = [
c
for c in serverctrls
if c.controlType == SimplePagedResultsControl.controlType
]
if page_controls:
if page_controls[0].cookie:
# Copy cookie from response control to request control
pagination_settings.cookie = page_controls[0].cookie
ldap_search_query = connection.search_ext(
base,
ldap.SCOPE_SUBTREE,
filter,
attrlist=attrs,
serverctrls=[pagination_settings]
)
else:
break
else:
print("Warning: Server ignores RFC 2696 control.")
break
"""
"""
import ldap
import gssapi
user = "vasya"
password = "1234qwertY*"
mech = gssapi.Mechanism.from_name('krb5')
name = gssapi.Name(user, gssapi.NameType.user_principal_name)
creds = mech.acquire_cred_with_password(name, password)
target = "ldap/astra.epp.ru@EPP.RU"
ctx = gssapi.SecurityContext(creds, mech)
ctx_flags = gssapi.RequirementFlag.mutual_authentication | gssapi.RequirementFlag.confidentiality
ctx.initiate_security_context(target_name=target, flags=ctx_flags)
query = "(uid=user1)"
ldap_connection = ldap.initialize(f"ldap://epp.ru")
result = ctx.init_sec_context(lambda data: ldap_connection.sasl_interactive_bind_s("", gssapi.raw(data)), query)
krb = gssapi.Name('kerberos', gssapi.NameType.krb5_nt_principal_name)
"""
"""
import ldap, ldap.sasl, urllib
ldap_conn = ldap.initialize("ldap://epp.ru")
auth = ldap.sasl.gssapi()
# Bind to the LDAP server using GSSAPI authentication
ldap_conn.sasl_gssapi_bind_s('', auth)
# Check if the bind was successful
print(ldap_conn.whoami_s())
"""
"""
import logging
from abc import ABC, abstractmethod
from typing import Any, Optional, Tuple, Type
from gssapi import Name, NameType
from gssapi.exceptions import GSSError
from gssapi.raw import acquire_cred_with_password
_log = logging.getLogger(__name__)
"""
import ldap, ldap.sasl
l = ldap.initialize("ldap://epp.ru")
auth = ldap.sasl.gssapi("")
l.sasl_bind_s("", auth, cred="")
res = l.search_s("dc=nil,dc=b17",ldap.SCOPE_BASE,"(objectClass=*)")
print(res)
l.unbind()