直接修改密码报错,扫码重置密码正常。
xwuchen opened this issue · 8 comments
在页面直接输入原密码,新密码修改,确认后报用户名或原密码错误(确定原密码正确),扫码重置密码能正常修改,不知道大神还有没有空看看什么原因?谢谢。
在页面直接输入原密码,新密码修改,确认后报用户名或原密码错误(确定原密码正确),扫码重置密码能正常修改,不知道大神还有没有空看看什么原因?谢谢。
你看下local_settings.py 配置中的
AD域控的DOMAIN名,例如:abc
AD_DOMAIN = r'修改成自己的'
这里的名称,是不是带了.com .net
这里的定义有点特殊,这是会给到AD登录认证用到。
比如我的域名是abc.com ,AD域应该是abc 那用户登录时应该是abc\zhangsan
多谢您的提醒,我确实加了.COM,删除后就正常,感谢感谢!
还有一个小问题想请教,在用企业微信扫码确认后,浏览器在后台加载open.work.weixin.qq.com时,响应非常慢,大概需要10秒钟左右才能打开重置密码页面,不知道会是什么原因?
还有一个小问题想请教,在用企业微信扫码确认后,浏览器在后台加载open.work.weixin.qq.com时,响应非常慢,大概需要10秒钟左右才能打开重置密码页面,不知道会是什么原因?
这个期间应该是在请求open.work.weixin.qq.com的接口,如果这个反应慢的话,看看是否网络问题。
扫码修改密码正常,首页直接修改密码报错。看了一下配置也没错。
`
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/share/python-3.8.9/lib/python3.8/site-packages/django/core/handlers/exception.py", line 47, in inner
response = get_response(request)
File "/usr/share/python-3.8.9/lib/python3.8/site-packages/django/core/handlers/base.py", line 181, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "./resetpwd/views.py", line 100, in index
auth_status, auth_result = AdOps().ad_auth_user(username=username, password=old_password)
File "./utils/ad_ops.py", line 94, in ad_auth_user
self.conn.search(search_base=BASE_DN, search_filter='(sAMAccountName={}))'.format(username), attributes=['pwdLastSet'])
File "/usr/share/python-3.8.9/lib/python3.8/site-packages/ldap3/core/connection.py", line 838, in search
request = search_operation(search_base,
File "/usr/share/python-3.8.9/lib/python3.8/site-packages/ldap3/operation/search.py", line 371, in search_operation
request['filter'] = compile_filter(parse_filter(search_filter, schema, auto_escape, auto_encode, validator, check_names).elements[0]) # parse the searchFilter string and compile it starting from the root node
File "/usr/share/python-3.8.9/lib/python3.8/site-packages/ldap3/operation/search.py", line 219, in parse_filter
raise LDAPInvalidFilterError('invalid filter')
ldap3.core.exceptions.LDAPInvalidFilterError: invalid filter
2021-11-12 10:28:55,725 ERROR ./resetpwd/views.py views.index 68: [异常] 请求方法:POST,请求路径/
2021-11-12 10:28:55,875 ERROR /usr/share/python-3.8.9/lib/python3.8/site-packages/django/utils/log.py log.log_response 224: Internal Server Error: /
Traceback (most recent call last):
File "./utils/ad_ops.py", line 74, in ad_auth_user
c_auth = Connection(server=server, user=r'{}{}'.format(self.domain, username), password=password, auto_bind=True, raise_exceptions=True)
File "/usr/share/python-3.8.9/lib/python3.8/site-packages/ldap3/core/connection.py", line 363, in init
self._do_auto_bind()
File "/usr/share/python-3.8.9/lib/python3.8/site-packages/ldap3/core/connection.py", line 389, in _do_auto_bind
self.bind(read_server_info=True)
File "/usr/share/python-3.8.9/lib/python3.8/site-packages/ldap3/core/connection.py", line 607, in bind
response = self.post_send_single_response(self.send('bindRequest', request, controls))
File "/usr/share/python-3.8.9/lib/python3.8/site-packages/ldap3/strategy/sync.py", line 160, in post_send_single_response
responses, result = self.get_response(message_id)
File "/usr/share/python-3.8.9/lib/python3.8/site-packages/ldap3/strategy/base.py", line 403, in get_response
raise LDAPOperationResult(result=result['result'], description=result['description'], dn=result['dn'], message=result['message'], response_type=result['type'])
ldap3.core.exceptions.LDAPInvalidCredentialsResult: LDAPInvalidCredentialsResult - 49 - invalidCredentials - None - 80090308: LdapErr: DSID-0C09041C, comment: AcceptSecurityContext error, data 773, v4563 - bindResponse - None
`
方便截图或贴下配置吗?可以把敏感信息用***注释掉部分。
配置文件如下,ldap用户已经加入域管理员组权限
`
字符串前面的格式编码不要去掉了,主要是为了解决特殊字符被转义的问题。
########## AD配置,修改为自己的
AD主机,可以是IP或主机域名,例如可以是: abc.com或172.16.122.1
AD_HOST = r'192.168.1.2'
AD域控的DOMAIN名,例如:abc
AD_DOMAIN = r'abcd'
用于登录AD做用户信息处理的账号,需要有修改用户账号密码或信息的权限。
AD账号,例如:pwdadmin
AD_LOGIN_USER = r'ldap'
密码
AD_LOGIN_USER_PWD = r'password'
BASE DN,账号的查找DN路径,例如:'DC=abc,DC=com',可以指定到OU之下,例如:'OU=RD,DC=abc,DC=com'。
BASE_DN = r'OU=rd,DC=abcd,DC=com'
是否启用SSL
AD_USE_SSL = True
连接的端口,如果启用SSL默认是636,否则就是389
AD_CONN_PORT = 636
扫码验证的类型
钉钉 / 企业微信,自行修改
值是:DING / WEWORK
SCAN_CODE_TYPE = 'WEWORK'
########## 钉钉 《如果不使用钉钉扫码,可不用配置》##########
钉钉接口主地址,不可修改
DING_URL = r'https://oapi.dingtalk.com'
钉钉企业ID ,修改为自己的
DING_CORP_ID = '修改为自己的'
钉钉企业内部开发,内部H5微应用或小程序,用于读取企业内部用户信息
DING_AGENT_ID = r'修改为自己的'
DING_APP_KEY = r'修改为自己的'
DING_APP_SECRET = r'修改为自己的'
移动应用接入 主要为了实现通过扫码拿到用户的unionid
DING_MO_APP_ID = r'修改为自己的'
DING_MO_APP_SECRET = r'修改为自己的'
####### 企业微信《如果不使用企业微信扫码,可不用配置》
企业微信的企业ID
WEWORK_CORP_ID = r'AAAAAAA'
应用的AgentId
WEWORK_AGENT_ID = r'100000'
应用的Secret
WEWORK_AGNET_SECRET = r'AAAAAAAAA'
Redis配置
redis的连接地址,redis://<Ip/Host>:/<数据库>
REDIS_LOCATION = r'redis://127.0.0.1:6379/1'
REDIS_PASSWORD = r''
COOKIE超时时间,单位是秒,可不用修改
TMPID_COOKIE_AGE = 300
主页域名,钉钉跳转等需要指定域名,格式:pwd.abc.com。
如果是自定义安装,请修改成自己的域名
HOME_URL = '10.10.10.10'
`
raise LDAPInvalidFilterError('invalid filter')
ldap3.core.exceptions.LDAPInvalidFilterError: invalid filter
ldap filter error:
我现在怀疑是BASE_DN的配置问题,你改成BASE_DN = r'DC=abcd,DC=com'试下。
如果是通过首页修改密码,是需要验证当前用户的旧密码可以登录ladp,如果用户的的属性在过滤属性之后就无法查找到了吧。