用户认证演习,连接常见错误代码

ca88会员登录中心

用户输入用户名密码,密码认证三次,都输入不正确锁定

接下来显示的认证错误类似于这样:

#基础需求: 让用户输入用户名密码 认证成功后显示欢迎信息
输错三次后退出程序  升级需求: 可以支持多个用户登录
(提示,通过列表存多个账户信息)
用户3次认证失败后,退出程序,再次#启动程序尝试登录时,还是锁定状态(提示:需把用户锁定的状态存到文件里)

 

“The exception is [ LDAP: error code 49 – 80090308:
LdapErr: DSID-0Cxxxxxx, comment: AcceptSecurityContext error, data xxx,
vece ].”

file = open(‘login.txt’,’r+’)
user = [[‘zhangsan’,’1234′],[‘lisi’,’1234′],[‘alex’,’1234′]]
data = []
for i in file:
  data = (i.strip(‘\n’).split(‘,’))
count = 0
while count < 3:
    username = input(“用户名:”).strip()
    if username in data:
      print(“用户已被锁定!”)
      break
    password = input(“密码:”).strip()
    for k in user:
     if username == k[0] and password == k[1]:
      print(“welcome %s” % (k[0]))
      exit()
    else:
     print(“密码输入错误!\n”)
    count += 1
if count == 3:
   print(“密码输入上限,用户已锁定!”)
   data.append(username)
for k in data:
     file.write(k)
     file.write(“,”)
file.close()

账户密码记录文件 data,

然而存在这多种情况指示LDAP功能存在异常。下面根据Microsoft Activative
Directory给出些一般参考。

hong|123
ding|123

AD指令错误代码是一段在”data”之后并在”vece”或者”v893″这样文字之前的一段字符。实际上这些错误代码伴随着绑定过程而返回。

  

525 用户不存在
52e 密码或凭证无效
530 此时不允许登录
531 在此工作站上不允许登录
532 密码过期
533 账户禁用
701 账户过期
773 用户必须重置密码
775 用户账户锁定

锁定账户密码文件 data1,

      
一般Active Directory LDAP 绑定错误: 

hong

80090308: LdapErr: DSID-0C09030B, comment: AcceptSecurityContext error,
data 525, v893 
十六进制: 0x525 – 用户不存在 
十进制: 1317 – ERROR_NO_SUCH_USER (指定的账户不存在.) 
注释: 当用户名无效时返回

 

80090308: LdapErr: DSID-0C09030B, comment: AcceptSecurityContext error,
data 52e, v893 
十六进制: 0x52e – 无效的凭证
十进制: 1326 – ERROR_LOGON_FAILURE
(登录失败,未知的用户名或者密码错误.) 
注释: 当用户名有效但是密码或者凭证无效的时候返回。

图片 1图片 2

80090308: LdapErr: DSID-0C09030B, comment: AcceptSecurityContext error,
data 530, v893 
十六进制: 0x530 – 此时禁止登录
十进制: 1328 – ERROR_INVALID_LOGON_HOURS (登录失败,登录时间违规.) 
注释:
仅当输入了正确的用户名和密码或凭证时才返回此值。说明用户被禁止登录了

 1 import os,sys,getpass
 2 from pathlib import Path
 3 f = open(Path(__file__).parent / "data","r")    #指定账户文件
 4 d = open(Path(__file__).parent / "data1","r+")    #读取黑名单
 5 
 6 #看是否锁定
 7 name_in = input("Pleae input your name:").strip()
 8 for black in d:
 9     if name_in == black.strip():
10         print("\033[31m Your count has locked \033[0m")
11         sys.exit()
12     #    sys.exit("Your count has locked,Please contect the manager!")
13 #判断是否为有效账户
14 if name_in not in f.read():
15     sys.exit("Please check your name,invalid name")
16 f.close()
17 
18 
19 for i in range(3):    
20     f = open(Path(__file__).parent / "data","r")
21     pass_in = getpass.getpass("Please input your password:")  #用户输入密码
22     ##开始验证用户密码
23     for line in f:    #读取账户
24         f_name = line.split("|")[0]  #获取用户名
25         f_pass = line.split("|")[1].strip()    #获取密码
26         if name_in == f_name and pass_in == f_pass:
27             sys.exit("Wellcome")
28         else:
29             cout_t = 2 - i
30             print("password error,please try again,you have %s times" % cout_t)                
31             break
32     f.close()
33 else:
34     d.write(name_in + "\n") #失败3次加入黑名单
35     sys.exit("your count has locked")
36 d.close()

