วิธีการทํางานของการให้สิทธิ์ผู้ใช้

หากคุณยังไม่คุ้นเคยกับบริการ Google Identity หรือการให้สิทธิ์ ให้เริ่มด้วยการอ่านภาพรวม

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

ขอบเขตการตรวจสอบสิทธิ์เท่านั้น

ขอบเขตหลายส่วนใช้สำหรับการตรวจสอบสิทธิ์ผู้ใช้เท่านั้น: email, profile และ openid หากแอปใช้ขอบเขตเหล่านี้เท่านั้น โปรดพิจารณาว่าจะให้โทเค็นรหัส JWT และลงชื่อเข้าใช้ด้วย Google สำหรับการลงชื่อสมัครใช้และลงชื่อเข้าใช้ของผู้ใช้ตรงตามความต้องการของคุณหรือไม่ ในกรณีส่วนใหญ่ วิธีนี้เป็นวิธีที่ง่ายและสะดวกที่สุดในการตรวจสอบสิทธิ์ผู้ใช้

คำและแนวคิดที่สำคัญ

คู่มือเหล่านี้มีสมมติฐานว่าคุณมีความเข้าใจเบื้องต้นเกี่ยวกับแนวคิด OAuth 2.0 และมาตรฐาน IETF เช่น RFC6749 คำต่อไปนี้จะถูกใช้ในคู่มือการให้สิทธิ์

  • โทเค็นเพื่อการเข้าถึงคือข้อมูลเข้าสู่ระบบของผู้ใช้ที่มีอายุสั้น 1 คนซึ่งออกโดย Google เพื่อใช้เรียก Google APIs และเข้าถึงข้อมูลผู้ใช้อย่างปลอดภัย
  • รหัสการให้สิทธิ์เป็นรหัสชั่วคราวที่ Google ออกเพื่อระบุผู้ใช้ที่ลงชื่อเข้าใช้บัญชี Google จากเบราว์เซอร์อย่างปลอดภัย แพลตฟอร์มแบ็กเอนด์จะแลกเปลี่ยนโค้ดนี้เพื่อเข้าถึงและรีเฟรชโทเค็น
  • โทเค็นการรีเฟรชเป็นข้อมูลเข้าสู่ระบบของผู้ใช้ที่มีอายุยาวนานซึ่งออกโดย Google ซึ่งจะจัดเก็บไว้อย่างปลอดภัยในแพลตฟอร์มของคุณ และใช้รับโทเค็นเพื่อการเข้าถึงที่ถูกต้องใหม่แม้ในขณะที่ผู้ใช้ไม่ได้อยู่
  • ขอบเขตจะจำกัดโทเค็นให้กับข้อมูลผู้ใช้ตามที่กำหนดไว้และแบบจำกัด โปรดดูข้อมูลเพิ่มเติมที่หัวข้อขอบเขต OAuth 2.0 สำหรับ Google API
  • โหมดป๊อปอัปเป็นขั้นตอนรหัสการให้สิทธิ์ที่อิงตามโค้ดเรียกกลับของ JavaScript ที่ทำงานในเบราว์เซอร์ของผู้ใช้ Google จะเรียกใช้เครื่องจัดการโค้ดเรียกกลับซึ่งจะเป็นผู้รับผิดชอบในการส่งรหัสการตรวจสอบสิทธิ์ไปยังแพลตฟอร์มของคุณ การดำเนินการดังกล่าวขึ้นอยู่กับคุณ
  • โหมดการเปลี่ยนเส้นทางคือโฟลว์รหัสการให้สิทธิ์ที่ยึดตามการเปลี่ยนเส้นทาง HTTP ก่อนอื่น ระบบจะเปลี่ยนเส้นทาง User-agent ไปยัง Google การเปลี่ยนเส้นทางครั้งที่ 2 จาก Google ไปยังปลายทางรหัสการให้สิทธิ์ของแพลตฟอร์มจะมีรหัสอยู่ด้วย

อายุการใช้งานของโทเค็นจะกำหนดโดย Google ในฐานะผู้ออก ระยะเวลาที่แน่นอนอาจแตกต่างกันไปตามปัจจัยต่างๆ

ขั้นตอน OAuth 2.0

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

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

ไลบรารี JavaScript ของ Google Identity Services ปฏิบัติตามมาตรฐาน OAuth 2.0 เพื่อ

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

ขั้นตอนทั่วไป

ทั้งขั้นตอนของรหัสโดยนัยและรหัสการให้สิทธิ์จะเริ่มต้นในลักษณะเดียวกัน

  1. แอปของคุณขอเข้าถึงขอบเขตอย่างน้อย 1 ขอบเขต
  2. Google จะแสดงกล่องโต้ตอบความยินยอมแก่ผู้ใช้ และหากจำเป็น ให้ผู้ใช้ลงชื่อเข้าใช้บัญชี Google ของตนก่อน
  3. ผู้ใช้แต่ละรายอนุมัติขอบเขตที่ขอแต่ละรายการ

แต่ละขั้นตอนจะจบด้วยขั้นตอนที่ต่างกัน

เมื่อใช้ขั้นตอนการให้สิทธิ์โดยนัย

  • Google ใช้ตัวแฮนเดิลเรียกกลับเพื่อแจ้งแอปเกี่ยวกับผลลัพธ์ความยินยอมและแสดงผลโทเค็นเพื่อการเข้าถึงสําหรับขอบเขตที่ได้รับอนุมัติ

