日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

用户姓名保护python_Python操作LDAP,对用户进行认证(验证用户名以及密码)

發布時間:2025/3/21 python 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 用户姓名保护python_Python操作LDAP,对用户进行认证(验证用户名以及密码) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Python操作LDAP,對用戶進行認證

1、環境

Python版本: 3.7.1

操作系統:windows 7 x64

第三方包:python-ldap

2、LDAP

LDAP,它是基于X.500標準的輕量級目錄訪問協議,支持TCP/IP

目錄是一個為查詢,瀏覽和搜索而優化的數據庫,它成樹狀結構組織數據,類似文件目錄。

目錄數據庫和關系數據庫不用,它有優異的讀性能,但寫性能差,并沒有事務處理,回滾等復雜功能,不適于存儲修改頻繁的數據,所以目錄天生是用來查詢。

3、基本模型

(1)目錄樹概念

目錄樹:在一個目錄服務系統中,整個目錄信息集都可以表示一個目錄信息樹,樹中的每個節點是一個條目。

條目:每個條目就是一條記錄,每個條目有自己的唯一可區別的名稱(DN)

對象類:與某個實體類型對應的以中速屬性,對象類是可以繼承的,這樣父類的必須屬性也會被繼承下來。

屬性:描述條目的某個方面信息,一個屬性有一個屬性類型和一個或多個屬性值組成,屬性有必須屬性和非必須屬性。

(2)DC、UID、CN、SN、DN、RDN

dc:域名的部分,其格式是將完整的域名分成幾部分,如域名為example.com變成dc=example,dc=com(一條記錄的所屬位置)

uid: 用戶id

ou:組織單位,組織單位可以包含其他各種對象(包括其他組織單元)

cn: 公共名稱

sn: 姓

dn:一條記錄的位置,唯一

rdn: 相對辨別名,類似于文件系統中的相對路徑,它是與目錄樹結構無關的部分

4、代碼實現

# 驗證用戶名以及密碼是否正確(單點登錄)

import ldap

AUTH_LDAP_SERVER_URI = "ldap://0.0.0.0:389" # ldap主機

AUTH_LDAP_BIND_DN = "cn=,ou=,dc=,dc=" # 根據自己實際需求填寫

AUTH_LDAP_BIND_PASSWORD = "" # 管理賬戶密碼

SEARCH_BASE = "OU=,DC=,DC="

def ldapAuth(username, password):

try:

# 建立連接

ldapconn = ldap.initialize(AUTH_LDAP_SERVER_URI)

# 綁定管理賬戶,用于用戶的認證

ldapconn.simple_bind_s(AUTH_LDAP_BIND_DN, AUTH_LDAP_BIND_PASSWORD)

searchScope = ldap.SCOPE_SUBTREE # 指定搜索范圍

searchFilter = "(sAMAccountName=%s)" % username # 指定搜索字段

ldap_result = ldapconn.search_s(SEARCH_BASE, searchScope, searchFilter, None) # 返回該用戶的所有信息,類型列表

if ldap_result:

user_dn = ldap_result[0][0] # 獲取用戶的cn,ou,dc

try:

ldapconn.simple_bind_s(user_dn, password) # 對用戶的密碼進行驗證

print("驗證成功")

return True

except ldap.LDAPError as e:

print(e)

return False

else:

return False

except ldap.LDAPError as e:

print(e)

return False

# r = ldapconn.simple_bind_s(ldap_result[0]["distinguishedName"][0].decode("utf-8"), password) # 驗證用戶的賬號和密碼

# print(r)

# if ldap_result:

# print(ldap_result)

# result_data = ldapconn.result(ldap_result, 1) # 獲取需要認證用戶的dn

# print(result_data)

# if len(result_data):

# _, r_b = result_data[0]

# r = ldapconn.simple_bind_s(r_b["distinguishedName"][0].decode("utf-8"), password) # 驗證用戶的賬號和密碼

# print(r)

# else:

# return False

if __name__ == '__main__':

print(ldapAuth(用戶名,密碼))

總結

以上是生活随笔為你收集整理的用户姓名保护python_Python操作LDAP,对用户进行认证(验证用户名以及密码)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。