80090308: LdapErr: DSID-0C09030B, comment: AcceptSecurityContext error,
data 531, v893 
十六进制: 0x531 – 此用户禁止在当前工作站登录 
十进制: 1329 – ERROR_INVALID_WORKSTATION
(登录失败,在此计算机上该用户不允许登录.) 
LDAP[userWorkstations: <multivalued list of workstation
names>] 
注释: 当输入了正确的用户名和密码或凭证时才返回此值。

写法1

80090308: LdapErr: DSID-0C09030B, comment: AcceptSecurityContext error,
data 532, v893 
十六进制: 0x532 – 密码过期
十进制: 1330 – ERROR_PASSWORD_EXPIRED
(登录失败,指定的账户密码过期.) 
LDAP[userAccountControl: <bitmask=0x00800000>] –
PASSWORDEXPIRED 
注释: 当输入了正确的用户名和密码或凭证是猜返回此值。

图片 3

80090308: LdapErr: DSID-0C09030B, comment: AcceptSecurityContext error,
data 533, v893 
十六进制: 0x533 – 账户被禁用
十进制: 1331 – ERROR_ACCOUNT_DISABLED (登录失败,账户当前被禁用了.) 
LDAP[userAccountControl: <bitmask=0x00000002>] –
ACCOUNTDISABLE 
注释: 当输入了正确的用户名和密码或凭证是猜返回此值。

图片 4图片 5

80090308: LdapErr: DSID-0C09030B, comment: AcceptSecurityContext error,
data 701, v893 
十六进制: 0x701 – 账户已过期
十进制: 1793 – ERROR_ACCOUNT_EXPIRED (用户账户已过期.) 
LDAP[accountExpires: <value of -1, 0, or extemely large value
indicates account will not expire>] – ACCOUNTEXPIRED 
注释: 当输入了正确的用户名和密码或凭证是猜返回此值。

 1 import os,sys,getpass    #导入模块
 2 from pathlib import Path
 3 os.system('clear')
 4 #u_f = open(Path(__file__).parent / "data","r")    #打开文件
 5 d_f = open(Path(__file__).parent / "data1","r+")
 6 
 7 for i in range(3):
 8     name_in = input("Please input your name:")    #用户输入用户名
 9     with open(Path(__file__).parent / "data","r") as u_f:    #读取用户名
10         for u_list in u_f:
11             u_name = u_list.split("|")[0].strip()    #获取用户名
12             u_pass = u_list.split("|")[1].strip()    #获取用户密码
13             if name_in == u_name:    #如果有效
14                 for d_u in d_f:        #验证是否在黑名单
15                     if name_in == d_u.strip():
16                         print("\33[31m Your count has been locked! \33[0m")
17                         sys.exit()
18                 else:
19                     for j in range(3):
20                         pass_in = getpass.getpass("Please input your password:")    #输入用户名
21                         if pass_in == u_pass:
22                             print("\33[32m Wellcome to system ! \33[0m")
23                             sys.exit()
24                         else:
25                             cout_t = 2 - j
26                             print("password error,please try again,you have %s times" % cout_t)
27                             continue
28                     else:
29                         d_f.write(name_in + "\n") #失败3次加入黑名单
30                         sys.exit("your count has locked")
31                         d_f.close()
32         else:
33             print("Please input valid acount!")    #无效用户名重试
34             pass
35 else:
36     sys.exit("Sorry, the name is invalid")    #无效用户名,退出

80090308: LdapErr: DSID-0C09030B, comment: AcceptSecurityContext error,
data 773, v893 
十六进制: 0x773 – 账户密码必须被重置
十进制: 1907 – ERROR_PASSWORD_MUST_CHANGE
(用户密码在第一次登录之前必须修改.) 
LDAP[pwdLastSet: <value of 0 indicates admin-required password
change>] – MUST_CHANGE_PASSWD 
注释: 当输入了正确的用户名和密码或凭证是猜返回此值。

写法二

80090308: LdapErr: DSID-0C09030B, comment: AcceptSecurityContext error,
data 775, v893 
十六进制: 0x775 – 账户被锁定
十进制: 1909 – ERROR_ACCOUNT_LOCKED_OUT
(账户当前已被锁定,不允许登录The referenced account is currently locked
out and may not be logged on to.) 
LDAP[userAccountControl: <bitmask=0x00000010>] – LOCKOUT 
注释: 即便是输入了错误的密码也可能返回此值

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图