3

ウィンドウ ドメインにログオンしているユーザーを検出できる ASP.NET アプリケーションを開発したいと考えています。これらの資格情報は、ASP.NET アプリケーションへのログオンに使用されます。

これどうやってするの?

ありがとう!

4

5 に答える 5

8

IIS で統合 Windows 認証をオンにし、コードで次を使用する場合:

Request.ServerVariables["LOGON_USER"]

ログインしたユーザーの Windows ユーザー名、つまり MYDOMAIN\MYUSERNAME を返します。

于 2009-03-27T10:14:49.333 に答える
1

Active Directory に対して認証するために使用する C# コードを次に示します。

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;
    }
  }
}
于 2009-03-27T08:52:17.770 に答える
1

ASP.netの場合、おそらく使用できます

HttpContext.Current.User.Identity

IIS が正しく構成されている場合 (少なくとも匿名ログオンはありません)

于 2009-03-27T08:55:33.283 に答える
0

Active Directory メンバーシップ プロバイダーを調べる必要があります。ASP.NET に組み込まれています。

于 2009-03-27T08:36:45.437 に答える
-1
System.Security.Principal.WindowsIdentity.GetCurrent().User.ToString
于 2009-03-27T08:36:30.273 に答える