Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 是否根据本地安全策略验证新AD密码?_C#_Regex_Security_Sharepoint_Active Directory - Fatal编程技术网

C# 是否根据本地安全策略验证新AD密码?

C# 是否根据本地安全策略验证新AD密码?,c#,regex,security,sharepoint,active-directory,C#,Regex,Security,Sharepoint,Active Directory,我希望允许当前用户更改其密码(通过active directory管理) 我想在Active Directory中验证并设置他们的密码(当前使用) 我的问题是验证密码以使其满足复杂性要求: 不包含用户的帐户名或 用户全名中 应超过两个连续字符 长度至少为六个字符 包含来自以下三个字段的字符: 以下四类:英语 大写字符(A到Z) 英文小写字符(a) 至z)以10位为基数(0至 9) 非字母字符(用于 例如,!,$,#,%)复杂性 要求在以下情况下强制执行: 更改或创建密码 我已经在使用一个带有两个

我希望允许当前用户更改其密码(通过active directory管理)

我想在Active Directory中验证并设置他们的密码(当前使用)

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

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

我已经在使用一个带有两个文本框的
CompareValidator
,所以我想添加一个
RegularExpressionValidator
(,),但我不确定如何让它处理整个“四类三合一”的事情:


肯定有人曾经尝试过这样做?根据本地安全策略,在将用户密码发送到Active Directory之前,我应该如何验证用户密码?

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

以下链接提供了更多信息:


您不必事先验证密码。只需将其发送到try catch中的AD,如果未验证,其原因将出现在异常消息中。

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

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

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

0x800708c5 0x8007202f 0x8007052d
0x8007052f

这是一个不适合正则表达式的候选者。发现有人试图做类似的事情:@John:同意,这就是为什么我认为我应该问这个问题。也许是定制验证器?是的,定制验证器几乎肯定是你最好的选择。不过,我同意Tom下面的回答,因为它更能适应不断变化的政策。我在这里是+1,尽管这有点不确定。是的,我想我可能会改用ChangePassword。至于只是捕捉异常。。。我仍在测试(试图克服一个奇怪的拒绝访问问题),但我不确定异常的详细程度。我更愿意向用户提供更具体的反馈,说明他们的新密码不好的原因。经过更多的研究,如果不发送给AD,似乎不可能执行可靠的检查。这个问题还有一些有用的链接:
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).*$";