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

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

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

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

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

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

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