Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/284.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# C,针对active directory的身份验证_C#_Active Directory_Ldap_Ldapconnection_Principalcontext - Fatal编程技术网

C# C,针对active directory的身份验证

C# C,针对active directory的身份验证,c#,active-directory,ldap,ldapconnection,principalcontext,C#,Active Directory,Ldap,Ldapconnection,Principalcontext,我使用System.DirectoryServices.AccountManagement命名空间中的PrincipalContext在应用程序中对Active Directory进行身份验证。我使用ValidateCredentials函数 身份验证工作正常,当我在Active Directory中重置用户密码并强制他在下次登录时更改密码时,我无法对用户进行身份验证 我试图更改身份验证的方式,我使用了LdapConnection namespace System.DirectoryServic

我使用System.DirectoryServices.AccountManagement命名空间中的PrincipalContext在应用程序中对Active Directory进行身份验证。我使用ValidateCredentials函数

身份验证工作正常,当我在Active Directory中重置用户密码并强制他在下次登录时更改密码时,我无法对用户进行身份验证

我试图更改身份验证的方式,我使用了LdapConnection namespace System.DirectoryServices.Protocols,身份验证工作正常,当我重置用户密码并强制用户在下次登录时更改密码时,我无法验证此用户,如果我只是重置密码,而不是强迫用户在下次登录时更改密码,我可以对用户进行身份验证

我用不同的active directory测试了相同的场景,它在所有场景中都有效


当用户必须在下一个登录标志中更改密码为true时,Active Directory是否可能阻止我通过代码进行身份验证

您确实回答了自己的问题,如果在active directory中设置了“下次登录时用户必须更改密码”,则用户只能从Windows UI以交互方式进行身份验证以设置新密码,而不能按照您要求的方式对其进行身份验证


如果您想让它工作,您需要在应用程序中添加功能,以便在用户大量更改其密码时进行检测,并在身份验证之前提供这样做的方法。这将需要处理过期密码以及按照您描述的方式强制更改密码的情况。

谢谢您的回答,所以我的问题是,为什么它在一个active directory ant中工作不在另一个中工作,我需要在我的AD中配置什么,所以,当用户下次登录时必须更改密码设置为true时,我将能够通过代码对用户进行身份验证?