AppModelV2: วิธีลงชื่อเข้าใช้ผู้ใช้โดยอัตโนมัติโดยใช้ Azure

ฉันกำลังลองใช้โมเดลใหม่สำหรับการรับรองความถูกต้องของแอปแบบรวมโดยใช้ Passport-azurea-ad จากการอ้างอิงนี้ https://docs.microsoft.com/en-us/azure/active-directory/active-directory-v2-devquickstarts-node-web

การรวมระบบสำเร็จ แต่ทุกครั้งที่ฉันเข้าสู่ระบบ ฉันจะถูกเปลี่ยนเส้นทางไปยังหน้าที่ฉันจะเลือกจากบัญชี Microsoft ที่มีอยู่หรือเพิ่มบัญชีใหม่ เหตุใดเซสชันหรือบัญชีจึงไม่ถูกรับโดยอัตโนมัติ หากผู้ใช้ลงชื่อเข้าใช้บัญชี Azure หรือ Microsoft อยู่แล้ว ข้อกำหนดของฉันคือควรเลือกเซสชันผู้ใช้โดยอัตโนมัติ (ไม่ใช่ครั้งแรกที่เขาให้ความยินยอม) หากเขาลงชื่อเข้าใช้บัญชี Azure หรือบัญชี micrososft ป้อนคำอธิบายรูปภาพที่นี่

จำเป็นต้องหลีกเลี่ยงหน้านี้ หากเขาลงชื่อเข้าใช้แล้ว




คำตอบ (1)


เหตุผลก็คือข้อจำกัดทางเทคนิค ให้ฉันดูว่าฉันสามารถอธิบายสั้น ๆ ได้หรือไม่:

  • เมื่อมีคำขอมาถึงปลายทาง v2 (login.microsoftonline.com) จุดสิ้นสุด v2 ไม่สามารถตรวจพบการมีอยู่ของเซสชันบัญชีผู้ใช้ทั่วไปที่มีอยู่ (login.live.com)
  • ดังนั้น ตำแหน่งข้อมูล v2 จะต้องทำการสืบค้น (ผ่าน iframe ที่โฮสต์บนหน้า login.microsoftonline.com) ไปยัง login.live.com เพื่อตรวจสอบว่ามีเซสชันผู้บริโภคอยู่หรือไม่
  • หากมีเซสชันผู้บริโภค จุดสิ้นสุด v2 ควรแสดงหน้าจอ 'การเลือกบัญชี' แก่ผู้ใช้ เช่นเดียวกับที่คุณอธิบายในคำถาม
  • หากไม่มีเซสชันผู้บริโภคอยู่ และผู้ใช้มีเซสชันธุรกิจเพียงเซสชันเดียว ผู้ใช้ก็สามารถเข้าสู่ระบบอัตโนมัติด้วยบัญชีธุรกิจนั้นได้ อย่างไรก็ตาม ในเวลานี้ ผู้ใช้น่าจะรอประมาณหนึ่งวินาทีเพื่อให้ข้อความค้นหาใน login.live.com เสร็จสมบูรณ์ ผู้ใช้อาจได้รับประสบการณ์ที่แปลกหากหน้าเว็บเติมข้อมูลอัตโนมัติหลังจากผ่านไปหนึ่งวินาที

จุดสิ้นสุด v2 สามารถแสดงตัวหมุนกำลังโหลดหรือบางสิ่งที่จะระงับผู้ใช้ไว้จนกว่าจะทำการตัดสินใจได้อย่างแน่นอน แต่มีการตัดสินใจว่าการให้ผู้ใช้คลิกไทล์เป็นทางเลือกที่ยอมรับได้

person dstrockis    schedule 28.11.2016
comment
@dstrockis แอปที่ต้องการการรับรองความถูกต้องสามารถส่งชื่อผู้ใช้ที่ทราบล่าสุดไปยังปลายทาง v2 เป็นพารามิเตอร์ (แม้ว่าจะเป็นบัญชีผู้ใช้ทั่วไปหรือไม่ก็ตาม) และปลายทางสามารถพยายามตรวจสอบก่อนว่าผู้ใช้นั้นมีเซสชันที่ใช้งานอยู่และเข้าสู่ระบบอัตโนมัติหรือไม่ นี่จะเป็นทางเลือกที่เป็นไปได้หรือไม่? - person Sameera; 29.11.2016
comment
ใช่! ลองใช้พารามิเตอร์การค้นหา &login_hint= ควรมีลักษณะการทำงานตรงตามที่คุณอธิบาย - person dstrockis; 29.11.2016
comment
ฉันควรเพิ่มเติมด้วยว่าหากคุณใช้ตำแหน่งข้อมูล /consumers หรือ /organizations SSO จะเกิดขึ้นโดยอัตโนมัติเมื่อมีการลงชื่อเข้าใช้บัญชีเดียว - person dstrockis; 29.11.2016
comment
@dstockis - หากความเข้าใจของฉันถูกต้อง login_hint จะกรอกอีเมลล่วงหน้าเท่านั้น แต่จะไม่รับบัญชีและเข้าสู่ระบบอัตโนมัติใช่ไหม และสำหรับการเข้าสู่ระบบอัตโนมัติหากฉันใช้พรอมต์พารามิเตอร์การค้นหา: ไม่มี มันยังคงแสดงหน้าการเลือกสำหรับบัญชีต่างๆ คุณช่วยอธิบายเรื่องนี้หน่อยได้ไหม อ้างอิงจาก docs.microsoft com/en-us/azure/active-directory/ - person Shakthi; 30.11.2016