ข้อมูลรับรองพร็อกซี่ในการกระโดด PowerShell ครั้งที่สอง
ส่งบัญชีพร็อกซี่ที่ต้องการให้กับ Invoke-WebRequest ที่ทำงานบนเซิร์ฟเวอร์ระยะไกล แทนที่จะถือว่าการลงชื่อเข้าใช้ผ่าน remoting ถูกมอบหมาย
คำขอเว็บที่ทำงานแบบโต้ตอบบนเซิร์ฟเวอร์ B อาจได้รับ 407 เมื่อคำสั่งเดียวกันทำงานที่นั่นผ่าน PowerShell remoting การลงชื่อเข้าใช้จาก A ไปยัง B ไม่ได้มอบหมายข้อมูลระบุตัวตนนั้นโดยอัตโนมัติสำหรับการแลกเปลี่ยนการรับรองความถูกต้องครั้งถัดไปของ B
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
}
ออบเจ็กต์ข้อมูลรับรองมีไว้สำหรับบัญชีที่ต้องการของพร็อกซี่ เซสชันยังคงใช้การรับรองความถูกต้องแบบ remoting ตามปกติ และการลงชื่อเข้าใช้เว็บไซต์ใด ๆ ยังคงเป็นส่วนหนึ่งของคำขอไปยังเว็บไซต์นั้น
วิธีนี้หลีกเลี่ยงการพึ่งพาการมอบหมายอัตโนมัติของการลงชื่อเข้าใช้ครั้งแรก แต่ต้องให้โฮสต์ระยะไกลจัดการวัสดุบัญชีที่ให้มาเป็นส่วนหนึ่งของการออกแบบการดูแลระบบที่ต้องการ สถาปัตยกรรมอื่น เช่น ปลายทาง RunAs ที่มีการจัดการหรือการเข้าถึงบริการแบบจำกัด มีข้อกำหนดการกำหนดค่าของตัวเอง
หากข้อมูลรับรองพร็อกซี่เริ่มต้นเป็นสมมติฐานที่ผิด ให้บันทึกบัญชีที่คำสั่งระยะไกลทำงานอยู่และการรับรองความถูกต้องที่พร็อกซี่ร้องขอ การหมดเวลาคำขอเว็บที่นานขึ้นไม่สามารถให้ข้อมูลรับรองที่ขาดหายไปได้
ตัวเลือกพร็อกซี่บน New-PSSessionOption เกี่ยวข้องกับการเชื่อมต่อ remoting เอง กำหนดค่า Invoke-WebRequest ภายในบล็อกสคริปต์ระยะไกลเมื่อการเชื่อมต่อเว็บขาออกของ B เป็นสิ่งที่ต้องการพร็อกซี่