我所拥有的功能是允许域用户对其LDAP凭证进行身份验证。然而,当我将一个已知的密码硬编码为一个原始字符串时,它的工作很长......当然,这是一个不行的密码。我希望传入从我设置的TextBox
收到的字符串值。下面是函数:将字符串变量传入用于口令争用的Nework证书构造函数
public static bool fnValLDAPCreds()
{
bool validation;
try
{
LdapConnection ADConn = new LdapConnection(new LdapDirectoryIdentifier((string)null, false, false));
NetworkCredential NetCred = new NetworkCredential(Environment.UserName, "Password123", Environment.UserDomainName);
ADConn.Credential = NetCred;
ADConn.AuthType = AuthType.Negotiate;
// the user's authenticated here; creds used to login on the domain controller.
ADConn.Bind(NetCred);
validation = true;
MessageBox.Show("You were successfully authenticated against AD using LDAP!");
}
catch (LdapException)
{
validation = false;
MessageBox.Show("Your login was unsuccesful. Try a different set of credentials.");
}
return validation;
}
什么我试图从我TextBox
做一个值是替补,但由于它位于static bool
我都没有成功作出任何外部引用的一个控制当前上下文。我在按钮处理函数中调用这个函数来关闭它。我怎样才能换一个string DomPassWord
变量,从我设置的文本框中获取它的值来获取它?
NetworkCredential NetCred = new NetworkCredential(Environment.UserName, DomPassWord, Environment.UserDomainName);
是我努力的工作,因为我可以使用类似DomPassWord = txtUserPW.Text
的东西在域中安全地匹配密码而无需硬编码。尝试了SecureString
路线,但在这方面也没有成功。有任何想法吗?
为什么不给fnValLDAPCreds方法添加一个'string password'参数,用''password'替换''Password123'',并将其称为'fnValLDAPCreds(myTextBox.Text)'?或者你的问题不是很清楚 –
我很难看到更大的图片。你是否这样做,以确保登录为'bob'的用户实际上是bob,通过让他重新输入他的密码?或者你是否在其他地方用它作为证据来完成证书? – Kevin