根据本地安全策略验证新的AD密码?

时间:2011-02-20 21:40:47

标签: c# regex security sharepoint active-directory

我想允许当前用户更改其密码(通过活动目录管理)。

我想验证然后在Active Directory中设置密码(目前使用SetPassword invoke method)。

我的问题是验证密码以满足复杂性要求:

  

不包含用户的帐户名称或   用户的全名部分   超过两个连续的字符Be   至少六个字符的长度   包含三个中的字符   以下四类:英语   大写字符(A到Z)   英文小写字母(a   通过z)基数10位数(0到   9)非字母字符(for   例如,!,$,#,%)复杂性   要求在执行时强制执行   密码被更改或创建。

我已经在使用带有两个文本框的CompareValidator,所以我在考虑添加RegularExpressionValidatorsource 1source 2),但我不知道如何让它与整个“四类中的三个”事物一起工作:

RegularExpressionValidator revComplex = new RegularExpressionValidator();
revComplex.ControlToValidate = _txtPassword1.ID;
revComplex.ErrorMessage = "Password must have at least 7 characters. Characters should be from at least three of the following four groups: uppercase letter, lowercase letter, digit, or special characters  (for example, !, $, #, %).";
revComplex.ValidationExpression = @"^(?=.{7,})(?=.*[a-z])(?=.*[0-9])(?=.*[A-Z])(?!.*s).*$";

当然有人试图这样做过吗?在根据本地安全策略将用户密码发送到Active Directory之前,如何验证用户的密码?

2 个答案:

答案 0 :(得分:2)

Imho,你可以比SetPassword更好地使用ChangePassword。这样,您需要用户指定其当前(旧)密码。这可能很有趣,因为您永远无法100%确定浏览您网站的用户实际上是登录的用户。

这是一个包含更多信息的链接: http://www.primaryobjects.com/CMS/Article66.aspx

您无需提前验证密码。只需在try-catch中将其发送到AD,如果未经验证,则原因将在异常消息中。

答案 1 :(得分:1)

我找到了一种更详细地诊断错误的方法。它没有提供来自AD的任何反馈,但我们可以创建COM错误到用户友好消息的映射。

本文提供了有关处理可能的COM错误的更多信息:

http://www.ozkary.com/2015/03/active-directory-setpassword-or.html

我认为可以为这些COM错误添加更多细节:

0x800708c5 0x8007202f 0x8007052d 0x8007052f