การโอนการรับรองความถูกต้อง OAuth จากแอปมือถือไปยัง webview

ฉันกำลังดำเนินการใช้งาน OAuth ใน API ของโครงการของฉัน ในฐานะส่วนหนึ่งของโปรเจ็กต์นี้ เรามีแอปบนอุปกรณ์เคลื่อนที่ที่ตรวจสอบสิทธิ์ผู้ใช้ผ่าน API นี้ โดยใช้การให้สิทธิ์รหัสผ่าน (การให้สิทธิ์นี้จะส่งข้อมูลประจำตัวที่กำหนดไปยังเซิร์ฟเวอร์การตรวจสอบสิทธิ์อัปสตรีมที่ไม่ได้ใช้ OAuth ดังนั้นจึงจำเป็น) .

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

นี่คือที่มาของคำถามของฉัน เมื่อให้สิทธิ์เว็บไซต์ เรากำหนดให้ผู้ใช้ต้องได้รับการรับรองความถูกต้องด้วย API ของเราอย่างชัดเจน อย่างไรก็ตาม ผู้ใช้ได้รับการตรวจสอบสิทธิ์ผ่านการให้รหัสผ่านในแอป ไม่ใช่ใน WebView

เราจะถ่ายโอนการรับรองความถูกต้องจากแอปไปยัง API ได้อย่างไรเมื่อการรับรองความถูกต้องเสร็จสิ้นในแอป ความคิดของฉันคือการตั้งค่าคุกกี้ที่มีโทเค็นบนโดเมนของ API จะเป็นวิธีที่ดีที่สุดในการใช้งานหรือไม่

ขออภัยหากคำถามไม่ชัดเจนเท่าที่ควร ฉันกำลังดิ้นรนกับวิธีที่ดีที่สุดในการเรียบเรียงและอธิบายคำถามของฉัน


person garbetjie    schedule 30.10.2019    source แหล่งที่มา


คำตอบ (1)


เป็นคำถามที่ดี - ฉันเคยใช้สิ่งนี้ในอดีตผ่านรูปแบบกลยุทธ์:

  • เมื่อ webview โฮสต์อยู่ในเบราว์เซอร์ (ซึ่งเป็น SPA ในกรณีของฉัน) ให้จัดการโทเค็นในลักษณะ SPA มาตรฐาน - เช่นการต่ออายุโทเค็นบนการเปลี่ยนเส้นทางการเข้าสู่ระบบ iframe / เต็มหน้าจอ

  • เมื่อ webview โฮสต์อยู่ในแอปมือถือ ให้ตรวจจับสิ่งนี้ผ่านตัวแทนผู้ใช้และโทรกลับแอปมือถือเพื่อทำสิ่งต่าง ๆ เช่น รีเฟรชโทเค็นหรือเริ่มต้นการเข้าสู่ระบบมือถือใหม่

เป็นเรื่องยากแต่ก็สมเหตุสมผล เนื่องจากเว็บ/อุปกรณ์เคลื่อนที่มีโซลูชันที่แตกต่างกันมากสำหรับการต่ออายุโทเค็น/การจัดเก็บ/การเข้าสู่ระบบ

เป็นกรณีการใช้งานจริงที่ในทางปฏิบัติซึ่งคุณจะพบคำแนะนำทางออนไลน์แทบไม่ได้เลย ยินดีตอบทุกคำถามติดตามผล

person Gary Archer    schedule 30.10.2019
comment
เมื่อโฮสต์ไว้ในแอปบนอุปกรณ์เคลื่อนที่ คุณหมายถึงการเปิดเผยฟังก์ชันการทำงานแบบเนทีฟบางอย่างไปยัง webview ผ่านทาง JavaScript หรือไม่? - person garbetjie; 31.10.2019
comment
ใช่ - JavaScript พิจารณาว่ากำลังทำงานในมุมมองเว็บ จากนั้นจะเรียกแอปมือถือกลับมา ซึ่งสามารถทำสิ่งต่างๆ เช่น ใช้โทเค็นการรีเฟรชเพื่อรับโทเค็นการเข้าถึงใหม่และส่งคืนไปยังโค้ด JavaScript - person Gary Archer; 01.11.2019