在Intranet应用程序

时间:2017-07-01 12:01:13

标签: c#

我需要使用Windows凭据来允许我的用户登录Intranet应用程序。我打算创建一个包含用户名和角色的表,并将Environment.UserName的用户名与我的表进行比较。如何安全地继续这个?有没有更好的方法来完成这项任务?

提前谢谢。

2 个答案:

答案 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会为您提供用户身份