Google Identity Toolkit เวอร์ชันล่าสุดได้เปิดตัวเป็น Identity Platform และ Firebase Authentication แล้ว นับจากนี้ไป การพัฒนาฟีเจอร์ใน Identity Toolkit จะหยุดลง การพัฒนาฟีเจอร์ใหม่ทั้งหมดจะดำเนินการใน Identity Platform และ Firebase Authentication เราขอแนะนำให้นักพัฒนา 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 ประกอบด้วยฟีเจอร์เสริมที่คุณสามารถผสมผสานให้เหมาะกับความต้องการ และประกอบด้วยโครงสร้างพื้นฐานสําหรับข้อมูลวิเคราะห์บนอุปกรณ์เคลื่อนที่, การรับส่งข้อความบนระบบคลาวด์, ฐานข้อมูลแบบเรียลไทม์, พื้นที่เก็บข้อมูลไฟล์, โฮสติ้งแบบคงที่, การกําหนดค่าระยะไกล, การรายงานข้อขัดข้องบนอุปกรณ์เคลื่อนที่ และการทดสอบ Android
UI ที่อัปเดต
เราได้สร้างขั้นตอน UI ขึ้นใหม่ทั้งหมดโดยอิงตามการวิจัย UX ล่าสุดของ Google ซึ่งรวมถึงการกู้คืนรหัสผ่าน การลิงก์บัญชี ขั้นตอนการแยกแยะบัญชีใหม่/ที่มีอยู่ ซึ่งมักใช้เวลานานในการเขียนโค้ดและแก้ไขข้อบกพร่อง โดยผสานรวม Smart Lock สำหรับรหัสผ่านใน Android ซึ่งช่วยปรับปรุง Conversion การลงชื่อเข้าใช้และการลงชื่อสมัครใช้แอปที่เข้าร่วมได้อย่างมาก นอกจากนี้ยังรองรับการแก้ไขธีมง่ายๆ เพื่อให้เข้ากับแอปพลิเคชันของคุณ และเวอร์ชัน Android และ iOS ยังเป็นโอเพนซอร์สเพื่อให้ปรับแต่งได้สูงสุด
การตั้งค่าเซิร์ฟเวอร์ที่ง่ายดาย
เมื่อใช้ Identity Toolkit เราพบว่านักพัฒนาแอปจำนวนมากเลือกที่จะไม่ใช้ขั้นตอนการกู้คืนอีเมล ซึ่งทำให้ผู้ใช้กู้คืนบัญชีไม่ได้หากลืมรหัสผ่าน 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 เพียงแบบจํากัดเท่านั้น แต่สามารถปรับแต่งเพิ่มเติมได้ด้วย Admin SDK
การยืนยันการเปลี่ยนแปลงอีเมล
ใน Identity Toolkit เมื่อผู้ใช้ตัดสินใจเปลี่ยนอีเมล ระบบจะส่งอีเมลไปยังอีเมลใหม่ที่มีลิงก์เพื่อดำเนินการต่อในขั้นตอนการเปลี่ยนอีเมล
Firebase จะยืนยันการเปลี่ยนแปลงอีเมลโดยส่งอีเมลเพิกถอนไปยังอีเมลเดิมพร้อมลิงก์สำหรับเปลี่ยนกลับการเปลี่ยนแปลง
การเริ่มใช้งาน IdP
Identity Toolkit สามารถเพิ่มผู้ให้บริการข้อมูลประจำตัวลงในระบบการลงชื่อเข้าใช้ได้ทีละน้อย เพื่อให้คุณทดสอบผลกระทบต่อคำขอการสนับสนุนได้ เราได้นําฟีเจอร์นี้ออกจาก Firebase Authentication แล้ว
ความแตกต่างฝั่งไคลเอ็นต์
ในแพลตฟอร์มข้อมูลประจำตัว ฟีเจอร์ที่ Google Identity Toolkit มีให้จะแบ่งออกเป็น 2 ส่วนดังนี้
SDK ของไคลเอ็นต์และเซิร์ฟเวอร์
ใน Identity Platform ฟังก์ชันการทำงานของ REST API ที่ Identity Toolkit มีให้ได้รับการบรรจุลงใน SDK ของไคลเอ็นต์สำหรับ Android, iOS และ JavaScript คุณสามารถใช้ SDK เพื่อลงชื่อเข้าใช้และลงชื่อสมัครใช้ของผู้ใช้ เข้าถึงข้อมูลโปรไฟล์ของผู้ใช้ ลิงก์ อัปเดต และลบบัญชี รวมถึงรีเซ็ตรหัสผ่านได้โดยใช้ SDK ของไคลเอ็นต์แทนการติดต่อกับบริการแบ็กเอนด์ผ่านการเรียก REST
วิดเจ็ต UI
เราได้สร้างเวิร์กโฟลว์ UI ทั้งหมดที่จัดการการลงชื่อเข้าใช้ การลงชื่อสมัครใช้ การกู้คืนรหัสผ่าน และการลิงก์บัญชีขึ้นใหม่โดยใช้ Client SDK และแพ็กเกจเป็นวิดเจ็ตการเข้าสู่ระบบ ซึ่งพร้อมใช้งานเป็น SDK แบบโอเพนซอร์สสําหรับ iOS, Android และ เว็บ และช่วยให้คุณปรับแต่งขั้นตอนต่างๆ ได้อย่างสมบูรณ์ในแบบที่ Identity Toolkit ไม่สามารถทำได้
ความแตกต่างเพิ่มเติมมีดังนี้
เซสชันและการย้ายข้อมูล
เนื่องจากเซสชันได้รับการจัดการแตกต่างกันใน Identity Toolkit และ Identity Platform เซสชันที่มีอยู่ของผู้ใช้จะสิ้นสุดลงเมื่ออัปเกรด SDK และผู้ใช้จะต้องลงชื่อเข้าใช้อีกครั้ง
ก่อนเริ่มต้น
คุณต้องดำเนินการต่อไปนี้ก่อนจึงจะย้ายข้อมูลจาก Identity Toolkit ไปยัง Identity Platform ได้
เปิด Cloud Console แล้วเลือกโปรเจ็กต์ Identity Toolkit
จาก Marketplace ให้ไปที่ Identity Platform แล้วเลือก "เปิดใช้ Identity Platform"
เปิดบัญชีบริการ ในส่วนนี้ คุณจะเห็นบัญชีบริการที่คุณกำหนดค่าไว้ก่อนหน้านี้สำหรับ Identity Toolkit
ถัดจากบัญชีบริการ ให้คลิกmore_vert > สร้างคีย์ จากนั้นในกล่องโต้ตอบสร้างคีย์ส่วนตัว ให้ตั้งค่าประเภทคีย์เป็น JSON แล้วคลิกสร้าง ระบบจะดาวน์โหลดไฟล์ JSON ที่มีข้อมูลเข้าสู่ระบบของบัญชีบริการให้คุณ คุณต้องใช้ข้อมูลนี้เพื่อเริ่มต้น SDK ในขั้นตอนถัดไป
กลับไปที่คอนโซล Cloud ในส่วนผู้ให้บริการ ภายในวิธีการลงชื่อเข้าใช้ "อีเมล/รหัสผ่าน" ให้เปิดหน้าเทมเพลตอีเมล จากนั้นจึงปรับแต่งเทมเพลตของแอป
ใน Identity Toolkit เมื่อผู้ใช้รีเซ็ตรหัสผ่าน เปลี่ยนอีเมล หรือยืนยันอีเมล คุณจะต้องรับรหัส OOB จากเซิร์ฟเวอร์ Identity Toolkit แล้วส่งรหัสดังกล่าวให้ผู้ใช้ทางอีเมล 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
เมื่อเริ่มลงชื่อเข้าใช้เพื่อดูว่าผู้ใช้ต้องการใช้ตัวระบุใด ตอนนี้ขั้นตอนของ 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 Design แบบไดนามิก
ขั้นตอนที่ 1: เปลี่ยนรหัสเซิร์ฟเวอร์
หากเซิร์ฟเวอร์ใช้โทเค็น Identity Toolkit (ใช้งานได้ 2 สัปดาห์) ในการจัดการเซสชันผู้ใช้เว็บ คุณต้องแปลงเซิร์ฟเวอร์ให้ใช้คุกกี้เซสชันของตัวเอง
- ใช้ปลายทางสําหรับการตรวจสอบโทเค็นระบุตัวตนและการตั้งค่าคุกกี้เซสชันสําหรับผู้ใช้ แอปไคลเอ็นต์จะส่งโทเค็นระบุตัวตน Firebase ไปยังปลายทางนี้
- หากคําขอขาเข้ามีคุกกี้เซสชันของคุณเอง คุณสามารถถือว่าผู้ใช้ได้รับการตรวจสอบสิทธิ์แล้ว มิฉะนั้น ระบบจะถือว่าคำขอไม่ผ่านการตรวจสอบสิทธิ์
- หากไม่ต้องการให้ผู้ใช้สูญเสียเซสชันที่เข้าสู่ระบบอยู่ คุณควรรอ 2 สัปดาห์เพื่อให้โทเค็น Identity Toolkit ทั้งหมดหมดอายุ หรือดำเนินการตรวจสอบโทเค็นแบบคู่สำหรับเว็บแอปพลิเคชันตามที่อธิบายไว้ด้านล่างในขั้นตอนที่ 3
ถัดไป เนื่องจากโทเค็นรหัสแตกต่างจากโทเค็น Identity Toolkit คุณจึงต้องอัปเดตตรรกะการตรวจสอบโทเค็น ติดตั้ง Admin SDK ลงในเซิร์ฟเวอร์ หรือหากคุณใช้ภาษาที่ Admin SDK ไม่รองรับ ให้ดาวน์โหลดไลบรารีการตรวจสอบโทเค็น JWT สำหรับสภาพแวดล้อมของคุณ และตรวจสอบโทเค็นอย่างเหมาะสม
เมื่อทำการอัปเดตข้างต้นเป็นครั้งแรก คุณอาจยังมีเส้นทางโค้ดที่อาศัยโทเค็น Identity Toolkit หากคุณมีแอปพลิเคชัน iOS หรือ Android ผู้ใช้จะต้องอัปเกรดแอปเป็นเวอร์ชันใหม่เพื่อให้เส้นทางโค้ดใหม่ใช้งานได้ หากไม่ต้องการบังคับให้ผู้ใช้อัปเดตแอป คุณสามารถเพิ่มตรรกะการตรวจสอบเซิร์ฟเวอร์เพิ่มเติมที่จะตรวจสอบโทเคนและพิจารณาว่าจำเป็นต้องใช้ Firebase SDK หรือ Identity Toolkit SDK เพื่อตรวจสอบโทเค็นหรือไม่ หากคุณมีแอปพลิเคชันบนเว็บเท่านั้น คำขอการตรวจสอบสิทธิ์ใหม่ทั้งหมดจะเปลี่ยนไปใช้แพลตฟอร์มข้อมูลประจำตัว คุณจึงต้องใช้วิธีการยืนยันโทเค็นระบุตัวตนเท่านั้น
โปรดดูข้อมูลอ้างอิง Web API
ขั้นตอนที่ 2: อัปเดต HTML
เพิ่มโค้ดการเริ่มต้นลงในแอป
- เปิดโปรเจ็กต์ใน Cloud Console
- ในหน้าผู้ให้บริการ ให้คลิกรายละเอียดการตั้งค่าแอปพลิเคชัน ข้อมูลโค้ดที่เริ่มต้นใช้งาน 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>
นำ SDK ของ Identity Toolkit ออกจากแอป
หากคุณใช้โทเค็นข้อมูลประจำตัวของ Identity Toolkit สำหรับการจัดการเซสชัน คุณต้องทําการเปลี่ยนแปลงต่อไปนี้ฝั่งไคลเอ็นต์
หลังจากลงชื่อเข้าใช้ด้วย Identity Platform เรียบร้อยแล้ว ให้รับโทเค็นระบุตัวตนโดยเรียกใช้
firebase.auth().currentUser.getToken()
ส่งโทเค็นระบุตัวตนไปยังเซิร์ฟเวอร์แบ็กเอนด์ ตรวจสอบ และออกคุกกี้เซสชันของคุณเอง
อย่าใช้คุกกี้เซสชันเพียงอย่างเดียวเมื่อดำเนินการที่มีความละเอียดอ่อนหรือส่งคำขอแก้ไขที่ตรวจสอบสิทธิ์แล้วไปยังเซิร์ฟเวอร์ คุณจะต้องเพิ่มการป้องกันการปลอมแปลงคำขอข้ามเว็บไซต์ (CSRF)
หากเฟรมเวิร์กไม่มีการป้องกัน CSRF วิธีหนึ่งในการป้องกันการโจมตีคือการรับโทเค็นระบุตัวตนสําหรับผู้ใช้ที่ลงชื่อเข้าใช้ด้วย
getToken()
และใส่โทเค็นนั้นไว้ในคําขอแต่ละรายการ (ระบบจะส่งคุกกี้เซสชันโดยค่าเริ่มต้นด้วย) จากนั้นคุณจะต้องตรวจสอบโทเค็นนั้นโดยใช้ Admin SDK นอกเหนือจากการตรวจสอบคุกกี้เซสชัน ซึ่งเฟรมเวิร์กแบ็กเอนด์ของคุณดำเนินการเสร็จแล้ว ซึ่งจะทำให้การโจมตี CSRF ประสบความสําเร็จได้ยากขึ้น เนื่องจากระบบจะจัดเก็บโทเค็นระบุตัวตนโดยใช้พื้นที่เก็บข้อมูลเว็บเท่านั้นและจะไม่จัดเก็บไว้ในคุกกี้โทเค็น Identity Toolkit มีอายุ 2 สัปดาห์ คุณอาจต้องออกโทเค็นที่มีอายุ 2 สัปดาห์ต่อไป หรืออาจทำให้โทเค็นมีอายุนานขึ้นหรือสั้นลงตามข้อกำหนดด้านความปลอดภัยของแอปก็ได้ เมื่อผู้ใช้ออกจากระบบ ให้ล้างคุกกี้เซสชัน
ขั้นตอนที่ 3: อัปเดต URL เปลี่ยนเส้นทาง IdP
ใน Cloud Console ให้เปิดส่วนผู้ให้บริการ
ทําดังนี้สําหรับผู้ให้บริการการลงชื่อเข้าใช้แบบรวมศูนย์แต่ละรายที่คุณรองรับ
- คลิกชื่อผู้ให้บริการลงชื่อเข้าใช้
- คัดลอก URI การเปลี่ยนเส้นทาง OAuth
- อัปเดต URI การเปลี่ยนเส้นทาง OAuth ในคอนโซลนักพัฒนาซอฟต์แวร์ของผู้ให้บริการลงชื่อเข้าใช้
Android
ขั้นตอนที่ 1: เพิ่มแพลตฟอร์มข้อมูลประจำตัวลงในแอปด้วย Firebase
เปิด Cloud Console แล้วเลือกโปรเจ็กต์ Identity Toolkit
ในหน้าผู้ให้บริการ ให้คลิกรายละเอียดการตั้งค่าแอปพลิเคชัน เลือกแท็บAndroid แล้วคลิกเริ่มต้นใช้งานใน Firebase ในกล่องโต้ตอบ "เพิ่ม Firebase" ให้ระบุชื่อแพ็กเกจของแอปและลายนิ้วมือของใบรับรองการลงนาม แล้วคลิกเพิ่มแอป จากนั้นระบบจะดาวน์โหลดไฟล์การกําหนดค่า
google-services.json
ลงในคอมพิวเตอร์คัดลอกไฟล์การกําหนดค่าไปยังไดเรกทอรีรากโมดูลของแอป Android ไฟล์การกําหนดค่านี้มีข้อมูลโปรเจ็กต์และไคลเอ็นต์ Google OAuth
ในไฟล์
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.1.0' compile 'com.google.android.gms:play-services-auth:21.3.0'
ขั้นตอนที่ 2: นํา SDK ของ Identity Toolkit ออก
- นำการกำหนดค่า Identity Toolkit ออกจากไฟล์
AndroidManifest.xml
ข้อมูลนี้จะรวมอยู่ในไฟล์google-service.json
และโหลดโดยปลั๊กอิน google-services - นำ SDK ของ Identity Toolkit ออกจากแอป
ขั้นตอนที่ 3: เพิ่ม FirebaseUI ลงในแอป
เพิ่ม FirebaseUI Auth ลงในแอป
ในแอป ให้แทนที่การเรียกใช้ Identity Toolkit SDK ด้วยการเรียกใช้ FirebaseUI
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: นํา SDK ของ Identity Toolkit ออก
- นำ
GoogleIdentityToolkit
ออกจาก Podfile ของแอป - เรียกใช้คำสั่ง
pod install
ขั้นตอนที่ 3: เพิ่ม FirebaseUI ลงในแอป
เพิ่ม FirebaseUI Auth ลงในแอป
ในแอป ให้แทนที่การเรียกใช้ Identity Toolkit SDK ด้วยการเรียกใช้ FirebaseUI