ในบทความนี้ เราจะแสดงวิธีที่ผู้ใช้ระยะไกลสามารถเปลี่ยนรหัสผ่านที่หมดอายุของพวกเขาโดยใช้ฟอร์มเว็บพิเศษบนเซิร์ฟเวอร์ Remote Desktop Services (RDS) ที่มีบทบาท RD Web Access บน Windows Server 2022/2019/2016/2012 R2
ไม่สามารถเปลี่ยนรหัสผ่านที่หมดอายุจากเซสชัน Remote Desktop
ใน Windows Server 2012 R2 และใหม่กว่า NLA (Network Level Authentication) ถูกเปิดใช้งานสำหรับการเชื่อมต่อ Remote Desktop ตามค่าเริ่มต้น NLA ป้องกันไม่ให้ผู้ใช้เชื่อมต่อกับโฮสต์ RDP/RDS หากรหัสผ่านของพวกเขาหมดอายุหรือมีตัวเลือก "User must change password at first Logon" เปิดใช้งานในแอตทริบิวต์ useraccountcontrol ของผู้ใช้ คุณสามารถปิดใช้งาน NLA ได้ (ref1, ref2) แต่สิ่งนี้ไม่ดีในแง่ของความปลอดภัย เมื่อคุณพยายามเชื่อมต่อกับเซิร์ฟเวอร์ RDSH (Remote Desktop Session Host) ภายใต้บัญชีผู้ใช้ที่มีรหัสผ่านหมดอายุ ข้อความข้อผิดพลาดต่อไปนี้จะปรากฏ:
An authentication error has occurred. The Local Security Authority cannot be contacted Remote computer: lonSrvRDS1 This could be due to an expired password Please update your password if it has expired.
เมื่อใช้ NLA ผู้ใช้ RDP ระยะไกลไม่สามารถเปลี่ยนรหัสผ่านที่หมดอายุได้ หากพวกเขาไม่มีวิธีอื่นในการเข้าถึงเครือข่ายองค์กรนอกเหนือจากโครงสร้างพื้นฐาน RDS ทั่วไป คุณสามารถขอให้ผู้ใช้เปลี่ยนรหัสผ่านโดยตรงในเซสชัน RDP ล่วงหน้า หรือโดยการเปิดใช้งานตัวเลือก GPO Interactive logon: Prompt user to change password before expiration บนโฮสต์ RDS (Computer Configuration → Windows Settings → Local Policies → Security Options) แต่ไม่ได้ทำงานเสมอไปเนื่องจากความลืมของผู้ใช้ทั่วไป
ใน Windows 2012 R2 และใหม่กว่า ผู้ใช้ระยะไกลสามารถรีเซ็ตรหัสผ่านด้วยตนเอง (รหัสผ่านปัจจุบันหรือรหัสผ่านที่หมดอายุ) ผ่านหน้าเว็บพิเศษบนเซิร์ฟเวอร์ที่มีบทบาท Remote Desktop Web Access เพื่อเปลี่ยนรหัสผ่าน ผู้ใช้ต้องรับรองความถูกต้องผ่านหน้าเว็บล็อกอิน RDS-WebAccess และเปลี่ยนรหัสผ่านโดยใช้ฟอร์ม aspx พิเศษ
หมายเหตุ ใน Windows Server 2003 ผู้ใช้โดเมนสามารถเปลี่ยนรหัสผ่านที่หมดอายุได้โดยใช้เว็บแอปพลิเคชันขนาดเล็กIISADMPWD (แม้จะไม่ได้รับการสนับอย่างเป็นทางการ)
วิธีอนุญาตให้ผู้ใช้ระยะไกลรีเซ็ตรหัสผ่านที่หมดอายุบนโฮสต์ RDWeb Access
ตัวเลือกการเปลี่ยนรหัสผ่านระยะไกลพร้อมใช้งานบนเซิร์ฟเวอร์ที่มีบทบาท Remote Desktop Web Access (RD Web Access) แต่ฟีเจอร์นี้ถูกปิดใช้งานตามค่าเริ่มต้น
หากคุณปรับใช้ฟาร์ม RDS คุณสามารถค้นหาเซิร์ฟเวอร์ที่มีบทบาท RDS-WEB-Access ติดตั้งโดยการเชื่อมต่อการกำหนดค่าการปรับใช้บนโฮสต์ RD Connection Broker:
Get-RDServer -ConnectionBroker rdcb1.woshub.com| where {$_.roles -eq "RDS-WEB-ACCESS"}
เพื่อเปลี่ยนรหัสผ่าน ให้ใช้สคริปต์ในไฟล์ password.aspx ที่ตั้งอยู่ใน C:\Windows\Web\RDWeb\Pages\en-US
หากคุณใช้ Windows Server เวอร์ชันเฉพาะภาษา (โดยไม่มี language pack) เส้นทางไปยังไฟล์ password.aspx จะแตกต่างออกไปและมีลักษณะดังนี้:
- C:\Windows\Web\RDWeb\Pages\fr-FR – สำหรับ Windows Server รุ่นฝรั่งเศส
- C:\Windows\Web\RDWeb\Pages\de-DE – สำหรับรุ่นเยอรมัน
เพื่อเปิดใช้งานตัวเลือกเปลี่ยนรหัสผ่าน คุณต้องรันคอนโซล IIS Manager (inetmgr) บนเซิร์ฟเวอร์ที่มีบทบาท RD Web Access ที่กำหนดค่าแล้ว ไปที่ [Server Name] → Sites → Default Web Site → RDWeb → Pages และเปิดส่วน Application Settings
ในหน้าต่างด้านขวา ให้ค้นหาพารามิเตอร์ PasswordChangeEnabled และเปลี่ยนค่าเป็น true
นอกจากนี้ คุณสามารถตั้งค่าพารามิเตอร์ PasswordChangeEnabled เป็น True ในไฟล์กำหนดค่า IIS C:\Windows\Web\RDWeb\Pages\Web.config
พารามิเตอร์ PasswordChangeEnabled อนุญาตให้ผู้ใช้ Active Directory เปลี่ยนรหัสผ่านที่หมดอายุผ่านพอร์ทัล RD Web Access ตัวเลือกนี้ไม่ได้อนุญาตให้เปลี่ยนรหัสผ่านของผู้ใช้ท้องถิ่นบนโฮสต์ RDS ในสภาพแวดล้อม Workgroup (โดยไม่มีโดเมน)
รีสตาร์ทเว็บเซิร์ฟเวอร์ IIS จากคอนโซลหรือใช้คำสั่ง:
iisreset
เพื่อตรวจสอบความพร้อมใช้งานของหน้าเปลี่ยนรหัสผ่าน ให้ไปที่หน้าเว็บต่อไปนี้:
https://lonSrvRDS1/RDWeb/Pages/en-US/password.aspx
RD Web Access ต้องมีใบรับรอง SSL ที่ถูกต้องติดตั้งแล้ว คุณสามารถใช้ใบรับรอง Let's Encrypt ฟรีใน IIS
ป้อนชื่อผู้ใช้ รหัสผ่านเก่า และรหัสผ่านใหม่สองครั้ง
หลังจากเปลี่ยนรหัสผ่านของผู้ใช้สำเร็จ ข้อความต่อไปนี้ควรปรากฏ:
Your password has been successfully changed.
คลิก OK และผู้ใช้จะถูกเปลี่ยนเส้นทางไปยังหน้าล็อกอิน RD Web หากรหัสผ่านของผู้ใช้ไม่ตรงตามนโยบายรหัสผ่านของโดเมน ข้อความเตือนจะปรากฏ:
Your new password does not meet the length, complexity, or history requirements of your domain. Try choosing a different new password.
คุณสามารถใช้วิธีเปลี่ยนรหัสผ่านนี้บนเซิร์ฟเวอร์ Remote Desktop Web Access ได้ก็ต่อเมื่อ Forms Authentication ถูกเปิดใช้งานบน IIS บนเซิร์ฟเวอร์ RDWA คุณจะไม่สามารถเปลี่ยนรหัสผ่านผ่านฟอร์มเว็บ RD ได้หากใช้วิธี Windows Authentication
คุณสามารถแสดงรายการและเปลี่ยนประเภทการรับรองความถูกต้องที่รองรับได้ในคอนโซล IIS Manager เลือก Sites → Default Web Sites → RDWeb → Pages ในหน้าต่างด้านขวา เลือก Forms Authentication
ตอนนี้ เมื่อพยายามเชื่อมต่อกับเซิร์ฟเวอร์ RD Web Access ด้วยรหัสผ่านที่หมดอายุ ผู้ใช้จะถูกเปลี่ยนเส้นทางไปยังหน้าเว็บ password.aspx และได้รับการเสนอให้เปลี่ยนรหัสผ่านของเขา
เพิ่มลิงก์เปลี่ยนรหัสผ่านในฟอร์มล็อกอิน RD Web Access
คุณสามารถเพิ่มลิงก์ไปยังฟอร์มเปลี่ยนรหัสผ่านโดยตรงในฟอร์มล็อกอิน Remote Desktop WebAccess ซึ่งจะช่วยให้ผู้ใช้เปลี่ยนรหัสผ่านได้ทุกเมื่อโดยไม่ต้องรอจนหมดอายุ
แทรกลิงก์ไปยังไฟล์ password.aspx ลงในหน้าล็อกอิน RDWeb (สร้างสำเนาสำรองของไฟล์ password.aspx ก่อนแก้ไข)
- บนเซิร์ฟเวอร์ RDWeb ให้ค้นหาและเปิดไฟล์ C:\Windows\Web\RDWeb\Pages\en-US\login.aspx ในเครื่องมือแก้ไขข้อความใดๆ (ผมชอบ Notepad++)
- ไปที่บรรทัด 429 (ใน Windows Server 2022 ตั้งอยู่หลังบล็อก HTML ต่อไปนี้
<tr id="trPasswordExpiredNoChange" <%=strErrorMessageRowStyle%> > … </tr>) และวางโค้ดต่อไปนี้: <!-- Begin: Add Change Password Link -->
<tr>
<td align="right"> <a href="password.aspx" title="Change AD User Password">Click here </a>to change your password.
</td>
</tr>
<!-- End: Add Change Password Link -->- บันทึกการเปลี่ยนแปลงในไฟล์ login.aspx รีสตาร์ทเว็บไซต์ IIS และตรวจสอบว่าลิงก์ไปยังหน้าเปลี่ยนรหัสผ่านปรากฏบนหน้าล็อกอินของเซิร์ฟเวอร์ RD Web
ผู้ใช้ระยะไกลสามารถเปลี่ยนรหัสผ่านที่หมดอายุบนเซิร์ฟเวอร์ RDS ของคุณได้แล้วโดยไม่ต้องมีการแทรกแซงของผู้ดูแลระบบ โปรดทราบว่าหากคุณใช้ Cached Credentials ของโดเมนเพื่อล็อกอินเข้าคอมพิวเตอร์ท้องถิ่น พวกเขาจะไม่ได้รับการอัปเดตหลังจากที่คุณเปลี่ยนรหัสผ่าน Active Directory ผ่าน RDWebAccess