Detect user logged on a computer using ASP.NET app

牧云@^-^@ 提交于 2019-11-30 16:08:58

In IIS, turn on Integrated Windows Authentication, and in code, if you use:

Request.ServerVariables["LOGON_USER"]

it will return the windows username of the logged in user, i.e. MYDOMAIN\MYUSERNAME

For ASP.net, you can probably use

HttpContext.Current.User.Identity

If IIS is configured correctly (no anonymous logons, at least)

Here is C# code I use to authenticate against the Active Directory

using System;
using System.DirectoryServices;

namespace XYZcompany.Enterprise
{
  public class AuthenicationMgr
  {
    private static readonly int AD_ERR_LOGON_FAIL = -2147023570;
    private static readonly string _path = "LDAP://xxx.yyy.ggg";
    private static readonly string _domain = "xxx.yyy.ggg";

    public static bool IsAuthenticated(string username, string pwd)
    {
      bool authenticatedFlag = true;
      string domainAndUsername = _domain + "\\" + username;
      DirectoryEntry entry = new DirectoryEntry(_path, domainAndUsername, pwd);
      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)
        {
          authenticatedFlag = false;
        }
        else
        {
          authenticatedFlag = true;
        }
      }
      catch (System.Runtime.InteropServices.COMException ex)
      {
        if (ex.ErrorCode == AD_ERR_LOGON_FAIL)
        {
          authenticatedFlag = false;
        }
        else
        {
          throw new ApplicationException("Unable to authenticate user due to system error.", ex);
        }
      }
      return authenticatedFlag;
    }
  }
}

You should look into the active directory membership provider. It's built into ASP.NET.

System.Security.Principal.WindowsIdentity.GetCurrent().User.ToString
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!