หากคุณยังไม่คุ้นเคยกับบริการ 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 ขอบเขต
- Google จะแสดงกล่องโต้ตอบความยินยอมแก่ผู้ใช้ และหากจำเป็น ให้ผู้ใช้ลงชื่อเข้าใช้บัญชี Google ของตนก่อน
- ผู้ใช้แต่ละรายอนุมัติขอบเขตที่ขอแต่ละรายการ
แต่ละขั้นตอนจะจบด้วยขั้นตอนที่ต่างกัน
เมื่อใช้ขั้นตอนการให้สิทธิ์โดยนัย
- 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