問題タブ [impersonation]
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.
.net - .net リモート呼び出しで Windows 認証済みの Web ユーザーになりすますにはどうすればよいですか?
Windows 統合セキュリティを使用する Web アプリケーションがあります。ローカル システムとして実行される Windows サービスもあります。Web アプリケーションは、.NET リモート処理を使用して、tcpip チャネルを介してサービスでメソッドを実行します。.NET 2.0 で Windows ID をサービスに渡す方法はありますか?
vb.net - 異なる資格情報を持つVB.Net File.Copy/File.Move
理想的には、ローカル ドライブ上のアクセス可能なフォルダーと、アクセス許可のないネットワーク共有の間でコピー/移動できるようにしたいと考えています (ただし、アプリケーションはそうします)。
偽装を使用してネットワーク共有内のファイルにアクセスできるようにしていますが、System.IO の File.Move または File.Copy を使用すると、場所ごとに同じ資格情報を使用する必要があります。これを回避する方法はありますか?
asmx - 偽装と CredentialCache.DefaultCredentials により HTTP 401 Unauthorized が返される
Web クライアントから呼び出す ASMX Web サービス (ローカルホスト - WinXP IIS 5.1) があります。私の Web サービスは、別の ASMX Web サービスを使用する必要があります (Win 2003 サーバー IIS 6.0 上)。
「ハードコーディングされた」方法で Web サービス コードに資格情報を提供すると、次のようになります。
...その後のリモート Web サービスの呼び出しは正常に機能します。
今、私はいくつかの初期テストで自分自身になりすまそうとしています。これについての私の最初の読書は、これが大きな主題になる可能性があることを私に教えてくれますが、ここに私が手始めにやったことがあります:
ローカルホストの WebClient サイトの仮想ディレクトリで、チェックされていない「匿名アクセス」
私の webclient サイトの web.config で、次のように設定しました: authentication mode="Windows" and identity impersonate="true"
リモート サービスを呼び出す必要がある Web サービスの Web メソッドで、次のように変更しました。
/li>これらの DefaultCredentials でリモート Web サービスが呼び出されると、次のエラーが発生します。
System.Web.Services System.Web.Services.Protocols.SoapException: サーバーは要求を処理できませんでした.--->
System.Net.WebException: HTTP ステータス 401 で要求が失敗しました: 権限がありません。
System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse (SoapClientMessage メッセージ、WebResponse 応答、ストリーム responseStream、ブール値の asyncCall) で
System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke (メソッド名の文字列、オブジェクト [] パラメーター) で
私が誤解して「なりすまし」を過度に単純化しようとしたのか、それともリモート Web サービスが 3 つの引数 (つまり、ユーザー名、パスワード、ドメイン) を持つ資格情報のみを受け入れるように配線されているのかはわかりません。
c# - 偽装と BackgroundWorker
BackgroundWorker
偽装でクラスを使用しようとすると、少し問題があります。Google からの回答に従って、このコードを偽装しました
BackgroundWorker
クラスで使用するまでは、非常にうまく機能していました。この場合、非同期で実行されるコードに偽装を追加しました。エラーはありませんが、非同期メソッドで使用すると偽装が機能しないという問題があります。
コードでは、これは次のようになります。
BGWorker をインスタンス化し、イベント ハンドラーを DoWork イベントに追加します。
/li>上記のハンドラーでは、何らかのコードを実行する前に偽装が行われます。
/li>コードはで起動されます
/li>
前に述べたように、エラーはスローされません。コードは、偽装を実行していないかのように動作するだけです。つまり、デフォルトの資格情報が使用されます。
さらに、偽装メソッドは true を返すため、偽装は特定のレベルで発生しましたが、おそらく現在のスレッドでは発生していません。
これは、非同期コードが別のスレッドで実行されるために発生する必要があるため、MyImpersonation
クラスに何かを追加する必要があります。しかし、何?:)
powershell - Powershell のなりすまし
PowerShell で偽装するにはどうすればよいですか? advapi32.dll LogonUserを使用できますが、もっと簡単な解決策があるのでしょうか?
web-services - ワークステーションAとBで同じクレデンシャルを使用した場合、偽装は許可に失敗します
ケース1.JOHNXP(http:// localhost / WebClientなど)と呼ばれる自分のPCから小さなテストサイトを参照すると、.aspxページがASMX Webサービスを呼び出し、資格情報を取得して別のマシン上の別のWebサービスに渡します(同じドメイン内のSERVERTRIM)。要求の結果、資格情報を使用してSERVERTRIMマシンにセキュリティログエントリが表示されます。
ケース2.同じドメイン内の別のPCに移動し、個人のデスクトップで使用したのと同じ資格情報でログオンします。上記の同じテストサイト(今回はhttp:// johnxp / WebClient)を参照すると、これが.aspxページに浸透します。
System.Web.Services.Protocols.SoapException:サーバーはリクエストを処理できませんでした。---> System.Net.WebException:リクエストがHTTPステータス401:Unauthorizedで失敗しました
SERVERTRIMのセキュリティログを見ると、ケース2のアクセスにより、401/Unauthorizedを説明しているように見えるANONYMOUSLOGONが発生したことがわかります。
WSが別のサーバー上のベンダーのWebサービスを呼び出すときに、ログインしたDOMAINユーザーの資格情報を使用するようにWebサービスを取得しようとしています。
ASMX Webサービスはデスクトップで実行されます(IIS 5.1 WinXP Pro-マシン名はJOHNXPです)。関係するすべてのサーバーで匿名のUNCHECKEDを有効にし、シナリオに関係するすべてのweb.configでこれを使用しています。
ベンダーのWebサービスはSERVERTRIM(Win 2003 Server)で実行され、ASMXでもあり、WSE3.0を使用します。
WiresharkとNetmonは、今のところ私にとってツールとしては手ごわいように見えます。「リモート」サーバー(SERVERTRIM)で結果として得られるさまざまなLOGONは、十分な「証拠」であると考えています。上記のすべてのマシンは同じドメインにありますが、可能な場合は、「リモート」WebサービスをSERVERTRIMに、中間Webサービスを同じドメインの別のサーバーに保持したいと思います。このシナリオでは、「委任」を掘り下げる必要がありますか?ドメイン内の別のマシンでWeb要求が開始されたときに、同じクレデンシャルがANONYMOUS LOGONになる理由を監視するための最も簡単なツールは何でしょうか?
windows - VisualStudio2005でWebサービスが実行されているアカウントを確認する方法
なりすましと委任に関するドキュメントを理解しようと少し気が狂いそうですが、私のWebサービスがどのアカウントで実行されているのかという質問が出てきました。
JOHNXPという開発ワークステーションにmyDomainName\johnaとして記録されています。Vstudio2005から、デバッグを介してWebサービスを開始すると、ブラウザーにwsdlページが表示されます。
タスクマネージャーから、.asmxコードのブレークポイントに座っているときに次のように表示されます。
aspnet_wp.exe pid = 1316 UserName = ASPNET devenv.exe pid = 3304 UserName = johna
ws.asmxコードをホストする仮想ディレクトリの[IISディレクトリセキュリティ]タブで、[匿名アクセスを有効にする]がオフになっており、[統合Windows認証]がオンになっています。
それで、MSDNの人々が「サーバープロセスを実行するユーザーアカウントを構成する必要がある」と言ったとき、上記の私の小さなWebサービスの場合、彼らは何を参照しますか?
私は引用しています:http: //msdn.microsoft.com/en-us/library/aa302400.aspx
最終的に、私のこのWebサービスは、認証されたドメインユーザーが閲覧して、私のWebサービスを呼び出すために偽装することを望んでいます。私のWebサービスは、別のサーバー(ただし同じドメイン)で別のASMXWebサービスを使用します。偽装されたドメインユーザーの資格情報(JOHNXP上の私のWebサービスの資格情報ではない)を使用するには、このリモートWebサービスが必要です。
そのため、これを理解するのが少し厄介になり、Webサービスが使用しているアカウントについて不明な点があります。WinXP上のIIS5.1のASPNETだと思いますが、よくわかりません。
windows - UACでは、偽装ユーザーとしてファイルを書き込めないのはなぜですか?
UACが有効になっているWindows2008まで、ユーザーになりすましています。一時ディレクトリにいくつかのファイルを書き込もうとしています。ただし、ユーザーがディレクトリへの書き込みアクセス権を持っている場合でも、そのユーザーになりすますと、そのディレクトリに書き込むことができません(アクセス拒否エラーが発生します)。どうやら、これはUACが私をブロックしているためです。
これは、マイクロソフトフォーラムへの投稿に関連しています:http://forums.iis.net/t/1149793.aspxしかし、そのフォーラムは、マイクロソフトの従業員が同じ質問を繰り返し行い、情報を入手したときに沈黙している以外に応答がありませんでした。彼は求めた。
一時ファイルへの書き込み中に偽装しないことでこれを回避することができましたが、いくつか質問があります。
偽装されたときにUACがファイルへの書き込みを許可しないのはなぜですか?
なりすまし中に一時ファイルを置くことができる場所はありますか?
より良い解決策はありますか?これを処理するための「正しい」方法は何ですか?
UACおよび偽装ユーザーに対するすべての制限についてのドキュメントのソースはありますか?
sql-server - SQL Server "EXECUTE AS" のエラー
次のセットアップがあります。
トリガーが設定されている (履歴データを収集する) いくつかのテーブルを持つ SQL Server DB があります。これらのトリガーは、EXECUTE AS 'HistoryUser'
. HistoryUser
ユーザーは、ログインのないデータベース内の単純なユーザーです。すべてのテーブルから読み取り、履歴テーブルに書き込むのに十分な権限があります。
DB をバックアップしてから別のマシン (この場合は仮想マシンですが、問題ありません) に復元すると、トリガーが機能しなくなります。実際、ユーザーのなりすましは機能しなくなりました。こんな簡単な一言でも
エラーが発生します:
プリンシパル "HistoryUser" が存在しないか、このタイプのプリンシパルを偽装できないか、権限がないため、データベース プリンシパルとして実行できません。
DB所有者がドメインユーザーである場合にこれが発生する可能性があることをMSDNで読みましたが、そうではありません。そして、それを他のものに変更しても(推奨される解決策)、この問題は残ります。
ログインせずに別のユーザーを作成すると、偽装に問題なく使用できます。つまり、これは問題なく機能します。
これらすべてのトリガーを再作成したくないので、既存のHistoryUser
機能を作成する方法はありますか?