我有一个内部 .NET Web 服务,我尝试从公共网络访问它。
如果使用浏览器,用户可以在 Citrix NetScaler 自定义页面上输入表单,提交表单后,继续浏览,Web 服务端点正常工作login
。passwd
我对 Citrix NetScaler 一无所知,但通过检查浏览器开发工具中的网络调用,我能够使用 PowerShell 和Microsoft.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
有没有办法不使用 PowerShell 的Microsoft.PowerShell.Commands.WebRequestSession
对象登录?我是否使用了正确的端点?
编辑:我正在寻找不涉及 PowerShell 的解决方案,但它仅依赖于 HTTP 标头和 cookie