問題タブ [principalcontext]
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.
c# - SecurityIdentifier に転送するための System.Security.Principal.NTAccount の正しい構文
System.Security.Principal.NTAccountオブジェクトを作成して System.Security.Principal.SecurityIdentifier に転送したいので、それを使用して .Net C# の Active Directory に新しいアクセス ルールを追加できます。
この形式を使用する場合:
転送できますが、ユーザーは AD で「不明なユーザー」に変換されます
私が使用する場合:
また
また
エラーメッセージが表示されます:
それがどのように行われたかについてのアイデアはありますか?
前もって感謝します。
c# - System.DirectoryServices PrincipalContext と読み取り専用ドメイン コントローラー
DirectoryServices を介して Active Directory ルックアップを実行することにより、特定の機能を保護するアプリケーションがあります。
このコードを古いドメインのウェブ ホストから新しいドメインに移行中です。コードは古いドメインで問題なく動作しました。ただし、新しいドメインに対してテストするとエラーが発生します。私たちの目標は古いドメインから移行することであるため、ドメイン間に完全な信頼があります。新しいドメインは、ドメイン内で読み取り専用のドメイン コントローラーを使用しますが、ファイアウォール ルールによって内部ネットワークから制限されます。ドメイン内の境界 DMZ サーバーのみが、読み取り専用ドメイン コントローラーにアクセスできます。
問題のあるコード行は次のとおりです。
新しいドメインに対してテストすると、次のように表示されます。
[COMException (0x8007203a): サーバーが動作していません。
この:
[ActiveDirectoryServerDownException: サーバーが動作していません。
読み取り専用ドメイン コントローラーの FQDN と共に。
DC の名前を指定しているので、私の要求はその DC に送られるべきではありませんか? これは、LDAP SRV レコードの DNS ルーティングの問題でしょうか? 私は DNS への表示専用アクセス権を持っていますが、読み取り専用 DC が Web ホストが存在する内部サイトで参照されていることを発見しました。また、これらの SRV レコードには優先順位が設定されていません。They are all 0. システム管理者は、プライマリ DC を指すプログラムによる方法が必要であると主張しています。私は PrincipalContext への呼び出しのおよそ 6 つのバリエーションを使用して、そうしようとしました。
私は最新の API に固執し、LDAP 文字列を記述することに頼りません。システム管理者側では、何を調査または検査できますか?
プログラマティック側では、リクエストを適切に送信していますか? DCを回避する代替方法または確実な方法はありますか? おそらくDNS次第ですが、現時点では不明です。
トラブルシューティング: LDAP 要求中に Web ホストのコマンド ラインから netstat を実行すると、2 つの書き込み可能な DC に対して LDAP 接続が要求されている場所が表示されます。その後、読み取り専用 DC にも要求が送信され、エラーがスローされます。
c# - PrincipalContext を使用して、Active Directory 内の特定のグループ ユーザーを取得できません
例外の取得
system.directoryservices.accountmanagement.principaloperationexception : サーバーにそのようなオブジェクトはありません
グループのすべてのメンバーを取得しようとしています。同じコードを持つ他のグループのメンバーを取得できる、特定の 1 つのグループのみで例外を取得します。
次のコードで試しています
グループには 600 人のメンバーが含まれ、一部のメンバーはクロスドメイン ユーザーです
c# - SQL CLR ルーチンから呼び出された PrincipalContext のエラー 6522
最初の CLR ルーチンを SQLServer 2008 に追加しようとしています (まもなく 2014 にアップグレードされます)。目標は、ユーザー オブジェクトを Active Directory に追加し、十数個の属性値を渡して、インターフェイスから ERP へのデータに基づいてユーザーを作成することです (インターフェイスは正常に機能し、データは適切です)。同僚が PrincipalContext をラップするコンパクトな C# クラスを作成し、実際に別の動作中のアプリケーションからコードを取得して、少し簡素化しました (以下を参照)。
CLR を有効にし、DB を TRUSTWORTHLY に設定するなどして、彼のコードと必要なリソースの CREATE ASSEMBLY を UNSAFE オプションを使用して実行することができました。これは、コードが Microsoft の精査された .NET クラスのサブセットの一部ではないためです。 SQLServer 内で実行します。
(すべての作成と後続の ALTER は正常に実行されます。ここで隠したカスタム クラス ライブラリ XXXXXXX_CLR を変更するたびに、最後の ALTER を変更します... CLR ストアド プロシージャは正常に作成され、ユーザーを保存しようとするまで OK を実行しますPrincipalContext オブジェクトを介して取得しているコードとエラー メッセージは次のとおりです。
このエラーに対する回答を探して 50 の Web ページを読みました。SQLserver がドメイン管理者として実行するユーザーを一時的に作成しました (開発システム - ひどい慣行だと思います)。ドメイン管理者権限を持つログイン SQL ユーザーから呼び出します。明示的な .NET AD 接続ドメイン管理者に渡す、ユーザーとパスワードのオプションを PrincipalContext への呼び出しから外す、SQLServer のユーザーまたは呼び出し元のユーザーの特権がそれを制御するかどうかを確認する、PrincipalContext コンストラクター呼び出しでオプションのさまざまな組み合わせを試す、など.
....残りの属性について....これは、FIM およびその他の C# ミドルウェア libary 呼び出しを使用して何年にもわたって行ってきました。詳細は無視してください...渡すパラメーターでカバーされた正しい AD 属性が確実にあります。しかし、ここですべてを公開したくはありません。
したがって、ここに常に表示されるエラーメッセージがあります(クラスライブラリCLR内に他の属性検証の問題があったため、C#CLRコードを正常に実行していることはわかっていますが、最終的にPrincipalContextへの呼び出しを行うところまで来て失敗しましたそこの):
Windows ID の「なりすまし」についていくつか読みましたが、関連するすべてのサービスがドメイン管理者特権として実行されているときに、AD で PrincipalContext 呼び出しを実行することさえできない場合、なぜそれが必要なのか理解できません。私はそのアプローチを実際には使用できないことを知っています (セキュリティ非スターター) が、それが機能しない理由と、ここで試してみるべき代替手段を知りたいと思います。実行しているサービス アカウントをドメイン管理者グループ BTW に配置した後、SQLServer をバウンスしました。
この長ったらしい問題の親切なレビューに感謝します。
c# - PrincipalSearcher から List に DisplayName と Name のみを割り当てるにはどうすればよいですか?
次のサンプルコードがあります。
result.DisplayName と result.Name のみを結果リストに割り当てるにはどうすればよいですか?
最初にこれら 2 つの値のみを引き戻すように PrincipalSearcher を構成できますか?
PowerShell でできるように:
ありがとう
c# - ディレクトリ サービスを使用して Active Directory ドメイン/AU からすべてのユーザーを取得する
私が持っているコードは、James を含む名前を持つすべてのユーザーのリスト (結果) を正しく作成します。
結果に domain/ou 内のすべてのユーザーが含まれるようにコードを変更するにはどうすればよいですか?
このようにワイルドカードを使用してすべての結果を返そうとすると、リストの結果は空になります: