2 つ目の PowerShell ホップでのプロキシ資格情報
リモート サーバーで実行される Invoke-WebRequest に、リモート処理のログインが委任されると仮定せず、意図したプロキシ アカウントを渡します。
サーバー B で対話的に動作する Web 要求でも、同じコマンドを PowerShell リモート処理経由でそこで実行すると 407 を受け取ることがあります。A から B へのログインは、B の次の認証交換のためにその ID を自動的に委任するわけではありません。
A → remoting session on B → HTTP proxy → website
サポートされる設計の一つは、送信要求に対してプロキシ アカウントを 明示的に指定する ことです。既存の PSSession と適切に取得した PSCredential オブジェクトを使用します。
Invoke-Command -Session $session -ArgumentList $proxyCredential -ScriptBlock {
param([pscredential]$outboundProxyCredential)
$requestOptions = @{
Uri = 'https://api.example/'
Proxy = 'http://proxy.example:8080'
ProxyCredential = $outboundProxyCredential
}
Invoke-WebRequest @requestOptions
}
資格情報オブジェクトはプロキシの意図したアカウントに対するものです。セッションは引き続き通常のリモート処理認証を使用し、Web サイトへのログインはそのサイトへの要求の一部のままです。
これにより、最初のログインの自動委任に依存することを避けられます。ただし、リモート ホストが渡されたアカウント情報を意図した管理設計の一部として扱う必要があります。管理された RunAs エンドポイントや制限付きサービス アクセスなど、他のアーキテクチャには独自の構成要件があります。
既定のプロキシ資格情報が誤った前提だった場合は、リモート コマンドを実行しているアカウントとプロキシが要求する認証を記録します。Web 要求のタイムアウトを延ばしても、不足している資格情報は補えません。
New-PSSessionOption のプロキシ オプションはリモート処理接続自体に関するものです。B の外向き Web 接続にプロキシが必要な場合は、リモート スクリプト ブロック内で Invoke-WebRequest を構成します。