หน้านี้กล่าวถึงแนวทางปฏิบัติแนะนำทั่วไปบางส่วนสำหรับการผสานรวมกับ 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 ที่เหมาะสมเมื่อแอปพลิเคชันของคุณต้องใช้ฟังก์ชันการทำงาน
คุณไม่ควรขอสิทธิ์เข้าถึงข้อมูลเมื่อผู้ใช้ตรวจสอบสิทธิ์เป็นครั้งแรก เว้นแต่ว่าข้อมูลดังกล่าวจำเป็นต่อฟังก์ชันหลักของแอป ให้ขอเฉพาะขอบเขตที่เฉพาะเจาะจงซึ่งจําเป็นสําหรับงานตามหลักการเลือกขอบเขตที่แคบและจํากัดที่สุดเท่าที่จะเป็นไปได้
ขอขอบเขตในบริบทเสมอเพื่อช่วยให้ผู้ใช้ได้เข้าใจว่าเหตุใดแอปจึงขอสิทธิ์เข้าถึง และจะใช้ข้อมูลอย่างไร
ตัวอย่างเช่น แอปพลิเคชันอาจเป็นไปตามรูปแบบนี้
- ผู้ใช้ตรวจสอบสิทธิ์กับแอปของคุณ
- โดยระบบจะไม่ขอสิทธิ์เข้าถึงเพิ่มเติม แอปมีฟังก์ชันการทำงานพื้นฐานเพื่อให้ผู้ใช้สำรวจและใช้ฟีเจอร์ที่ไม่ต้องใช้ข้อมูลหรือการเข้าถึงเพิ่มเติม
- ผู้ใช้เลือกฟีเจอร์ที่ต้องเข้าถึงข้อมูลเพิ่มเติม
- แอปพลิเคชันของคุณส่งคําขอการให้สิทธิ์สําหรับขอบเขต OAuth ที่เฉพาะเจาะจงนี้ที่จําเป็นสําหรับฟีเจอร์นี้ หากฟีเจอร์นี้ต้องใช้ขอบเขตหลายรายการ ให้ทำตามแนวทางปฏิบัติแนะนำด้านล่าง
- หากผู้ใช้ปฏิเสธคำขอ แอปจะปิดใช้ฟีเจอร์นั้นและแสดงบริบทเพิ่มเติมให้ผู้ใช้เพื่อขอสิทธิ์เข้าถึงอีกครั้ง
จัดการความยินยอมสำหรับขอบเขตหลายรายการ
เมื่อขอขอบเขตหลายรายการพร้อมกัน ผู้ใช้อาจไม่ให้สิทธิ์ขอบเขต OAuth ทั้งหมดที่คุณขอ แอปควรจัดการกับการปฏิเสธขอบเขตด้วยการปิดใช้ฟังก์ชันการทำงานที่เกี่ยวข้อง
หากฟังก์ชันพื้นฐานของแอปต้องใช้ขอบเขตหลายรายการ ให้อธิบายเรื่องนี้ให้ผู้ใช้ทราบก่อนที่จะขอความยินยอม
คุณจะแสดงข้อความแจ้งให้ผู้ใช้อีกครั้งได้ก็ต่อเมื่อผู้ใช้แสดงเจตนาที่จะใช้ฟีเจอร์ที่เจาะจงซึ่งต้องใช้ขอบเขตอย่างชัดเจน แอปของคุณควรให้บริบทและเหตุผลที่เกี่ยวข้องแก่ผู้ใช้ก่อนที่จะขอขอบเขต OAuth
คุณควรลดจำนวนขอบเขตที่แอปขอพร้อมกัน แต่ให้ใช้การตรวจสอบสิทธิ์แบบเพิ่มทีละส่วนเพื่อขอขอบเขตในบริบทของฟีเจอร์และฟังก์ชันการทำงาน
ใช้เบราว์เซอร์ที่ปลอดภัย
บนเว็บ คุณต้องส่งคำขอการให้สิทธิ์ OAuth 2.0 จากเว็บเบราว์เซอร์ที่มีคุณสมบัติครบถ้วนเท่านั้น ในแพลตฟอร์มอื่นๆ โปรดเลือกประเภทไคลเอ็นต์ OAuth ที่ถูกต้องและผสานรวม OAuth ให้เหมาะสมกับแพลตฟอร์มของคุณ อย่าเปลี่ยนเส้นทางคำขอผ่านสภาพแวดล้อมการท่องเว็บที่ฝังอยู่ รวมถึง WebView บนแพลตฟอร์มอุปกรณ์เคลื่อนที่ เช่น WebView ใน Android หรือ WKWebView ใน iOS แต่ให้ใช้ไลบรารี OAuth ในตัวหรือ Google Sign-In สำหรับแพลตฟอร์มของคุณแทน
การสร้างและการกําหนดค่าไคลเอ็นต์ OAuth ด้วยตนเอง
ระบบจะไม่อนุญาตให้สร้างหรือแก้ไขไคลเอ็นต์ OAuth โดยใช้โปรแกรมเพื่อป้องกันการละเมิด คุณต้องใช้คอนโซลนักพัฒนาซอฟต์แวร์ของ Google เพื่อรับทราบข้อกำหนดในการให้บริการอย่างชัดเจน กำหนดค่าไคลเอ็นต์ OAuth และเตรียมพร้อมสำหรับการยืนยัน OAuth
สำหรับเวิร์กโฟลว์อัตโนมัติ ให้ลองใช้บัญชีบริการแทน
นำไคลเอ็นต์ OAuth ที่ไม่ได้ใช้ออก
ตรวจสอบไคลเอ็นต์ OAuth 2.0 เป็นประจําและลบไคลเอ็นต์ที่แอปพลิเคชันไม่จำเป็นต้องใช้แล้วหรือล้าสมัยแล้วออก การกำหนดค่าไคลเอ็นต์ที่ไม่ได้ใช้งานไว้อาจก่อให้เกิดความเสี่ยงด้านความปลอดภัย เนื่องจากอาจมีการใช้ไคลเอ็นต์ในทางที่ผิดหากข้อมูลเข้าสู่ระบบของไคลเอ็นต์ถูกบุกรุก
ระบบจะ ลบไคลเอ็นต์ OAuth 2.0 ที่ไม่ได้ใช้งานเป็นเวลา 6 เดือนโดยอัตโนมัติ เพื่อลดความเสี่ยงจากไคลเอ็นต์ที่ไม่ได้ใช้งาน
แนวทางปฏิบัติแนะนำคืออย่ารอการลบอัตโนมัติ แต่ให้นําไคลเอ็นต์ที่ไม่ได้ใช้ออกอย่างสม่ำเสมอ แนวทางปฏิบัตินี้ช่วยลดพื้นที่ในการโจมตีของแอปพลิเคชันและช่วยให้มีสุขอนามัยด้านความปลอดภัยที่ดี