パブリック ネットワークからアクセスしようとしている内部 .NET Web サービスがあります。
ブラウザを使用している場合、ユーザーは Citrix NetScaler カスタム ページのフォームに入力できlogin
、passwd
フォームが送信された後、ブラウジングは続行され、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.WebRequestSession
PowerShellのオブジェクトを使わずにログインする方法はありますか? 適切なエンドポイントを使用していますか?
編集: PowerShell を使用しないソリューションを探していますが、HTTP ヘッダーと Cookie のみに依存しています