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

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

我想validation然后在Active Directory中设置他们的密码(目前使用SetPassword调用方法 )。

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

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

我已经在使用带有两个文本框的CompareValidator ,所以我在考虑添加一个RegularExpressionValidator ( 源1 , 源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,})(?=.*[az])(?=.*[0-9])(?=.*[AZ])(?!.*s).*$"; 

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

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

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

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

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

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

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

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

0x800708c5 0x8007202f 0x8007052d 0x8007052f