winlogon

Alternative Login to Windows With GINA

วันก่อนมีน้องมาถามเกี่ยวเรื่อง Senior Project คร่าวๆก็คือจะทำยังไงให้ใช้ RFID ในการล็อกอินเข้าใช้วินโดวส์

ความจริงแล้วแล้วน้องเค้าส่งเมล์มาถามสองสามอย่าง จับใจความได้ว่า เค้าจำเป็นจะต้องเขียน Windows Service ขึ้นมาหนึ่งตัว เพื่อทำหน้าที่นำข้อมูลที่ได้ไปตรวจสอบสิทธิกับเซิฟเวอร์กลาง ปัญหาแรกคือ เค้าไม่สามารถทำให้มันรันตอนก่อนล็อกอินได้

เนื่องจากช่วงนั้นกำลังยุ่งเลยทำตัวน่าประจานด้วยการไม่ได้ตอบกลับไป น้องก็ยังไม่ละความพยายามถามมาในเอ็มเอสเอ็น แต่คราวนี้น้องบอกว่าแก้ปัญหาคราวก่อนได้แล้ว ปัญหาใหม่คือ เค้าทำให้มันรันก่อนล้อกอินได้ แต่โปรแกรมจะโดน Winlogon ปิดให้เองอยู่ดี เอาล่ะสิ ตั้งแต่เกิดมาไม่เคยเขียน Windows Service ยังมาเจอปัญหาระดับนี้อีก แต่ด้วยความที่เมื่อสองอาทิตย์ก่อนได้หาวิธีเอา Trojan ออกจากเครื่องที่บ้านก็เลยพาลตอบไปทีเล่นทีจริงว่า "แล้ว Trojan มันทำงานยังไงล่ะ มันถึงเปิดโปรแกรมค้างไว้ตลอดได้ ลองทำแบบนั้นดูดิ" ตอนนั้นในหัวก็คิดอยู่แค่ว่า แล้วมันจะทำได้รึเปล่า เพราะจากการคาดเดา มันน่าจะทำงานคล้ายๆเครื่องอ่าน Barcode แล้วมันจะเอาไปใส่ช่องชื่อผู้ใช้และรหัสผ่านยังไง พอคิดๆไปก็ระลึกขึ้นได้ว่าเรากำลังให้คำแนะนำแบบผิดๆให้กับรุ่นน้องอยู่

ที่ว่าผิดไม่ใช่เพราะมันเป็นศาสตร์มืดหรอก แต่ว่าจุดประสงค์หลักคือการล็อกอินเข้าวินโดวส์ด้วย RFID สิ ก็เลยคิดว่านี่มันแก้ปัญหาปลายเหตุนี่หว่า คำถามที่ผุดขึ้นมาตอนนั้นคือ แล้วพวกที่ใช้ลายนิ้วมือน่ะ มันทำยังไง ถ้ามันทำได้ ทำไมเราจะทำไม่ได้ ก็ต้องขอบคุณ Google ที่ทำให้รู้ว่า Wikipedia มีคำตอบให้ โดยเจ้า GINA นี่จะเป็น Interface การทำ Authenticate ของวินโดวส์ ก็เลยบอกน้องไปว่า Service อะไรพวกนั้นมันอาจจะไม่จำเป็นแล้ว ใช้ GINA ตัวเดียวก็พอ แต่ใน Vista มันก็ไปใช้ Credential Provider แทน ฟังชื่อแล้วน่าจะเขียนง่ายกว่าเดิมล่ะมั้ง

พอเข้าไปเจอ Entry นี้ก็เลยจินตนาการออกมาว่า เราอาจจะเปลี่ยนไปใช้ OpenID หรือ Windows Live Passport ในการ Authenticate เข้าใช้งานเครื่องได้ด้วยการอิมพลีเมนต์ GINA ได้เหมือนกันสินะเนี่ย ใครสนใจก็ลองเข้าไปดูที่เว็บไซต์ของ pGINA ดูได้ หรือไม่ก็อ่านจาก MSDN Magazine ฉบับย้อนหลัง (ตอนที่ 1, ตอนที่ 2) เอาละกันเน่อ