我需要使用Windows凭据来允许我的用户登录Intranet应用程序。我打算创建一个包含用户名和角色的表,并将Environment.UserName
的用户名与我的表进行比较。如何安全地继续这个?有没有更好的方法来完成这项任务?
提前谢谢。
答案 0 :(得分:0)
您可以使用Active Directory身份验证执行此操作:
Bellow是您可以在应用程序中尝试的示例代码。
string domainUser = System.Security.Principal.WindowsIdentity.GetCurrent().Name;
string[] paramsLogin = domainUser.Split('\\');
string domain = paramsLogin[0].ToString();
string LdapPath = "";
string strDomainPath = DomainPath();
LdapPath = string.Format("LDAP://{0}/{1}", DomainName, strDomainPath);
string username = LoginUser.UserName;
string password = LoginUser.Password;
string domainAndUsername = domain + @"\" + username;
DirectoryEntry entry = new DirectoryEntry(LdapPath, domainAndUsername, password);
try
{
// Bind to the native AdsObject to force authentication.
Object obj = entry.NativeObject;
DirectorySearcher search = new DirectorySearcher(entry);
search.Filter = "(SAMAccountName=" + username + ")";
search.PropertiesToLoad.Add("cn");
SearchResult result = search.FindOne();
if (result != null)
{
IsLoginSucess = true;
//Do your stuff here
}
// Update the new path to the user in the directory
LdapPath = result.Path;
string _filterAttribute = (String)result.Properties["cn"][0];
}
catch (Exception ex)
{
IsLoginSucess = false;
}
答案 1 :(得分:0)
如果您正在使用Windows应用程序进行开发,请查看以下内容:
Authenticate user in WinForms (Nothing to do with ASP.Net)
System.Security.Principal.WindowsIdentity.GetCurrent()
将为您提供当前的Windows用户
如果您正在开发Web应用程序,内置支持,则需要在web.config文件中包含相关条目
Using windows authentication in asp.net with c#
HttpContext.Current.User.Identity
会为您提供用户身份