0

パブリック ネットワークからアクセスしようとしている内部 .NET Web サービスがあります。

ブラウザを使用している場合、ユーザーは Citrix NetScaler カスタム ページのフォームに入力できloginpasswdフォームが送信された後、ブラウジングは続行され、Web サービス エンドポイントは問題なく動作します。

Citrix NetScaler については何も知りませんが、ブラウザーの開発ツールでネットワーク呼び出しを確認することで、PowerShell と aMicrosoft.PowerShell.Commands.WebRequestSessionオブジェクトを使用して Web サービスにアクセスできました。

$session = New-Object Microsoft.PowerShell.Commands.WebRequestSession

$cookie = New-Object System.Net.Cookie 
$cookie.Name = "NSC_TASS"
$cookie.Value = "https://REST_SERVICE_DOMAIN/api/"
$cookie.Domain = "CITRIX_NETSCALER_DOMAIN.com"
$session.Cookies.Add($cookie);

$response = Invoke-WebRequest -Uri "https://CITRIX_NETSCALER_DOMAIN/cgi/login" `
    -Method "POST" `
    -Headers @{"Content-Type"="application/x-www-form-urlencoded"} `
    -Body "login=URL_ENCODED_EMAIL&passwd=URLENCODED_PASSWORD" `
    -WebSession $session

Microsoft.PowerShell.Commands.WebRequestSessionPowerShellのオブジェクトを使わずにログインする方法はありますか? 適切なエンドポイントを使用していますか?

編集: PowerShell を使用しないソリューションを探していますが、HTTP ヘッダーと Cookie のみに依存しています

4

1 に答える 1

0

-SessionVariable を Invoke-WebRequest で実行して、同様の方法で Cookie を追加できると思います。

Invoke-WebRequest https://CITRIX_NETSCALER_DOMAIN/cgi/login -SessionVariable session
...
$session.Cookies.Add($cookie);
于 2020-12-19T05:17:52.893 に答える