問題タブ [directoryservices]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
vb.net - DN に「/」が含まれている場合、「new DirectoryEntry (distinguishedName as string)」が機能しない
私は、次のコードを使用して、識別名を sAMAccountName に変換しています。
1 つを除いて、渡すすべての DN でうまく機能します。ドメインに「/」を含む AD グループがあり、「プログラマー/DBA」と呼びます。このグループの DN は、"Programmers/DBAs,OU=User Groups,DC=mydomain,DC=local" です。この DN を上記の stringDN として使用しようとすると、「不明なエラー (0x80005000)」の COMException が発生します。
ドメイン内の他のすべてのグループ/ユーザーは正常に動作し、テスト ドメインで問題を再現しました。「/」が含まれないようにグループの名前を変更すると、問題が解決します。ただし、本番環境ではこれを行うことができないため、行き詰まっています。
この「/」をなんとかエスケープできますか?このグループのプロパティを適切に取得できるように、これには解決策があると信じなければなりません。
vb.net - System.DirectoryServices は、マルチスレッド時にプロセッサをペグします - 負担を軽減できますか?
私のアプリケーションは、現在ログインしているユーザーを取得し、DirectoryServices.DirectorySearcher を使用して、それらに関するいくつかの追加の詳細 (いくつかのカスタム AD フィールドに保存したいくつかのプロパティとその電子メール アドレス) を取得します。これはうまく機能しますが、少し遅いといつも思っていました-私のシングルスレッドコードは、ADに対して約2〜3リクエスト/秒しか作成できませんでした.
本当の問題は、このコードを Web サーバーに移動したときに発生しました。複数の同時ユーザーを使用すると、1 秒あたりの要求数が大幅に増加し、LSASS.EXE プロセスがサーバーに固定されます。ドメイン コントローラーを確認しましたが、問題はありません。ボトルネックは明らかにアプリケーション側にあります。私の速度を落としているのは、NTLM/Kerberos チャレンジ/レスポンスであり、同時リクエストの数はマルチコア プロセッサでさえもペグしていると思われます。
私たちのネットワーク ポリシーでは、AD からの匿名の読み取りは許可されていないため、その選択肢はありません。また、「AuthenticationTypes」のすべてのメンバーを試しました (この例では、.FastBind を使用しています) が、プロセッサの負荷が同じでスループット レートがほぼ同じであるように見えます。
この制限を回避し、プロセッサへの要求を下げる方法を知っている人はいますか?
これが私が使用しているコードです-かなり簡単です:
c# - C# を使用して仮想ディレクトリまたは Web サイトの ASP.NET バージョンを確認するにはどうすればよいですか?
IIS 仮想ディレクトリの .NET フレームワークが C# で使用されていることを確認する方法を教えてください。ユーザーに表示する必要があります。
c# - リモート IIS サーバーに接続しようとすると「アクセスが拒否されました」 - C#
IIS 5.1 で実行されている C# アプリケーションからリモート IIS 6 サーバーに接続しようとすると、"Access Deined" COMException が発生します。
何か案は?元の質問と同じ問題がすべて発生しています。
更新 - 2009 年 4 月 1 日
IISサーバーに接続してWebサイトを開始および停止するウィンドウアプリケーションで構成されるこのソリューション(http://www.codeproject.com/KB/cs/Start_Stop_IIS_Website.aspx )を見つけました。ワークステーションで実行し、IIS サーバーに接続できます。
うーん....このスタンドアロン アプリケーションを実行できるのに、ASP.NET アプリケーションを実行できないのはなぜですか?
オリジナル
IIS サーバーが有効かどうかを確認するために DirectoryEntry.Exist メソッドを使用してリモート マシンから IIS に接続しようとすると、"Access Denied" COMException が発生します。
接続しようとしている IIS サーバーの管理者グループに追加された Active Directory グループのメンバーです。
誰かがこの問題を経験し、それを解決する方法を知っていますか?
アップデート:
@Kev - ASP.NET アプリケーションです。また、ユーザー名とパスワードなしで、IIS6 マネージャーを介してリモート サーバーに接続できます。
@Chris - リモート サーバーに接続して、仮想ディレクトリの数を表示し、各ディレクトリの .NET フレームワーク バージョンを特定しようとしています。このSOの質問を参照してください。
@dautzenb - ASP.NET アプリケーションが IIS 5.1 で実行されており、IIS 6 サーバーに接続しようとしています。リモート サーバーのローカル ASPNET アカウントのセキュリティ ログに障害の監査が表示されます。アプリケーションをデバッグしようとすると、自分のドメイン アカウントで実行しているにもかかわらず、アクセスが拒否されます。
更新 2:
@Kev - 次のオーバーロードを使用して DirectoryEntry オブジェクトを作成することを確立できました。
しかし、アプリのデバッグ中に、すべてのプロパティに「タイプ 'System.Runtime.InteropServices.COMException' の例外がスローされました」が含まれています。
また、AuthenticationType プロパティは Secure に設定されています。
更新 3:
接続を確立しようとするたびに、次の 2 つの失敗監査エントリがリモート IIS サーバーのセキュリティ イベント ログに記録されていました。
最初のイベント:
イベント カテゴリ: アカウント ログオン
イベント ID: 680
ログ試行者: MICROSOFT_AUTHENTICATION_PACKAGE_V1_0
ログオン アカウント: ASPNET
ソース ワークステーション:
エラー コード: 0xC0000234
2 番目のイベント:
イベント カテゴリ: ログオン/ログオフ
イベント ID: 529
ログオンの失敗:
理由: 不明なユーザー名または間違ったパスワード
ユーザー名: ASPNET
ドメイン: (MyDomain)
ログオンの種類: 3
ログオン プロセス: NtLmSsp
認証パッケージ: NTLM
ワークステーション名: (MyWorkstationId)
発信者ユーザー名前: -
発信者ドメイン: -
発信者ログオン ID: -
発信者プロセス ID: -通過した
サービス: -
ソース ネットワーク アドレス: 10.12.13.35
ソース ポート: 1708
偽装は true に設定され、ユーザー名とパスワードは空白です。リモート IIS サーバーで ASPNET アカウントを使用しています。
c# - 「IIsWebDirectory」または「IIsWebVirtualDir」が ASP.NET アプリケーションかどうかを判断するにはどうすればよいですか?
現在、IIS サーバーに接続し、仮想ディレクトリ/Web ディレクトリ情報を照会する C# asp.net アプリケーションを作成しています。
「IIsWebDirectory」と「IIsWebVirtualDir」という 2 つのタイプを扱う必要があることがわかりました。
C# で "アプリケーション" として構成されているかどうかを確認するにはどうすればよいですか?
C# と IIS での私の冒険は、こちらとこちらでもご覧いただけます。
アップデート
@Kev - あなたの回答の情報を参考にして、AppFriendlyName が「デフォルト アプリケーション」に設定されていないかどうかを確認するための次の簡単なソリューションを開発しました。
c# - PropertyCollectionをループするにはどうすればよいですか
System.DirectoryServices.PropertyCollectionをループして、プロパティの名前と値を出力する方法の例を誰かが提供できますか?
私はC#を使用しています。
@JaredPar-PropertyCollectionにはName/Valueプロパティがありません。PropertyNamesとValuesがあり、System.Collection.ICollectionと入力します。PropertyCollectionオブジェクトを構成するベースラインオブジェクトタイプがわかりません。
@JaredPar再び-私はもともと質問に間違ったタイプのラベルを付けていました。それは私の悪いことでした。
更新: Zhaph-Ben Duguidの入力に基づいて、次のコードを開発することができました。
c# - DirectoryEntry または任意のオブジェクト階層をループする - C#
現在、System.DirectoryServices 名前空間を使用して DirectoryEntry オブジェクトを作成し、階層全体をループして情報を収集するアプリケーションを開発しています。
階層内の各 DirectoryEntry オブジェクトの子エントリの数がわからないため、 Children プロパティを介してスパイダーに N 個のネストされたループを作成することはできません
これが私の擬似コードの例です:
私の質問は、オブジェクト内のサブディレクトリの数がわからない場合に情報を収集するためのループを作成する最良の方法は何ですか?
(これは、オブジェクト階層がわからない任意のタイプのオブジェクトに適用できます)
active-directory - DirectoryServices.AccountManagement の「古い」パスワードは、パスワードの変更後も検証されます
Active Directory でユーザーのパスワードをリセットした後、ユーザーが古いパスワードを使用してログインしようとすると、次のコードが True として検証されます。
次のコードを使用してパスワードをリセットしています。
パスワードのリセットは正常に機能し、ユーザーは新しいパスワードでログインできますが、古いパスワードはまだ検証されません。
上記の ValidateCredentials が古いパスワードに対して機能する場合、資格情報を Web サービス呼び出しに割り当てているため、"401: Unauthorized" エラーで失敗します。
このようなものを見た人はいますか?
c# - ディレクトリ サービス グループ クエリのランダムな変更
asp.net アプリケーションで異常な動作が発生しています。ディレクトリ サービスを使用して、特定の認証済みユーザーの AD グループを検索するコードがあります。コードは次のようになります...
次に、特定のユーザーのグループのリストを照会して取得します。問題は、コードがグループのリストを文字列のリストとして受け取っていたことです。ソフトウェアの最新リリースでは、グループのリストを byte[] として受け取り始めています。
システムは文字列を返し、突然 byte[] を返し、再起動すると再び文字列を返します。
誰にもアイデアはありますか?
(marc_s) コードサンプルを追加:
c# - C# から ADAM に対して ADAM ユーザーを認証する - バインドできない
ADAM インスタンスをセットアップし、テスト ユーザーを追加しました。c# から Windows アカウントを使用して ADAM にバインドできますが、ADAM ユーザーのいずれかを使用してバインドできません。(ldp で adam ユーザーを正常にバインドできます) & msDS-UserAccountDisabled 属性を false に設定して、ユーザーが有効になっていることを確認しました。Windows アカウントにバインドすると、ADAM ユーザーのプロパティを正常に検索して戻すことができますが、ADAM ユーザー アカウントにバインドしようとすると、まだ認証に苦労しています。エラーが発生します。
エラー: System.Runtime.InteropServices.COMException (0x8007052E): ログオンに失敗しました: 不明なユーザー名またはパスワードが正しくありません。System.DirectoryServices.DirectoryEntry.Bind (ブール値 throwIfFail) で
私が使用しているコードは次のとおりです。
ご協力いただきありがとうございます。