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

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

จากนั้นแต่ละขั้นตอนจะเสร็จสิ้นด้วยขั้นตอนที่ต่างกัน

เมื่อใช้ขั้นตอนแบบไม่เจาะจงปลายทาง

  • 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 ในปัจจุบัน