0

私は LDAP とアクティブ ディレクトリ認証を初めて使用します。LDAP 認証について少し調べて、サンプル アプリケーションを使用しました。

ユーザーがActiveDirectoryに存在するかどうかを確認するだけです

public static bool DoesUserExist()
  {
  using (var domainContext = new PrincipalContext(ContextType.Domain,Environment.UserDomainName))
   {
     using (var foundUser = UserPrincipal.FindByIdentity(domainContext, IdentityType.SamAccountName, Environment.UserName))
                {
                    return foundUser != null;
                }
            }
        }

私たちのローカルシステムでは正常に動作していますが、ActiveDirectory サーバーでホストされていて、サーバーの IP アドレスでこれにアクセスしようとすると、次のような問題に直面しています

ContextType.Domain,Environment.UserDomainName and  Environment.UserName

これらの 3 つの値は、このアプリケーションにアクセスするユーザーではなく、サーバー情報から取得されます。

したがって、ユーザー情報(このアプリケーションにアクセスするユーザー)を取得する方法を教えてください。これらの情報をサーバーに渡し、ユーザーがアクティブディレクトリユーザーであるかどうかを確認する必要があります

4

1 に答える 1

0

Environment.UserDomainNameのドメイン部分Environment.UserName、たとえば「mydomain.com」を返すので、それは必要ありません。

Environment.UserNameそれ自体は、現在「Windows にログイン」しているユーザー、つまりアプリケーション プール ユーザーを返します - MSDNを参照してください。

現在の Web 要求の ID を確認したほうがよいため、MVC コントローラーまたは Web フォーム ページでは、this.User.

または、Windows 認証を使用しているか、フォーム認証を AD にフックしている場合、 currentThread Principalは現在の要求ユーザーである必要があるため、Thread.CurrentPrincipal.Identity.

于 2014-10-01T12:32:59.350 に答える