เราได้เปิดตัว Google Identity Toolkit เวอร์ชันใหม่ล่าสุดเป็น Identity Platform และ Firebase Authentication นับจากนี้เป็นต้นไป งานฟีเจอร์ใน Identity Toolkit จะถูกระงับชั่วคราว การพัฒนาฟีเจอร์ใหม่ทั้งหมดจะดำเนินการใน Identity Platform และ Firebase การตรวจสอบสิทธิ์ เราขอแนะนำให้นักพัฒนา Identity Toolkit เปลี่ยนมาใช้แพลตฟอร์มเหล่านี้ทันทีที่สามารถนำไปใช้งานได้จริง
ฟีเจอร์ใหม่
Identity Platform มีการปรับปรุงฟีเจอร์ที่สำคัญมากกว่า Google Identity Toolkit อยู่แล้ว
คอนโซลผู้ดูแลระบบแบบใหม่
Identity Platform มี แผงควบคุมสำหรับนักพัฒนาซอฟต์แวร์แบบใหม่ ที่ช่วยให้คุณดู แก้ไข และลบผู้ใช้ได้ ซึ่งอาจเป็นประโยชน์ในการแก้ไขข้อบกพร่องของขั้นตอนการลงชื่อเข้าใช้และการลงชื่อสมัครใช้ คอนโซลยังช่วยให้คุณกำหนดค่าวิธีการตรวจสอบสิทธิ์และปรับแต่งเทมเพลตอีเมลได้ด้วย
วิธีการตรวจสอบสิทธิ์แบบใหม่
Identity Platform รองรับมาตรฐานการรวมศูนย์ขององค์กร เช่น SAML และ OIDC ซึ่งช่วยให้คุณปรับขนาดแอปและบริการ SaaS ได้ Identity Platform ยังรองรับผู้ให้บริการ เช่น GitHub, Microsoft, Yahoo และอื่นๆ คุณสามารถใช้การลงชื่อเข้าใช้แบบไม่ระบุชื่อเพื่อสร้างรหัสผู้ใช้ที่ไม่ซ้ำโดยไม่ต้องกำหนดให้ผู้ใช้ลงชื่อเข้าใช้หรือลงชื่อสมัครใช้ การทำเช่นนี้จะช่วยให้คุณเรียกใช้ API ที่ตรวจสอบสิทธิ์แล้วได้เช่นเดียวกับที่ทำกับผู้ใช้ทั่วไป เมื่อผู้ใช้ตัดสินใจลงชื่อสมัครใช้บัญชี กิจกรรมทั้งหมดจะยังคงอยู่โดยใช้รหัสผู้ใช้เดียวกัน ซึ่งมีประโยชน์ในสถานการณ์อย่างเช่น รถเข็นช็อปปิ้งฝั่งเซิร์ฟเวอร์หรือแอปพลิเคชันอื่นๆ ที่คุณต้องการดึงดูดผู้ใช้ก่อนที่จะส่งผู้ใช้ผ่านขั้นตอนการลงชื่อสมัครใช้
ปรับขนาดได้อย่างมั่นใจด้วยข้อตกลงระดับการให้บริการและการสนับสนุนระบบคลาวด์
Identity Platform สร้างขึ้นบนโครงสร้างพื้นฐานของ Google ที่เชื่อถือได้ และให้ข้อตกลงระดับการให้บริการและการสนับสนุนจาก Google Cloud ซึ่งหมายความว่าคุณจะปรับขนาดบริการได้อย่างมั่นใจ และอาศัย Google เพื่อมอบความยืดหยุ่น ความพร้อมใช้งาน และความสามารถในการปรับขนาดอย่างที่คุณต้องการ
สิทธิ์เข้าถึง Firebase ทั้งหมด
Firebase เป็นแพลตฟอร์มอุปกรณ์เคลื่อนที่ที่ช่วยให้คุณพัฒนาแอปคุณภาพสูง ขยายฐานผู้ใช้ และสร้างรายได้เพิ่มขึ้นได้อย่างรวดเร็ว Firebase ประกอบด้วย ฟีเจอร์เสริมที่คุณสามารถเลือกใช้ให้เข้ากับความต้องการ และ มีโครงสร้างพื้นฐานสำหรับ Analytics บนอุปกรณ์เคลื่อนที่ การรับส่งข้อความในระบบคลาวด์ ฐานข้อมูลแบบเรียลไทม์ พื้นที่เก็บข้อมูลไฟล์ โฮสติ้งแบบคงที่ การกำหนดค่าระยะไกล การรายงานข้อขัดข้องอุปกรณ์เคลื่อนที่ และ Android ทดสอบการทดสอบ
UI ที่อัปเดตแล้ว
เราได้สร้างขั้นตอน UI ขึ้นใหม่ทั้งหมดโดยอิงตามการวิจัย UX ล่าสุดของ Google ซึ่งรวมถึงการกู้คืนรหัสผ่าน การลิงก์บัญชี ขั้นตอนการชี้แจงบัญชีใหม่/ที่มีอยู่ที่มักใช้เวลานานในการเขียนโค้ดและแก้ไขข้อบกพร่อง ผสานรวม Smart Lock สำหรับรหัสผ่าน บน Android ซึ่งช่วยปรับปรุง Conversion การลงชื่อเข้าใช้และการลงชื่อสมัครใช้ สำหรับแอปที่เข้าร่วมได้อย่างมาก นอกจากนี้ ยังรองรับการแก้ไขธีมง่ายๆ เพื่อให้เหมาะกับแอปพลิเคชันของคุณ และหากต้องการความสามารถในการปรับแต่งสูงสุด เวอร์ชัน Android และ iOS จึงเป็นโอเพนซอร์ส
การตั้งค่าเซิร์ฟเวอร์ที่ง่ายขึ้น
เราเห็นว่านักพัฒนาซอฟต์แวร์จำนวนมากเลือกที่จะไม่ใช้ขั้นตอนการกู้คืนบัญชี ทำให้ผู้ใช้ไม่สามารถกู้คืนบัญชีได้หากลืมรหัสผ่าน Identity Platform สามารถ ส่งการยืนยันอีเมล รีเซ็ตรหัสผ่าน และข้อความรหัสผ่านที่เปลี่ยนแปลงไปให้กับผู้ใช้ และสามารถปรับแต่งข้อความสำหรับผู้ใช้ของคุณได้อย่างง่ายดาย นอกจากนี้ คุณไม่จําเป็นต้องโฮสต์วิดเจ็ต UI สําหรับการเปลี่ยนเส้นทางโฮสต์และดำเนินการเปลี่ยนรหัสผ่านให้เสร็จเรียบร้อยอีกต่อไป
SDK ใหม่
ตอนนี้ API เซิร์ฟเวอร์ของ Identity Toolkit ทั้งหมดมีให้บริการแล้วภายในไลบรารีของไคลเอ็นต์ของเรา (Android, iOS, เว็บ) นักพัฒนาซอฟต์แวร์จะลงชื่อเข้าใช้และลงชื่อสมัครใช้สำหรับผู้ใช้ทั้งเก่าและใหม่ เข้าถึงพร็อพเพอร์ตี้ผู้ใช้ ลิงก์ อัปเดต และลบบัญชี รีเซ็ตรหัสผ่าน และอื่นๆ ได้โดยไม่ต้องเชื่อมโยงกับ UI แบบคงที่ หากต้องการ คุณสามารถสร้างขั้นตอนการลงชื่อเข้าใช้ทั้งหมดด้วยตนเอง พร้อมสัมผัสประสบการณ์การใช้งานนอกเหนือจาก API นี้
การจัดการเซสชันสำหรับแอปบนอุปกรณ์เคลื่อนที่
เมื่อใช้ Identity Toolkit แอปจะสร้างสถานะเซสชันของตนเองตามเหตุการณ์การตรวจสอบสิทธิ์เริ่มแรกจาก Identity Toolkit Identity Platform ใช้บริการแบ็กเอนด์ที่ใช้โทเค็นการรีเฟรช ที่สร้างจากเหตุการณ์การตรวจสอบสิทธิ์ และแลกเปลี่ยนเป็นโทเค็นเพื่อการเข้าถึงความยาว 1 ชั่วโมงสำหรับ Android, iOS และ JavaScript เมื่อผู้ใช้เปลี่ยนรหัสผ่าน โทเค็นการรีเฟรชจะไม่สามารถสร้างโทเค็นเพื่อการเข้าถึงใหม่ได้อีกต่อไป ดังนั้นจึงมีการปิดการเข้าถึงจนกว่าผู้ใช้จะตรวจสอบสิทธิ์ในอุปกรณ์นั้นอีกครั้ง
ความแตกต่างของฟีเจอร์
ฟีเจอร์บางอย่างของ Identity Toolkit ยังไม่พร้อมใช้งานใน Identity Platform ส่วนฟีเจอร์อื่นๆ นั้นได้รับการออกแบบใหม่และทำงานแตกต่างออกไป คุณอาจเลือกที่จะไม่ย้ายข้อมูลทันทีหากฟีเจอร์เหล่านี้สำคัญต่อแอปของคุณ ในหลายกรณี ฟีเจอร์เหล่านี้อาจไม่สำคัญสำหรับแอปหรืออาจมีทางเลือกสำรองที่ช่วยให้คุณดำเนินการย้ายข้อมูลได้
ความแตกต่างของฝั่งเซิร์ฟเวอร์
บริการหลักของ Identity Toolkit ที่มี REST API ที่เกี่ยวข้อง, ตรรกะการตรวจสอบบัญชี และฐานข้อมูลผู้ใช้หลักได้รับการอัปเดตเพียงเล็กน้อยเท่านั้น แต่ฟีเจอร์บางอย่างและลักษณะการผสานรวม Identity Platform เข้ากับบริการได้มีการเปลี่ยนแปลง
ผู้ให้บริการข้อมูลประจำตัว
ไม่รองรับ PayPal และ AOL ผู้ใช้ที่มีบัญชีจาก IdP เหล่านี้จะยังลงชื่อเข้าใช้แอปพลิเคชันด้วยขั้นตอนการกู้คืนรหัสผ่านและตั้งรหัสผ่านสำหรับบัญชีของตนเองได้
ไลบรารีของเซิร์ฟเวอร์
ปัจจุบันมี Admin SDK สำหรับ Java, Node.js, Python, Go และ C#
อีเมลการจัดการบัญชี
Firebase หรือจากเซิร์ฟเวอร์อีเมลของนักพัฒนาแอปเองก็ได้ โดยการรีเซ็ตรหัสผ่าน การยืนยันอีเมล และข้อความเปลี่ยนอีเมล ปัจจุบันเทมเพลตอีเมลสามารถปรับแต่ง UI ได้อย่างจำกัด แต่ยังปรับแต่งเพิ่มเติมได้ด้วย SDK ผู้ดูแลระบบ
การยืนยันการเปลี่ยนอีเมล
ใน Identity Toolkit เมื่อผู้ใช้ตัดสินใจเปลี่ยนอีเมล ระบบจะส่งอีเมลไปยังอีเมลใหม่ที่มีลิงก์เพื่อดำเนินการเปลี่ยนแปลงอีเมลต่อ
Firebase จะยืนยันการเปลี่ยนแปลงอีเมลโดยส่งอีเมลเพิกถอนไปยังอีเมลเดิมพร้อมลิงก์สำหรับเปลี่ยนกลับการเปลี่ยนแปลง
การเปิดตัว IDP
Identity Toolkit สามารถค่อยๆ เพิ่มผู้ให้บริการข้อมูลประจำตัวลงในระบบลงชื่อเข้าใช้ เพื่อให้คุณสามารถทดสอบผลกระทบที่มีต่อคำขอการสนับสนุนได้ มีการนำฟีเจอร์นี้ออกจากการตรวจสอบสิทธิ์ Firebase
ความแตกต่างของฝั่งไคลเอ็นต์
ฟีเจอร์ของ Google Identity Toolkit ใน Identity Platform จะแบ่งออกเป็น 2 ส่วน ดังนี้
SDK ของไคลเอ็นต์และเซิร์ฟเวอร์
ใน Identity Platform ฟังก์ชัน REST API ของ Identity Toolkit ได้รวมอยู่ใน SDK ของไคลเอ็นต์สำหรับ Android, iOS และ JavaScript แล้ว คุณสามารถใช้ SDK เพื่อลงชื่อเข้าใช้และลงชื่อสมัครใช้ผู้ใช้ เข้าถึงข้อมูลโปรไฟล์ผู้ใช้ ลิงก์ อัปเดต และลบบัญชี รวมถึงรีเซ็ตรหัสผ่านโดยใช้ SDK ของไคลเอ็นต์แทนการสื่อสารกับบริการแบ็กเอนด์ผ่านการเรียก REST
วิดเจ็ต UI
ขั้นตอน UI ทั้งหมดที่จัดการการลงชื่อเข้าใช้ การลงชื่อสมัครใช้ การกู้คืนรหัสผ่าน และการเชื่อมโยงบัญชีได้รับการสร้างขึ้นใหม่โดยใช้ SDK ของไคลเอ็นต์ และจัดแพ็กเกจเป็นวิดเจ็ตการเข้าสู่ระบบ โดย API เหล่านี้พร้อมใช้งานเป็น SDK โอเพนซอร์สสำหรับ iOS, Android และ เว็บ และช่วยให้คุณปรับแต่งขั้นตอนได้ทั้งหมดในรูปแบบที่ทําไม่ได้ด้วย Identity Toolkit
ความแตกต่างเพิ่มเติมมีดังนี้
เซสชันและการย้ายข้อมูล
เนื่องจากเซสชันมีการจัดการต่างกันใน Identity Toolkit และ Identity Platform เซสชันที่มีอยู่ของผู้ใช้ของคุณจะสิ้นสุดลงเมื่ออัปเกรด SDK และผู้ใช้จะต้องลงชื่อเข้าใช้อีกครั้ง
ก่อนเริ่มต้น
ก่อนที่จะย้ายข้อมูลจาก Identity Toolkit ไปยัง Identity Platform ได้ คุณต้องดำเนินการดังนี้
เปิด Cloud Console แล้วเลือกโปรเจ็กต์ Identity Toolkit
จาก Marketplace ให้ไปที่ Identity Platform แล้วเลือก "Enable Identity Platform"
เปิดบัญชีบริการ คุณจะดูบัญชีบริการที่กำหนดค่าไว้ก่อนหน้านี้สำหรับ Identity Toolkit ได้
คลิก more_vert > สร้างคีย์ข้างบัญชีบริการ จากนั้นในกล่องโต้ตอบสร้างคีย์ส่วนตัว ให้ตั้งค่าประเภทคีย์เป็น JSON และคลิกสร้าง ระบบจะดาวน์โหลดไฟล์ JSON ที่มีข้อมูลเข้าสู่ระบบของบัญชีบริการให้คุณ คุณจะต้องใช้คีย์นี้เพื่อเริ่มต้น SDK ในขั้นตอนถัดไป
กลับไปที่ Cloud Console ในส่วนผู้ให้บริการ ให้เปิดหน้าเทมเพลตอีเมลภายในวิธีการลงชื่อเข้าใช้ "อีเมล/รหัสผ่าน" จากนั้นคุณจะปรับแต่งเทมเพลตของแอปได้
ใน Identity Toolkit เมื่อผู้ใช้รีเซ็ตรหัสผ่าน เปลี่ยนอีเมล หรือยืนยันอีเมลแล้ว คุณจะต้องรับรหัส OOB จากเซิร์ฟเวอร์ Identity Toolkit แล้วส่งรหัสให้ผู้ใช้ทางอีเมล Identity Platform จะส่งอีเมลตามเทมเพลตที่คุณกำหนดค่าไว้โดยไม่ต้องดำเนินการใดๆ เพิ่มเติม
ไม่บังคับ: หากต้องการเข้าถึงบริการ Identity Platform บนเซิร์ฟเวอร์ ให้ติดตั้ง Firebase SDK
คุณติดตั้ง Node.js Admin SDK ด้วย
npm
ได้โดยทำดังนี้$ npm init $ npm install --save firebase-admin
ในโค้ด คุณจะเข้าถึง Firebase ได้โดยใช้สิ่งต่อไปนี้
var admin = require('firebase-admin'); var app = admin.initializeApp({ credential: admin.credential.cert('path/to/serviceAccountCredentials.json') });
จากนั้นให้ทำตามขั้นตอนการย้ายข้อมูลสำหรับแพลตฟอร์มของแอป ซึ่งได้แก่ Android, iOS, เว็บ
เซิร์ฟเวอร์และ JavaScript
การเปลี่ยนแปลงที่สำคัญ
การใช้งาน Identity Platform ในเว็บจาก Identity Toolkit นั้นแตกต่างกันอีกมากมาย
การจัดการเซสชันของเว็บ
ก่อนหน้านี้เมื่อผู้ใช้ตรวจสอบสิทธิ์โดยใช้วิดเจ็ต Identity Toolkit จะมีการตั้งคุกกี้สำหรับผู้ใช้ที่ใช้ในการเริ่มต้นเซสชัน คุกกี้นี้มีอายุการใช้งาน 2 สัปดาห์และใช้เพื่ออนุญาตให้ผู้ใช้ใช้วิดเจ็ตการจัดการบัญชีเพื่อเปลี่ยนรหัสผ่านและอีเมลได้ บางเว็บไซต์ใช้คุกกี้นี้ในการตรวจสอบสิทธิ์คำขอหน้าเว็บอื่นๆ ทั้งหมดในเว็บไซต์ เว็บไซต์อื่นๆ ใช้คุกกี้เพื่อสร้างคุกกี้ของตนเองผ่านระบบการจัดการคุกกี้ของเฟรมเวิร์ก
ตอนนี้ SDK ของไคลเอ็นต์ Identity Platform จะจัดการโทเค็นรหัส และทำงานร่วมกับแบ็กเอนด์ของ Identity Platform เพื่อให้เซสชันมีข้อมูลล่าสุดอยู่เสมอ แบ็กเอนด์หมดอายุเซสชันเมื่อเกิดการเปลี่ยนแปลงที่สำคัญของบัญชี (เช่น การเปลี่ยนรหัสผ่านของผู้ใช้) โทเค็นของรหัสไม่ได้ถูกตั้งเป็นคุกกี้บนเว็บไคลเอ็นต์โดยอัตโนมัติ และมีอายุเพียง 1 ชั่วโมงเท่านั้น นอกเสียจากว่าคุณต้องการเซสชันที่ใช้เวลาเพียง 1 ชั่วโมง คุณใช้โทเค็นรหัสเป็นคุกกี้ในการตรวจสอบคำขอหน้าเว็บทั้งหมดไม่ได้ คุณจะต้องตั้งค่า Listener แทนเมื่อผู้ใช้เข้าสู่ระบบ รับโทเค็นรหัส ตรวจสอบโทเค็น และสร้างคุกกี้ของคุณเองผ่านระบบการจัดการคุกกี้ของเฟรมเวิร์ก
คุณจะต้องตั้งค่าอายุการใช้งานเซสชันของคุกกี้ตามความต้องการด้านความปลอดภัยของแอปพลิเคชัน
ขั้นตอนการลงชื่อเข้าใช้เว็บ
ก่อนหน้านี้ ระบบจะเปลี่ยนเส้นทางผู้ใช้ไปยัง
accountchooser.com
เมื่อเริ่มลงชื่อเข้าใช้เพื่อดูตัวระบุที่ผู้ใช้ต้องการใช้ Identity Platform ตอนนี้ขั้นตอนของ UI เริ่มต้นด้วยรายการวิธีการลงชื่อเข้าใช้ ซึ่งรวมถึงตัวเลือกอีเมลซึ่งจะไปที่accountchooser.com
สำหรับเว็บและใช้ hintRequest API ใน Android นอกจากนี้ยังไม่ต้องใช้อีเมลใน UI ด้วย วิธีนี้ช่วยให้การสนับสนุนผู้ใช้ที่ไม่ระบุชื่อ ผู้ใช้การตรวจสอบสิทธิ์ที่กำหนดเอง หรือผู้ใช้จากผู้ให้บริการที่ไม่จำเป็นต้องใช้ที่อยู่อีเมลทำได้ง่ายขึ้นวิดเจ็ตการจัดการบัญชี
วิดเจ็ตนี้มี UI เพื่อให้ผู้ใช้เปลี่ยนอีเมล เปลี่ยนรหัสผ่าน หรือยกเลิกการลิงก์บัญชีจากผู้ให้บริการข้อมูลประจำตัว ซึ่งขณะนี้อยู่ระหว่าง การพัฒนา
ปุ่ม/วิดเจ็ตลงชื่อเข้าใช้
ไม่มีวิดเจ็ต เช่น ปุ่มลงชื่อเข้าใช้และการ์ดผู้ใช้ให้บริการอีกต่อไป ซึ่งสร้างได้ง่ายๆ โดยใช้ Firebase Authentication API
ไม่มี signOutUrl
คุณจะต้องโทรหา
firebase.auth.signOut()
และจัดการการติดต่อกลับไม่มี oobActionUrl
Identity Platform จะเป็นผู้จัดการการส่งอีเมลและได้รับการกำหนดค่าในคอนโซล Firebase
การปรับแต่ง CSS
วิดเจ็ต UI ใช้การจัดรูปแบบ Material Design Lite ซึ่งจะเพิ่มภาพเคลื่อนไหวของดีไซน์ Material แบบไดนามิก
ขั้นตอนที่ 1: เปลี่ยนรหัสเซิร์ฟเวอร์
หากเซิร์ฟเวอร์ของคุณใช้โทเค็น Identity Toolkit (ใช้ได้เป็นเวลา 2 สัปดาห์) ในการจัดการเซสชันของผู้ใช้เว็บ คุณจะต้องแปลงเซิร์ฟเวอร์ให้ใช้คุกกี้เซสชันของตนเอง
- ใช้ปลายทางสำหรับการตรวจสอบโทเค็นรหัสและตั้งค่าคุกกี้ของเซสชันสำหรับผู้ใช้ แอปไคลเอ็นต์จะส่งโทเค็นรหัส Firebase ไปยังปลายทางนี้
- ถ้าคำขอที่เข้ามามีคุกกี้เซสชันของคุณเอง คุณสามารถพิจารณาผู้ใช้ที่ตรวจสอบสิทธิ์แล้ว มิฉะนั้น ให้ถือว่าคำขอดังกล่าว ผ่านการตรวจสอบสิทธิ์
- หากไม่ต้องการให้ผู้ใช้รายใดเสียเซสชันที่ลงชื่อเข้าใช้อยู่ คุณควรรอ 2 สัปดาห์เพื่อให้โทเค็น Identity Toolkit ทั้งหมดหมดอายุ หรือทำการตรวจสอบโทเค็นคู่สำหรับเว็บแอปพลิเคชันตามที่อธิบายไว้ด้านล่างในขั้นตอนที่ 3
ขั้นต่อไป เนื่องจากโทเค็นรหัสต่างจากโทเค็น Identity Toolkit คุณจึงต้องอัปเดตตรรกะการตรวจสอบโทเค็น ติดตั้ง Admin SDK ในเซิร์ฟเวอร์ หรือหากใช้ภาษาที่ Admin SDK ไม่รองรับ ให้ดาวน์โหลดไลบรารีการตรวจสอบโทเค็น JWT สำหรับสภาพแวดล้อมและตรวจสอบโทเค็นให้ถูกต้อง
เมื่อทำการอัปเดตข้างต้นเป็นครั้งแรก คุณอาจยังมีเส้นทางโค้ดที่ต้องใช้โทเค็น Identity Toolkit หากคุณมีแอปพลิเคชัน iOS หรือ Android ผู้ใช้จะต้องอัปเกรดเป็นแอปเวอร์ชันใหม่เพื่อให้เส้นทางโค้ดใหม่ใช้งานได้ หากไม่ต้องการบังคับให้ผู้ใช้อัปเดตแอป คุณสามารถเพิ่มตรรกะการตรวจสอบเซิร์ฟเวอร์เพิ่มเติมที่จะตรวจสอบโทเค็น และกำหนดว่าต้องใช้ Firebase SDK หรือ SDK ของ Identity Toolkit เพื่อตรวจสอบโทเค็น หากคุณมีเฉพาะเว็บแอปพลิเคชัน คำขอการตรวจสอบสิทธิ์ใหม่ทั้งหมดจะย้ายไปที่ Identity Platform คุณจึงต้องใช้เพียงวิธีการยืนยันโทเค็นรหัสเท่านั้น
ขั้นตอนที่ 2: อัปเดต HTML ของคุณ
เพิ่มโค้ดการเริ่มต้นลงในแอปโดยทำดังนี้
- เปิดโปรเจ็กต์ใน Cloud Console
- ในหน้า providers ให้คลิก Application Setup Details ข้อมูลโค้ดที่เริ่มต้น Identity Platform จะปรากฏ
- คัดลอกและวางข้อมูลโค้ดการเริ่มต้นลงในหน้าเว็บ
เพิ่มวิดเจ็ตการตรวจสอบสิทธิ์ ลงในแอป
<script src="https://www.gstatic.com/firebasejs/ui/live/0.4/firebase-ui-auth.js"></script> <link type="text/css" rel="stylesheet" href="https://www.gstatic.com/firebasejs/ui/live/0.4/firebase-ui-auth.css" /> <!-- ******************************************************************************************* * TODO(DEVELOPER): Paste the initialization snippet from: * Firebase Console > Overview > Add Firebase to your web app. * ***************************************************************************************** --> <script type="text/javascript"> // FirebaseUI config. var uiConfig = { 'signInSuccessUrl': '<url-to-redirect-to-on-success>', 'signInOptions': [ // Leave the lines as is for the providers you want to offer your users. firebase.auth.GoogleAuthProvider.PROVIDER_ID, firebase.auth.FacebookAuthProvider.PROVIDER_ID, firebase.auth.TwitterAuthProvider.PROVIDER_ID, firebase.auth.GithubAuthProvider.PROVIDER_ID, firebase.auth.EmailAuthProvider.PROVIDER_ID ], // Terms of service url. 'tosUrl': '<your-tos-url>', }; // Initialize the FirebaseUI Widget using Firebase. var ui = new firebaseui.auth.AuthUI(firebase.auth()); // The start method will wait until the DOM is loaded. ui.start('#firebaseui-auth-container', uiConfig); </script>
นำ Identity Toolkit SDK ออกจากแอป
หากใช้โทเค็นรหัส Identity Toolkit ในการจัดการเซสชัน คุณต้องทำการเปลี่ยนแปลงต่อไปนี้ในฝั่งไคลเอ็นต์
หลังจากลงชื่อเข้าใช้ด้วย Identity Platform สำเร็จแล้ว ให้ขอรับโทเค็นรหัสโดยเรียกใช้
firebase.auth().currentUser.getToken()
ส่งโทเค็นรหัสไปยังเซิร์ฟเวอร์แบ็กเอนด์ ตรวจสอบความถูกต้อง และออกคุกกี้เซสชันของคุณเอง
อย่าพึ่งพาคุกกี้เซสชันเพียงอย่างเดียวเมื่อดำเนินการดำเนินการที่มีความละเอียดอ่อน หรือส่งคำขอแก้ไขที่ได้รับการตรวจสอบสิทธิ์ไปยังเซิร์ฟเวอร์ของคุณ คุณจะต้องให้การป้องกันการปลอมแปลงคำขอแบบข้ามเว็บไซต์ (CSRF) เพิ่มเติม
หากเฟรมเวิร์กของคุณไม่ให้การป้องกัน CSRF วิธีหนึ่งในการป้องกันการโจมตีก็คือการรับโทเค็นรหัสสำหรับผู้ใช้ที่ลงชื่อเข้าใช้ด้วย
getToken()
และใส่โทเค็นไปกับคำขอแต่ละรายการ (คุกกี้เซสชันจะส่งโดยค่าเริ่มต้นด้วย) จากนั้นให้ตรวจสอบโทเค็นดังกล่าวโดยใช้ Admin SDK เพิ่มเติมจากการตรวจสอบคุกกี้ของเซสชัน ซึ่งเฟรมเวิร์กแบ็กเอนด์ของคุณจะทำงานสมบูรณ์แล้ว ซึ่งจะทำให้การโจมตี CSRF สำเร็จได้ยากขึ้น เนื่องจากโทเค็น ID จะจัดเก็บโดยใช้พื้นที่เก็บข้อมูลบนเว็บเท่านั้นและไม่อยู่ในคุกกี้โทเค็น Identity Toolkit จะใช้ได้เป็นเวลา 2 สัปดาห์ คุณอาจต้องออกโทเค็นต่อไปซึ่งมีอายุ 2 สัปดาห์ หรือกำหนดระยะเวลาให้ยาวขึ้นหรือสั้นลงตามข้อกำหนดด้านความปลอดภัยของแอป เมื่อผู้ใช้ออกจากระบบ ให้ล้างคุกกี้ของเซสชัน
ขั้นตอนที่ 3: อัปเดต URL เปลี่ยนเส้นทาง IDP
ใน Cloud Console ให้เปิดส่วนผู้ให้บริการ
สำหรับผู้ให้บริการการลงชื่อเข้าใช้แบบรวมศูนย์แต่ละรายที่คุณรองรับ ให้ทำดังนี้
- คลิกชื่อผู้ให้บริการการลงชื่อเข้าใช้
- คัดลอก URI การเปลี่ยนเส้นทาง OAuth
- อัปเดต URI การเปลี่ยนเส้นทาง OAuth ใน Developer Console ของผู้ให้บริการการลงชื่อเข้าใช้
Android
ขั้นตอนที่ 1: เพิ่ม Identity Platform ลงในแอปด้วย Firebase
เปิด Cloud Console แล้วเลือกโปรเจ็กต์ Identity Toolkit
ในหน้าผู้ให้บริการ ให้คลิกรายละเอียดการตั้งค่าแอปพลิเคชัน เลือกแท็บ Android แล้วคลิกเริ่มต้นใช้งาน Firebase ในกล่องโต้ตอบเพิ่ม Firebase ให้ระบุชื่อแพ็กเกจของแอปและลายนิ้วมือสำหรับใบรับรองที่ลงนาม แล้วคลิกเพิ่มแอป ระบบจะดาวน์โหลดไฟล์การกำหนดค่า
google-services.json
ลงในคอมพิวเตอร์ของคุณคัดลอกไฟล์การกำหนดค่าไปยังไดเรกทอรีรากโมดูลของแอป Android ไฟล์การกำหนดค่านี้ประกอบด้วยข้อมูลโปรเจ็กต์และไคลเอ็นต์ OAuth ของ Google
ในไฟล์
build.gradle
ระดับโปรเจ็กต์ (<var>your-project</var>/build.gradle
) ให้ระบุชื่อแพ็กเกจของแอปในส่วนdefaultConfig
defaultConfig { ….. applicationId "com.your-app" }
นอกจากนี้ในไฟล์
build.gradle
ระดับโปรเจ็กต์ ให้เพิ่มทรัพยากร Dependency เพื่อรวมปลั๊กอิน google-services ดังนี้buildscript { dependencies { // Add this line classpath 'com.google.gms:google-services:3.0.0' } }
ในไฟล์
build.gradle
ระดับแอปของแอป (<var>my-project</var>/<var>app-module</var>/build.gradle
) ให้เพิ่มบรรทัดต่อไปนี้หลังปลั๊กอิน Android Gradle เพื่อเปิดใช้ปลั๊กอิน google-servicesapply plugin: 'com.android.application' // Add this line apply plugin: 'com.google.gms.google-services'
ปลั๊กอิน google-services จะใช้ไฟล์
google-services.json
เพื่อกำหนดค่าแอปพลิเคชันให้ใช้ Firebaseนอกจากนี้ในไฟล์
build.gradle
ระดับแอป ให้เพิ่มทรัพยากร Dependency ของการตรวจสอบสิทธิ์ Firebase ดังนี้compile 'com.google.firebase:firebase-auth:23.0.0' compile 'com.google.android.gms:play-services-auth:21.2.0'
ขั้นตอนที่ 2: นำ Identity Toolkit SDK ออก
- นำการกำหนดค่า Identity Toolkit ออกจากไฟล์
AndroidManifest.xml
ข้อมูลนี้รวมอยู่ในไฟล์google-service.json
และโหลดโดยปลั๊กอิน google-services - นำ Identity Toolkit SDK ออกจากแอป
ขั้นตอนที่ 3: เพิ่ม FirebaseUI ลงในแอป
เพิ่มการตรวจสอบสิทธิ์ FirebaseUI ลงในแอป
ในแอป ให้ใช้การเรียก FirebaseUI แทนการเรียกใช้ Identity Toolkit SDK
iOS
ขั้นตอนที่ 1: เพิ่ม Firebase ไปยังแอปของคุณ
เพิ่ม SDK ของไคลเอ็นต์ลงในแอปโดยเรียกใช้คำสั่งต่อไปนี้
$ cd your-project directory $ pod init $ pod 'Firebase'
เปิด Cloud Console แล้วเลือกโปรเจ็กต์ Identity Toolkit
ในหน้าผู้ให้บริการ ให้คลิกรายละเอียดการตั้งค่าแอปพลิเคชัน เลือกแท็บ iOS แล้วคลิกเริ่มต้นใช้งาน Firebase ในกล่องโต้ตอบเพิ่ม Firebase ให้ระบุชื่อแพ็กเกจของแอปและลายนิ้วมือของใบรับรองที่ลงนาม แล้วคลิกเพิ่มแอป จากนั้นระบบจะดาวน์โหลดไฟล์การกำหนดค่า
google-services.json
ลงในคอมพิวเตอร์ ในกล่องโต้ตอบเพิ่ม Firebase ให้ระบุรหัสแพ็กเกจของแอปและรหัส App Store แล้วคลิกเพิ่มแอป ระบบจะดาวน์โหลดไฟล์การกำหนดค่าGoogleService-Info.plist
ไปยังคอมพิวเตอร์ของคุณ หากคุณมีรหัสชุดหลายรายการในโปรเจ็กต์ รหัสชุดแต่ละรายการต้องเชื่อมต่อในคอนโซล Firebase เพื่อให้มีไฟล์GoogleService-Info.plist
ของตัวเองคัดลอกไฟล์การกำหนดค่าไปยังรูทของโปรเจ็กต์ Xcode แล้วเพิ่มลงในเป้าหมายทั้งหมด
ขั้นตอนที่ 2: นำ Identity Toolkit SDK ออก
- นำ
GoogleIdentityToolkit
ออกจาก Podfile ของแอป - เรียกใช้คำสั่ง
pod install
ขั้นตอนที่ 3: เพิ่ม FirebaseUI ลงในแอป
เพิ่มการตรวจสอบสิทธิ์ FirebaseUI ลงในแอป
ในแอป ให้ใช้การเรียก FirebaseUI แทนการเรียกใช้ Identity Toolkit SDK