แนวทางปฏิบัติแนะนำ

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

จัดการข้อมูลเข้าสู่ระบบของไคลเอ็นต์อย่างปลอดภัย

ข้อมูลเข้าสู่ระบบไคลเอ็นต์ OAuth จะระบุตัวตนของแอปและควรได้รับการจัดการอย่างระมัดระวัง เก็บข้อมูลเข้าสู่ระบบเหล่านี้ไว้ในพื้นที่เก็บข้อมูลที่ปลอดภัยเท่านั้น เช่น การใช้ Secret Manager อย่าง Secret Manager ของ Google Cloud อย่าฮาร์ดโค้ดข้อมูลเข้าสู่ระบบ คอมมิตข้อมูลไว้ในที่เก็บโค้ด หรือเผยแพร่ต่อสาธารณะ

จัดการโทเค็นของผู้ใช้อย่างปลอดภัย

โทเค็นผู้ใช้รวมถึงโทเค็นการรีเฟรชและโทเค็นเพื่อการเข้าถึงที่แอปพลิเคชันใช้ โปรดเก็บโทเค็นไว้อย่างปลอดภัยเมื่อไม่มีการเคลื่อนไหวและอย่าส่งเป็นข้อความธรรมดา ใช้ระบบพื้นที่เก็บข้อมูลที่ปลอดภัยซึ่งเหมาะสำหรับแพลตฟอร์มของคุณ เช่น Keystore บน Android, Keychain Services ใน iOS และ macOS หรือ Credential Locker ใน Windows

เพิกถอนโทเค็นทันทีที่ไม่จำเป็นต้องใช้อีกต่อไปและลบออกจากระบบอย่างถาวร

นอกจากนี้ ให้พิจารณาแนวทางปฏิบัติแนะนำต่อไปนี้สำหรับแพลตฟอร์มด้วย

  • สำหรับแอปพลิเคชันฝั่งเซิร์ฟเวอร์ที่จัดเก็บโทเค็นสำหรับผู้ใช้จำนวนมาก ให้เข้ารหัสผู้ใช้เมื่อไม่มีการเคลื่อนไหวและตรวจสอบว่าพื้นที่เก็บข้อมูลของคุณไม่ได้เข้าถึงอินเทอร์เน็ตแบบสาธารณะ
  • สำหรับแอปที่มาพร้อมเครื่องเดสก์ท็อป ขอแนะนำอย่างยิ่งให้ใช้โปรโตคอล Proof Key for Code Exchange (PKCE) เพื่อรับรหัสการให้สิทธิ์ที่แลกเปลี่ยนเป็นโทเค็นเพื่อการเข้าถึงได้

จัดการการเพิกถอนและการหมดอายุโทเค็นการรีเฟรช

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

ใช้การให้สิทธิ์ที่เพิ่มขึ้น

ใช้การให้สิทธิ์ที่เพิ่มขึ้นเพื่อขอขอบเขต OAuth ที่เหมาะสมเมื่อแอปพลิเคชันจำเป็นต้องใช้ฟังก์ชันการทำงาน

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

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

ตัวอย่างเช่น แอปพลิเคชันของคุณอาจมีรูปแบบดังนี้:

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

จัดการความยินยอมสำหรับขอบเขตหลายขอบเขต

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

หากฟังก์ชันการทำงานขั้นพื้นฐานของแอปต้องใช้ขอบเขตหลายขอบเขต ให้อธิบายเรื่องนี้ให้ผู้ใช้ทราบก่อนแจ้งให้ขอความยินยอม

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

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

ใช้เบราว์เซอร์ที่ปลอดภัย

สำหรับบนเว็บ คำขอการให้สิทธิ์ OAuth 2.0 จะต้องทำจากเว็บเบราว์เซอร์ที่มีฟีเจอร์ครบถ้วนเท่านั้น ในแพลตฟอร์มอื่นๆ ให้เลือกประเภทไคลเอ็นต์ OAuth ที่ถูกต้องและผสานรวม OAuth ให้เหมาะกับแพลตฟอร์มของคุณ อย่าเปลี่ยนเส้นทางคำขอผ่านสภาพแวดล้อมการท่องเว็บแบบฝัง ซึ่งรวมถึง WebView ในแพลตฟอร์มอุปกรณ์เคลื่อนที่ เช่น WebView ใน Android หรือ WKWebView ใน iOS แต่ให้ใช้ไลบรารี OAuth แบบเดิมหรือ Google Sign-In สำหรับแพลตฟอร์มของคุณแทน

การสร้างและกำหนดค่าไคลเอ็นต์ OAuth ด้วยตนเอง

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

สำหรับเวิร์กโฟลว์อัตโนมัติ ให้พิจารณาใช้บัญชีบริการแทน