ฉันสงสัยว่าฉันควรใช้โปรโตคอลCASหรือOAuth + ผู้ให้บริการการพิสูจน์ตัวตนบางรายสำหรับการลงชื่อเข้าใช้ครั้งเดียวหรือไม่
ตัวอย่างสถานการณ์:
- ผู้ใช้พยายามเข้าถึงทรัพยากรที่มีการป้องกัน แต่ไม่ได้รับการรับรองความถูกต้อง
- แอปพลิเคชันเปลี่ยนเส้นทางผู้ใช้ไปยังเซิร์ฟเวอร์ SSO
- หากการผึ้งรับรองความถูกต้องผู้ใช้จะได้รับโทเค็นจากเซิร์ฟเวอร์ SSO
- SSO เปลี่ยนเส้นทางไปยังแอปพลิเคชันดั้งเดิม
- แอปพลิเคชันดั้งเดิมตรวจสอบโทเค็นกับเซิร์ฟเวอร์ SSO
- หากโทเค็นตกลงการเข้าถึงจะได้รับอนุญาตและแอปพลิเคชันจะรู้รหัสผู้ใช้
- ผู้ใช้ทำการล็อกเอาต์และออกจากแอพพลิเคชั่นที่เชื่อมต่อทั้งหมดพร้อมกัน (การลงชื่อออกครั้งเดียว)
เท่าที่ฉันเข้าใจว่าเป็นสิ่งที่ CAS คิดค้นขึ้นมา ลูกค้า CAS ต้องใช้โปรโตคอล CAS เพื่อใช้บริการตรวจสอบความถูกต้อง ตอนนี้ฉันสงสัยว่าจะใช้ CAS หรือ OAuth ที่ไซต์ลูกค้า (ผู้บริโภค) OAuth เป็นส่วนทดแทนสำหรับ CAS นั้นหรือไม่ OAuth ในฐานะมาตรฐานความเป็นจริงใหม่ควรเป็นที่ต้องการหรือไม่ มีการใช้งานง่าย (ไม่ใช่ Sun OpenSSO!) แทนส่วนการรับรองความถูกต้องของ CAS ที่รองรับวิธีการที่แตกต่างกันเช่นชื่อผู้ใช้ / รหัสผ่าน OpenID ใบรับรอง TLS ... หรือไม่
บริบท:
- แอปพลิเคชันที่แตกต่างกันควรใช้การรับรองความถูกต้องของเซิร์ฟเวอร์ SSO และควรใช้บางสิ่งที่เหมือนเซสชัน
- แอปพลิเคชั่นสามารถเป็นเว็บแอปพลิเคชัน GUI หรือ (REST) serivces
- เซิร์ฟเวอร์ SSO จะต้องระบุรหัสผู้ใช้ซึ่งจำเป็นต้องได้รับข้อมูลเพิ่มเติมเกี่ยวกับผู้ใช้เช่นบทบาทอีเมลและอื่น ๆ จากที่เก็บข้อมูลผู้ใช้ส่วนกลาง
- การลงชื่อออกครั้งเดียวควรเป็นไปได้
- ลูกค้าส่วนใหญ่เขียนด้วยภาษาจาวาหรือ PHP
ฉันเพิ่งค้นพบ WRAPซึ่งสามารถเป็นผู้สืบทอด OAuth ได้ เป็นโปรโตคอลใหม่ที่ระบุโดย Microsoft, Google และ Yahoo
ภาคผนวก
ฉันได้เรียนรู้ว่า OAuth ไม่ได้ออกแบบมาสำหรับการรับรองความถูกต้องแม้ว่าจะสามารถใช้ในการใช้งาน SSO ได้ แต่ร่วมกับบริการ SSO อย่าง OpenID เท่านั้น
OpenID ดูเหมือนว่าฉันจะเป็น "CAS ใหม่" CAS มีคุณลักษณะบางอย่างที่พลาดไปจาก OpenID (เช่นการลงชื่อออกครั้งเดียว) แต่ก็ไม่ควรที่จะเพิ่มส่วนที่ขาดหายไปในสถานการณ์เฉพาะ ฉันคิดว่า OpenID ได้รับการยอมรับอย่างกว้างขวางและเป็นการดีกว่าที่จะรวม OpenID เข้ากับแอพพลิเคชันหรือเซิร์ฟเวอร์แอปพลิเคชัน ฉันรู้ว่า CAS ยังรองรับ OpenID ด้วย แต่ฉันคิดว่า CAS สามารถใช้กับ OpenID ได้