目前我们(我和我的公司)有一个asp.net mvc4页面。我们希望利用通过AD进行身份验证的登录页面。一个要求是尝试失败,我们会向用户提供一些信息。
我们希望获得的信息如下:
这是一个陌生的领域,所以我不确定哪些.NET库可用。到目前为止,我只遇到System.DirectoryServices,但似乎我不会得到超出布尔的结果。
这可能吗?任何参考,建议或示例将不胜感激!
答案 0 :(得分:4)
您可以先使用PrincipalContext.ValidateCredentials验证您的凭据。如果返回false
,请使用静态UserPrincipal.FindByIdentity查找您的用户,如果找到,则查看该帐户是否已使用IsAccountLockedOut()锁定。
您可能需要自己扩展UserPrincipal以查看密码是否已过期,我没有看到直接的属性/方法。您可以对其进行扩展以直接访问userAccountControl
属性,并检查是否设置了位0x800000
,即PasswordExpired。这是more information on the userAccountControl values。
答案 1 :(得分:0)
假设你有这样的代码
try
{
SearchResult result = searcher.FindOne();
}
catch(Exception e)
{
// now what?
}
现在在Exception中你可以处理LDAP异常类型,这是所有LDAP错误的列表。
http://msdn.microsoft.com/en-us/library/aa746530(v=vs.85).aspx
您可以根据 ADSI错误值确定您遇到的错误类型。
但据我所知,您应该为用户提供一个常见错误,例如无效凭据,因为LDAP错误很难处理。
干杯!!