1

ドメイン名を「demo」に置き換えました...下の画像のカンマの欠落などは無視してください。

私の質問は次のとおりです。

ASP.NET Web アプリケーションで SBSUsers を認証したいと考えています。Active Directory パスを機能させるために必要なパスがわかりません...

次のように設定すると、認証に失敗します(ユーザーがそのパスの下にないためだと思います)...しかし、エラーは発生しません:

string adPath = "LDAP://ac-dc01.demo.local:389/CN=Configuration,DC=demo,DC=local";
string domainAndUsername = domain + @"\" + username;
DirectoryEntry entry = new DirectoryEntry(adPath, domainAndUsername, pwd);
// 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 (null == result)
{
    return false;
}
// Update the new path to the user in the directory
adPath = result.Path;
_filterAttribute = (String)result.Properties["cn"][0];

あるべきだと思うものに設定すると、entry.NativeObject行でエラーになります。

string adPath = "ldap://ac-dc01.demo.local:389/OU=SBSUsers,OU=Users,OU=MyBusiness,DC=demo,DC=local";

何か案は?どういうわけか「グローバル」アクセス用に開く必要がありますか? もしそうなら、どうすればそれを行うことができますか?

LDAP

別のソフトウェアを使用して正常に接続できました...

LDAP

4

2 に答える 2

1

これはあなたが試すことができるものです..また、DC = DemoとDC = LocalがOUのように見えることを確信していますか

const string Domain = "ServerAddress:389";
const string constrParts = @"OU=Users,DC=domain,DC=com";
const string Username = @"someusername";
PrincipalContext principalContext = new PrincipalContext(ContextType.Domain, Domain, constrParts);
UserPrincipal userPrincipal = UserPrincipal.FindByIdentity(principalContext,  username);
于 2013-03-15T19:12:51.233 に答える
1

これは、AD に接続する方法であり、うまく機能します。

<yourConfig>LDAP://ADServerName/OU=GROUPNAME,DC=domainName,DC=com</YourConfig>

ユーザーを検証する方法のサンプル コードを次に示します。

using (PrincipalContext oPrincipalContext = new PrincipalContext(ContextType.Domain,
                                                            ENTER YOUR DOMAIN NAME,
                                                            This is where the config that I mentioned above comes in,
                                                            ContextOptions.Negotiate,
                                                            ENTER YOUR AD SERVICE NAME,
                                                            ENTER YOUR AD PASSWORD))
            {
                UserPrincipal oUser = UserPrincipal.FindByIdentity(oPrincipalContext, THE USERNAME THAT YOU WANT TO VALIDATE);
                if (oUser != null)
                {
                    oADAcct = new CUserADAcct();
                    oADAcct.dumpAcctAttrs(oUser);
                }
            }
于 2013-03-15T19:11:03.587 に答える