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

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

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

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

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

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

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