เมื่อใช้ขั้นตอนการใช้รหัสการให้สิทธิ์

  • Google จะตอบกลับด้วยรหัสการให้สิทธิ์ต่อผู้ใช้
    • ในโหมดเปลี่ยนเส้นทาง ระบบจะส่งรหัสกลับไปยังปลายทางรหัสการให้สิทธิ์ของแพลตฟอร์ม
    • ในโหมดป๊อปอัป โค้ดจะส่งกลับไปยังเครื่องจัดการโค้ดเรียกกลับของแอปในเบราว์เซอร์โดยที่ผู้ใช้ไม่จำเป็นต้องออกจากเว็บไซต์
  • เริ่มต้นที่ขั้นตอนที่ 4: จัดการการตอบสนองของเซิร์ฟเวอร์ OAuth 2.0 ที่แพลตฟอร์มแบ็กเอนด์จะแลกเปลี่ยนแบบเซิร์ฟเวอร์ต่อเซิร์ฟเวอร์กับ Google ให้เสร็จสมบูรณ์ ซึ่งจะส่งผลให้โทเค็นการรีเฟรชต่อผู้ใช้และโทเค็นเพื่อการเข้าถึงถูกส่งไปยังแพลตฟอร์มของคุณ

ก่อนได้รับโทเค็นเพื่อการเข้าถึง ผู้ใช้แต่ละคนต้องยินยอมให้แอปของคุณเข้าถึงขอบเขตที่ขอ โดย Google จะแสดงกล่องโต้ตอบความยินยอมในระหว่างขั้นตอนที่ 2 ด้านบน และบันทึกผลลัพธ์ใน myaccount.google.com/permissions

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

ในรูปที่ 1 กล่องโต้ตอบความยินยอมสำหรับขอบเขตเดียวจะปรากฏขึ้น เมื่อมีการขอขอบเขตเดียว ก็ไม่จำเป็นต้องมีช่องทำเครื่องหมายเพื่ออนุมัติหรือปฏิเสธขอบเขตนั้น

กล่องโต้ตอบความยินยอมของผู้ใช้ที่มีปุ่ม "ยกเลิก" หรือ "ดําเนินการต่อ" และขอบเขตเดียว จะไม่แสดงช่องทําเครื่องหมาย

รูปที่ 1: กล่องโต้ตอบความยินยอมของผู้ใช้ที่มีขอบเขตเดียว

ในรูปที่ 2 กล่องโต้ตอบความยินยอมสำหรับขอบเขตหลายขอบเขตจะปรากฏขึ้น เมื่อมีการขอขอบเขตมากกว่า 1 ขอบเขต ช่องทำเครื่องหมายแต่ละช่องจำเป็นต้องมีช่องทำเครื่องหมายเพื่ออนุญาตให้ผู้ใช้อนุมัติหรือปฏิเสธแต่ละขอบเขต

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

รูปที่ 2: กล่องโต้ตอบความยินยอมของผู้ใช้ที่มีหลายขอบเขต

บัญชีผู้ใช้

ต้องมีบัญชี Google เพื่อบันทึกความยินยอมและออกโทเค็นเพื่อการเข้าถึง ก่อนหน้านี้ ผู้ใช้แต่ละรายจะต้องตรวจสอบสิทธิ์ตนเองกับ Google โดยการลงชื่อเข้าใช้บัญชี Google

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

ตัวอย่างเช่น การใช้ฟีเจอร์ลงชื่อเข้าใช้ด้วย Google จะสร้างเซสชันบัญชี Google ที่ใช้งานอยู่เพื่อหลีกเลี่ยงไม่ให้ต้องแจ้งให้ผู้ใช้ลงชื่อเข้าใช้บัญชี Google ในภายหลังเมื่อส่งคำขอการให้สิทธิ์ หากคุณเลือกตรวจสอบสิทธิ์ผู้ใช้ของแอปด้วยวิธีอื่น เช่น ชื่อผู้ใช้และรหัสผ่าน หรือผู้ให้บริการข้อมูลประจำตัวรายอื่นๆ ผู้ใช้ดังกล่าวยังคงต้องลงชื่อเข้าใช้บัญชี Google เพื่อขอความยินยอมก่อน

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

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

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

ผู้ใช้สามารถดูหรือเพิกถอนความยินยอมได้ทุกเมื่อจากการตั้งค่าบัญชี Google

เว็บแอปหรือแพลตฟอร์มอาจเรียกใช้ google.accounts.oauth2.revoke เพื่อเพิกถอนโทเค็นและนำความยินยอมของผู้ใช้ออก ซึ่งจะเป็นประโยชน์เมื่อผู้ใช้ลบบัญชีออกจากแพลตฟอร์มของคุณ

ตัวเลือกการให้สิทธิ์อื่นๆ

หรือเบราว์เซอร์อาจได้รับโทเค็นเพื่อการเข้าถึงโดยใช้ขั้นตอนโดยนัยโดยเรียกใช้ปลายทาง OAuth 2.0 ของ Google โดยตรงตามที่อธิบายไว้ใน OAuth 2.0 สำหรับเว็บแอปพลิเคชันฝั่งไคลเอ็นต์

ในทำนองเดียวกัน สำหรับขั้นตอนรหัสการให้สิทธิ์ คุณอาจเลือกใช้วิธีการของคุณเองและทำตามขั้นตอนที่ระบุไว้ในการใช้ OAuth 2.0 สำหรับแอปพลิเคชันเว็บเซิร์ฟเวอร์

ในทั้ง 2 กรณี เราขอแนะนำให้ใช้ไลบรารี Google Identity Services เพื่อประหยัดเวลาในการพัฒนาและลดความเสี่ยงด้านความปลอดภัย ดังที่ได้อธิบายไว้ในแนวทางปฏิบัติแนะนำด้านความปลอดภัยของ OAuth 2.0