0

私はここで初めてなので、私の説明で我慢してください。私は現在、ユーザーがユーザー ID とパスワードを入力する必要があるこの AD ポータル ログイン ページを作成する任務を負っています。

しかし、オンラインで多くの検索を行った結果、SAMAccountName には UserID のみが必要なため、UserID とパスワードの両方でユーザーを認証する方法がないことがわかりました。

ここで重要なのは、認証する必要があるユーザーが、LDAP 接続のログインに使用するユーザーではないということです。LDAP 接続は常に同じ管理者 ID とパスワードになりますが、認証する必要があるユーザーは異なるユーザーです。

Web 上に示されているほとんどの例は、LDAP UserID と SAMAccountName が同じユーザー ID を使用していることを説明しています。しかし、それは私の状況には当てはまりません。

したがって、私は尋ねたいです。SAMAccountName を使用してユーザーのユーザー ID とパスワードを認証することはできますか? ここにいるほとんどの人に比べて私は経験豊富なプログラマーではないので、コード例を提供できることを願っています。ありがとう。

    public SearchResult GetADUser(string UserID, string Password)
    {
         SearchResult results;

         try
         {
               DirectoryEntry de = GetDirectoryObject(CommonConstant.LDAP_CONNECTION_STRING);
               de.Username = CommonConstant.AD_ADMIN_ID;
               de.Password = CommonConstant.AD_ADMIN_Password;

               DirectorySearcher deSearch = new DirectorySearcher();
               deSearch.SearchRoot = de;

               deSearch.Filter = "(&(objectClass=user)(objectCategory=person)(samaccountname=" + UserID + "))";
               deSearch.SearchScope = SearchScope.Subtree;
               results = deSearch.FindOne();
          }
          catch (Exception ex)
          {
               throw new Exception(String.Format("GetADUser() returned {0}, \"{1}\"", ex.StackTrace, ex.Message));
          }

          return results;
    }
4

1 に答える 1

2

あなたはたくさんの仮定をしている、そしてそれらの仮定のいくつかは単に正しくない。

はい、LDAPにアクセスするには、ユーザー名とパスワードが必要です。そして、多くのサンプルがLDAPに対して認証するために、提供された資格情報を使用してLDAPに対して認証することは事実です。

問題は、これを行う必要がないことです。あなたはそれが「ADポータル」だと言います、それはそれがウェブアプリケーションであることを意味すると私は思います。また、C#を使用しているため、asp.netを使用していると思います。asp.netを使用している場合は、ASP.NETメンバーシップシステムを使用して、ADに対するWindows認証を使用して認証することができます。それは多かれ少なかれ「ビルトイン」です。

LDAPクエリを実行する必要はありません。あなたは問題を非常に複雑にしている。とても簡単です。

あなたがやろうとしている非常に具体的なことがない限り、あなたは本当に単純なADログインページのために間違った道を進んでいます。

于 2012-04-23T04:21:57.153 に答える