ถ้าคุณยังไม่คุ้นเคยกับบริการของ Google Identity หรือการให้สิทธิ์ ให้เริ่มต้นโดยอ่านภาพรวม
Google มีไลบรารี JavaScript ที่มีคุณลักษณะการให้สิทธิ์เพื่อช่วยคุณจัดการขอบเขต ขอคํายินยอมจากผู้ใช้ และทํางานกับขั้นตอน OAuth 2.0 แบบมาตรฐานได้ง่ายขึ้น เว็บแอปพลิเคชันที่ทํางานในเบราว์เซอร์ของผู้ใช้จะใช้ไลบรารีนี้จัดการโฟลว์ OAuth 2.0 โดยนัย หรือเริ่มขั้นตอนรหัสการให้สิทธิ์ที่เสร็จสิ้นในแพลตฟอร์มแบ็กเอนด์
ขอบเขตในการตรวจสอบสิทธิ์เท่านั้น
ขอบเขตหลายรายการจะใช้สําหรับการตรวจสอบสิทธิ์ผู้ใช้เท่านั้น ได้แก่ email
, profile
และ openid
หากแอปใช้เฉพาะขอบเขตเหล่านี้ ให้พิจารณาการใช้โทเค็น JWT ID และการลงชื่อเข้าใช้ด้วย Google สําหรับการลงชื่อสมัครใช้และลงชื่อเข้าใช้ ในกรณีส่วนใหญ่ วิธีนี้เป็นวิธีที่ง่ายและ
ง่ายที่สุดสําหรับการตรวจสอบสิทธิ์ของผู้ใช้
คําและแนวคิดหลัก
คู่มือเหล่านี้มีไว้เพื่อให้คุณมีความเข้าใจเบื้องต้นเกี่ยวกับแนวคิด OAuth 2.0 และมาตรฐาน IETF เช่น RFC6749 คําศัพท์ต่อไปนี้ถูกนํามาใช้ตลอดคู่มือการให้สิทธิ์:
- โทเค็นเพื่อการเข้าถึงคือข้อมูลเข้าสู่ระบบสั้นๆ ต่อผู้ใช้ซึ่งออกโดย Google ซึ่งใช้เพื่อเรียก Google API และเข้าถึงข้อมูลผู้ใช้อย่างปลอดภัย
- รหัสการให้สิทธิ์ คือรหัสชั่วคราวที่ Google ออกให้เพื่อระบุผู้ใช้แต่ละรายที่ลงชื่อเข้าใช้บัญชี Google จากเบราว์เซอร์ได้อย่างปลอดภัย แพลตฟอร์มแบ็กเอนด์จะแลกเปลี่ยนโค้ดนี้สําหรับการเข้าถึงและรีเฟรชโทเค็น
- โทเค็นการรีเฟรชคือข้อมูลเข้าสู่ระบบที่มีอายุยาวนานต่อผู้ใช้หนึ่งรายที่ออกโดย Google ซึ่งได้รับการจัดเก็บไว้บนแพลตฟอร์มอย่างปลอดภัย และสามารถใช้เพื่อขอโทเค็นเพื่อการเข้าถึงอันใหม่ที่ถูกต้องได้แม้ว่าผู้ใช้จะไม่ได้อยู่ก็ตาม
- ขอบเขตจํากัดโทเค็นไว้ที่ปริมาณข้อมูลผู้ใช้ที่กําหนดไว้และที่จํากัด โปรดดูที่ขอบเขต OAuth 2.0 สําหรับ Google APIs สําหรับข้อมูลเพิ่มเติม
- โหมดป๊อปอัปคือขั้นตอนรหัสการให้สิทธิ์โดยอิงตามโค้ดเรียกกลับ JavaScript ที่ทํางานในเบราว์เซอร์ของผู้ใช้ Google จะเรียกใช้เครื่องจัดการการเรียกกลับ ซึ่งมีหน้าที่ส่งรหัสการตรวจสอบสิทธิ์ไปยังแพลตฟอร์มของคุณ โดยขึ้นอยู่กับการดําเนินการของคุณ
- โหมดเปลี่ยนเส้นทางคือขั้นตอนรหัสการให้สิทธิ์ตามการเปลี่ยนเส้นทาง HTTP User-agent จะเปลี่ยนเส้นทางไปยัง Google ก่อน ส่วนการเปลี่ยนเส้นทางครั้งที่ 2 จาก Google ไปยังปลายทางของรหัสการให้สิทธิ์ของแพลตฟอร์มรวมถึงโค้ดดังกล่าว
Google จะเป็นผู้กําหนดอายุการใช้งานของโทเค็นในฐานะผู้ออก ระยะเวลาที่แน่นอนอาจแตกต่างกันไป เนื่องจากหลายปัจจัย
ขั้นตอน OAuth 2.0
กระบวนการจะมีสองขั้นตอน ทั้งโดยนัยและรหัสการให้สิทธิ์ โทเค็นการเข้าถึงทั้ง 2 รายการ สามารถใช้ร่วมกับ Google API ได้
เราขอแนะนําให้ใช้ขั้นตอนของการให้สิทธิ์ เนื่องจากจะมีการปรับปรุงความปลอดภัยของผู้ใช้ ขั้นตอนนี้ยังแสดงผลโทเค็นการรีเฟรชซึ่งใช้เพื่อรับโทเค็นการเข้าถึงได้โดยไม่ต้องมีผู้ใช้อยู่ในขณะนั้น ซึ่งทําให้แพลตฟอร์มดําเนินการแบบไม่พร้อมกันได้ง่ายขึ้น เช่น ส่งการช่วยเตือนทาง SMS ของการประชุมที่จะมาถึงซึ่งกําหนดไว้ในนาทีสุดท้าย เลือกรูปแบบการให้สิทธิ์ อธิบายความแตกต่างระหว่างขั้นตอนทั้งสองโดยละเอียด
ไลบรารี JavaScript ของ Google Identity Services เป็นไปตามมาตรฐาน OAuth 2.0 สําหรับ:
- จัดการขั้นตอนโดยนัยในการทําให้เว็บแอปในเบราว์เซอร์ของคุณได้รับโทเค็นเพื่อการเข้าถึงจาก Google ซึ่งจําเป็นในการเรียก Google API ได้อย่างรวดเร็วและง่ายดาย
- เริ่มขั้นตอนรหัสการให้สิทธิ์จากเบราว์เซอร์ของผู้ใช้
ขั้นตอนทั่วไป
ขั้นตอนทั้งโดยนัยและรหัสการให้สิทธิ์เริ่มต้นในลักษณะเดียวกัน
- แอปของคุณขอสิทธิ์เข้าถึงขอบเขตอย่างน้อย 1 ขอบเขต
- Google จะแสดงกล่องโต้ตอบคํายินยอมแก่ผู้ใช้และหากจําเป็นให้ผู้ใช้ลงชื่อเข้าใช้บัญชี Google ก่อน
- ผู้ใช้อนุมัติขอบเขตที่ขอแต่ละรายการแยกกัน
จากนั้นแต่ละขั้นตอนจะเสร็จสิ้นด้วยขั้นตอนที่ต่างกัน
เมื่อใช้ขั้นตอนแบบไม่เจาะจงปลายทาง
- Google จะใช้เครื่องจัดการการโทรกลับเพื่อแจ้งผลการขอคํายินยอมของแอป และแสดงโทเค็นเพื่อการเข้าถึงสําหรับขอบเขตที่อนุมัติ
เมื่อใช้ขั้นตอนการตรวจสอบสิทธิ์
- Google จะตอบกลับด้วยรหัสการให้สิทธิ์ต่อผู้ใช้ดังนี้
- ในโหมดเปลี่ยนเส้นทาง ระบบจะส่งรหัสกลับไปยังปลายทางรหัสการให้สิทธิ์ของแพลตฟอร์ม
- ในโหมดป๊อปอัป โค้ดจะถูกส่งกลับไปยังเครื่องจัดการการเรียกกลับของแอปในเบราว์เซอร์ โดยที่ผู้ใช้ไม่จําเป็นต้องออกจากเว็บไซต์ของคุณ
- เริ่มตั้งแต่ ขั้นตอนที่ 4: จัดการการตอบสนองของเซิร์ฟเวอร์ OAuth 2.0 แพลตฟอร์มแบ็กเอนด์จะแลกเปลี่ยน Exchange ระหว่างเซิร์ฟเวอร์กับ Google ในที่สุดแล้วจึงส่งโทเค็นการรีเฟรชต่อผู้ใช้และโทเค็นเพื่อการเข้าถึงกลับไปยังแพลตฟอร์มของคุณ
คำยินยอมของผู้ใช้
ผู้ใช้ต้องให้คํายินยอมสําหรับแอปเพื่อเข้าถึงขอบเขตที่ขอก่อนจึงจะรับโทเค็นเพื่อการเข้าถึงได้ ในการดําเนินการนี้ Google จะแสดงกล่องโต้ตอบคํายินยอมระหว่างขั้นตอนที่ 2 ด้านบนและบันทึกผลลัพธ์ใน myaccount.google.com/permissions
ชื่อแอป โลโก้ นโยบายความเป็นส่วนตัว ข้อกําหนดในการให้บริการ และขอบเขตที่ขอจะปรากฏให้ผู้ใช้เห็นพร้อมตัวเลือกในการอนุมัติหรือยกเลิกคําขอ
รูปที่ 1 กล่องโต้ตอบความยินยอมสําหรับขอบเขตเดียวจะปรากฏขึ้น เมื่อมีการขอขอบเขตเดียว ไม่จําเป็นต้องมีช่องทําเครื่องหมายเพื่ออนุมัติหรือปฏิเสธขอบเขต
รูปที่ 1: กล่องโต้ตอบขอคํายินยอมของผู้ใช้ที่มีขอบเขตเดียว
รูปที่ 2 กล่องโต้ตอบคํายินยอมสําหรับขอบเขตหลายรายการจะปรากฏขึ้น เมื่อมีการขอขอบเขตมากกว่า 1 ขอบเขตช่องทําเครื่องหมายจําเป็นต้องมีเพื่ออนุญาตให้ผู้ใช้อนุมัติหรือปฏิเสธแต่ละขอบเขต
รูปที่ 2: กล่องโต้ตอบคํายินยอมของผู้ใช้ซึ่งมีหลายขอบเขต
บัญชีผู้ใช้
ต้องมีบัญชี Google เพื่อบันทึกคํายินยอมและออกโทเค็นเพื่อการเข้าถึง ก่อนหน้านี้ ผู้ใช้ต้องตรวจสอบสิทธิ์ Google เอง โดยลงชื่อเข้าใช้บัญชี Google
แม้เราจะไม่ได้บังคับข้อกําหนด แต่เราขอแนะนําให้คุณ ใช้การลงชื่อเข้าใช้ด้วย Google ในการลงชื่อสมัครใช้และลงชื่อเข้าใช้เว็บแอปหรือแพลตฟอร์มแบ็กเอนด์ ซึ่งจะช่วยลดความยุ่งยากของผู้ใช้โดยลดจํานวนขั้นตอนที่จําเป็นและช่วยให้คุณเชื่อมโยงโทเค็นเพื่อการเข้าถึงกับบัญชีบุคคลธรรมดาบนแพลตฟอร์มได้อย่างง่ายดาย
ตัวอย่างเช่น การใช้การลงชื่อเข้าใช้ด้วย Google จะเป็นการสร้างเซสชันบัญชี Google ที่ใช้งานอยู่ ทําให้ไม่ต้องให้ผู้ใช้ลงชื่อเข้าใช้บัญชี Google ในภายหลังเมื่อส่งคําขอการให้สิทธิ์ หากเลือกที่จะตรวจสอบสิทธิ์ผู้ใช้ในแอปด้วยวิธีอื่น เช่น ชื่อผู้ใช้และรหัสผ่าน หรือผู้ให้บริการข้อมูลประจําตัวอื่นๆ ผู้ให้บริการดังกล่าวยังคงต้องลงชื่อเข้าใช้บัญชี Google เพื่อขอคํายินยอมก่อน
การเพิ่มคําแนะนําการเข้าสู่ระบบระหว่างการเริ่มต้นการให้สิทธิ์ ซึ่งโดยทั่วไปจะเป็นที่อยู่อีเมลของบัญชี Google ของผู้ใช้ ทําให้ Google ข้ามการแสดงผลตัวเลือกบัญชีผู้ใช้ ซึ่งจะช่วยประหยัดเวลาให้ผู้ใช้ได้ ข้อมูลรับรองของโทเค็นรหัสที่ลงชื่อเข้าใช้ด้วย Google จะมีที่อยู่อีเมลของผู้ใช้
เว็บแอปที่ทํางานในเบราว์เซอร์เท่านั้นอาจใช้การตรวจสอบสิทธิ์ของ Google เพียงอย่างเดียว เพื่อเลือกที่จะไม่ใช้ระบบการจัดการบัญชีผู้ใช้ ในสถานการณ์นี้ ที่รู้จักกันว่ากระบวนการโดยนัย ไม่จําเป็นต้องเชื่อมโยงโทเค็นการรีเฟรชกับบัญชีผู้ใช้และการจัดการพื้นที่เก็บข้อมูลที่ปลอดภัย
หรือกระบวนการของรหัสการให้สิทธิ์จะต้องใช้ระบบบัญชีผู้ใช้ โทเค็นการรีเฟรชต่อผู้ใช้จะต้องเชื่อมโยงกับบัญชีบุคคลธรรมดาบนแพลตฟอร์มแบ็กเอนด์ และจัดเก็บไว้ใช้ในภายหลัง สําหรับวิธีการติดตั้ง ทํางาน และจัดการระบบบัญชีผู้ใช้นั้นไม่เหมือนใครในแพลตฟอร์มของคุณ และไม่มีการพูดคุยเรื่องรายละเอียดเพิ่มเติม
การดูและการเพิกถอนคํายินยอม
ผู้ใช้สามารถดูหรือเพิกถอนคํายินยอมได้ทุกเมื่อจากการตั้งค่าบัญชี Google
(ไม่บังคับ) เว็บแอปหรือแพลตฟอร์มของคุณจะเรียก
google.accounts.oauth2.revoke
เพื่อเพิกถอนโทเค็นและนําคํายินยอมของผู้ใช้ออก ซึ่งมีประโยชน์เมื่อผู้ใช้ลบบัญชีออกจากแพลตฟอร์ม
ตัวเลือกการให้สิทธิ์อื่นๆ
หรือเบราว์เซอร์อาจรับโทเค็นเพื่อการเข้าถึงโดยใช้ขั้นตอนโดยนัยโดยการเรียกใช้ปลายทาง OAuth 2.0 ของ Google โดยตรงตามที่อธิบายไว้ใน OAuth 2.0 สําหรับเว็บแอปพลิเคชันฝั่งไคลเอ็นต์
ในทํานองเดียวกัน สําหรับขั้นตอนรหัสการให้สิทธิ์ คุณอาจเลือกใช้วิธีของตนเองและทําตามขั้นตอนที่ระบุไว้ในการใช้ OAuth 2.0 สําหรับแอปพลิเคชันเว็บเซิร์ฟเวอร์
ในทั้ง 2 กรณี เราขอแนะนําอย่างยิ่งให้ใช้ไลบรารีบริการข้อมูลประจําตัวของ Google เพื่อลดความเสี่ยงและเวลาในการพัฒนาซอฟต์แวร์ และลดความเสี่ยงด้านความปลอดภัย เช่น กรณีที่มีคําอธิบายโดยแนวทางปฏิบัติที่ดีที่สุดด้านความปลอดภัย OAuth 2.0 ในปัจจุบัน