ย้ายข้อมูลจาก Google Identity Toolkit ไปยัง Identity Platform ของ Google Cloud

เราได้เปิดตัว Google Identity Toolkit เวอร์ชันใหม่ล่าสุดเป็น Identity Platform และ การตรวจสอบสิทธิ์ Firebase นับจากนี้ไป งานฟีเจอร์ใน 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 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 แต่ฟีเจอร์อื่นๆ ก็มีการออกแบบใหม่ให้ทำงานต่างออกไป คุณอาจเลือกที่จะไม่ย้ายข้อมูลทันทีหากฟีเจอร์เหล่านี้สำคัญต่อแอปของคุณ ในหลายๆ กรณี ฟีเจอร์เหล่านี้อาจไม่สำคัญต่อแอปของคุณหรืออาจมีการใช้สำรองที่ใช้งานง่ายซึ่งจะทำให้คุณดำเนินการย้ายข้อมูลต่อไปได้

ความแตกต่างในฝั่งเซิร์ฟเวอร์

บริการ 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

ความแตกต่างของฝั่งไคลเอ็นต์

ใน Identity Platform ฟีเจอร์จาก Google Identity Toolkit จะแบ่งออกเป็น 2 องค์ประกอบดังนี้

  • SDK ของไคลเอ็นต์และเซิร์ฟเวอร์

    ใน Identity Platform ฟังก์ชันการทำงานที่ได้จาก REST API ของ Identity Toolkit จะรวมอยู่ใน SDK ของไคลเอ็นต์ที่พร้อมใช้งานสำหรับ Android, iOS และ JavaScript คุณสามารถใช้ SDK เพื่อลงชื่อเข้าใช้และลงชื่อสมัครใช้ให้ผู้ใช้ เข้าถึงข้อมูลโปรไฟล์ผู้ใช้ ลิงก์ อัปเดต และลบบัญชี และรีเซ็ตรหัสผ่านโดยใช้ SDK ของไคลเอ็นต์แทนการสื่อสารกับบริการแบ็กเอนด์ผ่านการเรียก REST

  • วิดเจ็ต UI

    มีการสร้างขั้นตอน UI ทั้งหมดที่จัดการการลงชื่อเข้าใช้ การลงชื่อสมัครใช้ การกู้คืนรหัสผ่าน และการลิงก์บัญชีขึ้นมาใหม่โดยใช้ SDK ของไคลเอ็นต์ และจัดแพ็กเกจเป็นวิดเจ็ตการเข้าสู่ระบบ โดยพร้อมให้บริการเป็น SDK แบบโอเพนซอร์สสำหรับ iOS, Android และเว็บ และให้คุณปรับแต่งขั้นตอนได้ทั้งหมดในแบบที่ทำไม่ได้ด้วย Identity Toolkit

ความแตกต่างอื่นๆ ได้แก่

  • เซสชันและการย้ายข้อมูล

    เนื่องจากเซสชันมีการจัดการแตกต่างกันใน Identity Toolkit และแพลตฟอร์ม Identity เซสชันที่มีอยู่ของผู้ใช้จะสิ้นสุดลงเมื่ออัปเกรด SDK และผู้ใช้จะต้องลงชื่อเข้าใช้อีกครั้ง

ก่อนเริ่มต้น

ก่อนย้ายข้อมูลจาก Identity Toolkit ไปยัง Identity Platform คุณต้องดำเนินการต่อไปนี้

  1. เปิด Cloud Console แล้วเลือกโปรเจ็กต์ Identity Toolkit

  2. จาก Marketplace ให้ไปที่ Identity Platform แล้วเลือก "เปิดใช้ Identity Platform"

  3. เปิดบัญชีบริการ คุณจะเห็นบัญชีบริการที่เคยกำหนดค่าไว้สำหรับ Identity Toolkit

  4. ถัดจากบัญชีบริการ ให้คลิก > สร้างคีย์ จากนั้นในกล่องโต้ตอบสร้างคีย์ส่วนตัว ให้ตั้งค่าประเภทคีย์เป็น JSON แล้วคลิกสร้าง จากนั้นระบบจะดาวน์โหลดไฟล์ JSON ที่มีข้อมูลเข้าสู่ระบบของบัญชีบริการให้คุณ คุณจะต้องใช้รหัสนี้เพื่อเริ่มต้น SDK ในขั้นตอนถัดไป

  5. กลับไปที่ Cloud Console ในส่วนผู้ให้บริการ ภายในวิธีการลงชื่อเข้าใช้ "อีเมล/รหัสผ่าน" ให้เปิดหน้าเทมเพลตอีเมล จากนั้นคุณสามารถปรับแต่งเทมเพลตของแอป

    ใน Identity Toolkit เมื่อผู้ใช้รีเซ็ตรหัสผ่าน เปลี่ยนอีเมล หรือยืนยันอีเมลแล้ว คุณจะต้องรับรหัส OOB จากเซิร์ฟเวอร์ Identity Toolkit แล้วส่งรหัสนั้นไปยังผู้ใช้ทางอีเมล Identity Platform จะส่งอีเมลตามเทมเพลตที่คุณกำหนดค่าโดยไม่ต้องดำเนินการใดๆ เพิ่มเติม

  6. ไม่บังคับ: หากต้องการเข้าถึงบริการ Identity Platform บนเซิร์ฟเวอร์ ให้ติดตั้ง Firebase SDK

    1. คุณจะติดตั้ง Node.js Admin SDK ได้ด้วย npm

      $ npm init
      $ npm install --save firebase-admin
      
    2. คุณสามารถเข้าถึง 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 ในเว็บมีความแตกต่างอีกมากมาย

  • การจัดการเซสชันบนเว็บ

    ก่อนหน้านี้ เมื่อผู้ใช้ตรวจสอบสิทธิ์ด้วยวิดเจ็ตชุดเครื่องมือข้อมูลประจำตัว ระบบจะตั้งค่าคุกกี้ให้กับผู้ใช้ซึ่งใช้ในการเปิดเซสชัน คุกกี้นี้มีอายุการใช้งาน 2 สัปดาห์และใช้เพื่ออนุญาตให้ผู้ใช้ใช้วิดเจ็ตการจัดการบัญชีเพื่อเปลี่ยนรหัสผ่านและอีเมล บางเว็บไซต์ใช้คุกกี้นี้เพื่อตรวจสอบสิทธิ์คำขอหน้าเว็บอื่นๆ ทั้งหมดในเว็บไซต์นั้น เว็บไซต์อื่นๆ ใช้คุกกี้ดังกล่าวเพื่อสร้างคุกกี้ของตนเองผ่านระบบการจัดการคุกกี้ของเฟรมเวิร์ก

    ตอนนี้ SDK ของไคลเอ็นต์ Identity Platform จัดการโทเค็นรหัส และทำงานร่วมกับแบ็กเอนด์ของ Identity Platform เพื่อให้เซสชันอัปเดตอยู่เสมอ เซสชันแบ็กเอนด์จะหมดอายุเมื่อเกิดการเปลี่ยนแปลงที่สำคัญในบัญชี (เช่น การเปลี่ยนรหัสผ่านของผู้ใช้) ระบบจะไม่ตั้งค่าโทเค็นรหัสเป็นคุกกี้บนเว็บไคลเอ็นต์โดยอัตโนมัติและจะมีอายุการใช้งานเพียง 1 ชั่วโมง หากคุณไม่ต้องการใช้เซสชันเพียง 1 ชั่วโมง โทเค็นรหัสก็ไม่เหมาะที่จะใช้เป็นคุกกี้เพื่อตรวจสอบคำขอหน้าเว็บทั้งหมด โดยคุณจะต้องตั้งค่า Listener แทนเมื่อผู้ใช้ลงชื่อเข้าสู่ระบบ, รับโทเค็นรหัส, ตรวจสอบโทเค็น และสร้างคุกกี้ของคุณเองผ่านระบบจัดการคุกกี้ของเฟรมเวิร์ก

    คุณจะต้องกำหนดอายุการใช้งานเซสชันของคุกกี้ตามความต้องการด้านความปลอดภัยของแอปพลิเคชัน

  • ขั้นตอนการลงชื่อเข้าใช้ผ่านเว็บ

    ก่อนหน้านี้ ระบบจะเปลี่ยนเส้นทางผู้ใช้ไปยัง accountchooser.com เมื่อเริ่มลงชื่อเข้าใช้เพื่อดูตัวระบุที่ผู้ใช้ต้องการใช้ ขั้นตอน UI ของ Identity Platform จะเริ่มด้วยรายการวิธีการลงชื่อเข้าใช้ ซึ่งรวมถึงตัวเลือกอีเมลซึ่งจะไปที่ 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: เปลี่ยนรหัสของเซิร์ฟเวอร์

  1. หากเซิร์ฟเวอร์ของคุณใช้โทเค็น Identity Toolkit (ใช้ได้ 2 สัปดาห์) ในการจัดการเซสชันของผู้ใช้เว็บ คุณจะต้องแปลงเซิร์ฟเวอร์ให้ใช้คุกกี้เซสชันของตัวเอง

    1. ใช้ปลายทางสำหรับการตรวจสอบความถูกต้องของโทเค็นรหัส และตั้งค่าคุกกี้เซสชันสำหรับผู้ใช้ แอปไคลเอ็นต์จะส่งโทเค็นรหัส Firebase ไปยังปลายทางนี้
    2. หากคำขอที่เข้ามามีคุกกี้เซสชันของคุณเอง ก็ถือว่าผู้ใช้ได้ตรวจสอบสิทธิ์แล้ว มิฉะนั้น ให้ถือว่าคำขอ เป็นแบบไม่ผ่านการตรวจสอบสิทธิ์
    3. หากคุณไม่ต้องการให้ผู้ใช้สูญเสียเซสชันที่ลงชื่อเข้าสู่ระบบที่มีอยู่ คุณควรรอ 2 สัปดาห์เพื่อให้โทเค็น Identity Toolkit ทั้งหมดหมดอายุ หรือยืนยันโทเค็นคู่สำหรับเว็บแอปพลิเคชันตามที่อธิบายไว้ในขั้นตอนที่ 3 ด้านล่าง
  2. ถัดไป เนื่องจากโทเค็นรหัสนั้นแตกต่างจากโทเค็น Identity Toolkit คุณจึงต้องอัปเดตตรรกะการตรวจสอบโทเค็น ติดตั้ง Admin SDK ลงในเซิร์ฟเวอร์ หรือหากคุณใช้ภาษาที่ Admin SDK ไม่รองรับ ให้ดาวน์โหลดไลบรารีการตรวจสอบโทเค็น JWT สำหรับสภาพแวดล้อมและตรวจสอบโทเค็นอย่างเหมาะสม

  3. เมื่อทำการอัปเดตข้างต้นเป็นครั้งแรก คุณอาจยังมีเส้นทางโค้ดที่ใช้โทเค็น Identity Toolkit อยู่ หากคุณมีแอปพลิเคชัน iOS หรือ Android ผู้ใช้จะต้องอัปเกรดเป็นเวอร์ชันใหม่เพื่อให้เส้นทางโค้ดใหม่ทำงานได้ ถ้าไม่ต้องการบังคับให้ผู้ใช้อัปเดตแอป คุณสามารถใส่ตรรกะการตรวจสอบเซิร์ฟเวอร์เพิ่มเติมที่จะใช้ตรวจสอบโทเค็นและกำหนดว่าต้องใช้ Firebase SDK หรือ Identity Toolkit SDK เพื่อตรวจสอบโทเค็น หากคุณมีเฉพาะเว็บแอปพลิเคชัน คำขอตรวจสอบสิทธิ์ใหม่ทั้งหมดจะย้ายไปที่ Identity Platform คุณจึงต้องใช้วิธีการยืนยันโทเค็นรหัสเท่านั้น

ดูข้อมูลอ้างอิงเกี่ยวกับ Web API

ขั้นตอนที่ 2: อัปเดต HTML

  1. เพิ่มโค้ดการเริ่มต้นลงในแอปดังนี้

    1. เปิดโปรเจ็กต์ใน Cloud Console
    2. ในหน้า ผู้ให้บริการ ให้คลิกรายละเอียดการตั้งค่าแอปพลิเคชัน ข้อมูลโค้ดที่เริ่มต้น Identity Platform จะปรากฏขึ้น
    3. คัดลอกและวางข้อมูลโค้ดการเริ่มต้นลงในหน้าเว็บ
  2. เพิ่มวิดเจ็ตการตรวจสอบสิทธิ์ ลงในแอป โดยทำดังนี้

    <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>
    
  3. นำ Identity Toolkit SDK ออกจากแอปของคุณ

  4. หากคุณใช้โทเค็นรหัส Identity Toolkit ในการจัดการเซสชัน คุณต้องทำการเปลี่ยนแปลงต่อไปนี้ในฝั่งไคลเอ็นต์

    1. หลังจากลงชื่อเข้าใช้ด้วย Identity Platform เรียบร้อยแล้ว ให้รับโทเค็นรหัสโดยโทรไปที่ firebase.auth().currentUser.getToken()

    2. ส่งโทเค็นรหัสไปยังเซิร์ฟเวอร์แบ็กเอนด์ ตรวจสอบความถูกต้อง และออกคุกกี้เซสชันของคุณเอง

      อย่าพึ่งพาคุกกี้เซสชันเพียงอย่างเดียวในการดำเนินการที่มีความละเอียดอ่อนหรือส่งคำขอแก้ไขที่ผ่านการตรวจสอบสิทธิ์ไปยังเซิร์ฟเวอร์ของคุณ คุณจะต้องให้การป้องกันการปลอมแปลงคำขอข้ามเว็บไซต์ (CSRF) เพิ่มเติม

      หากเฟรมเวิร์กของคุณไม่มีการป้องกัน CSRF วิธีหนึ่งที่ป้องกันการโจมตีได้คือการรับโทเค็นรหัสสำหรับผู้ใช้ที่ลงชื่อเข้าใช้ด้วย getToken() และรวมโทเค็นดังกล่าวไว้กับคำขอแต่ละรายการ (ระบบจะส่งคุกกี้เซสชันโดยค่าเริ่มต้นด้วย) จากนั้นให้ตรวจสอบโทเค็นนั้นโดยใช้ Admin SDK เพิ่มเติมจากการตรวจสอบคุกกี้ของเซสชัน ซึ่งเฟรมเวิร์กแบ็กเอนด์ของคุณดำเนินการเสร็จสิ้นแล้ว ซึ่งจะทำให้การโจมตี CSRF สำเร็จได้ยากขึ้น เนื่องจากโทเค็น ID จะจัดเก็บโดยใช้พื้นที่เก็บข้อมูลเว็บเท่านั้นและจะไม่มีการจัดเก็บในคุกกี้

    3. โทเค็น Identity Toolkit มีอายุ 2 สัปดาห์ คุณอาจต้องการออกโทเค็นที่มีอายุ 2 สัปดาห์ต่อไป หรืออาจเพิ่มระยะเวลาให้ยาวหรือสั้นลงตามข้อกำหนดด้านความปลอดภัยของแอป เมื่อผู้ใช้ออกจากระบบ ให้ล้างคุกกี้เซสชัน

ขั้นตอนที่ 3: อัปเดต URL เปลี่ยนเส้นทางของ IDP

  1. ใน Cloud Console ให้เปิดส่วนผู้ให้บริการ

  2. สำหรับผู้ให้บริการการลงชื่อเข้าใช้แบบรวมศูนย์แต่ละรายที่คุณให้การสนับสนุน ให้ดำเนินการดังต่อไปนี้

    1. คลิกชื่อผู้ให้บริการลงชื่อเข้าใช้
    2. คัดลอก URI การเปลี่ยนเส้นทาง OAuth
    3. อัปเดต URI การเปลี่ยนเส้นทาง OAuth ใน Developer Console ของผู้ให้บริการการลงชื่อเข้าใช้

Android

ขั้นตอนที่ 1: เพิ่ม Identity Platform ลงในแอปด้วย Firebase

  1. เปิด Cloud Console แล้วเลือกโปรเจ็กต์ Identity Toolkit

  2. ในหน้าผู้ให้บริการ ให้คลิกรายละเอียดการตั้งค่าแอปพลิเคชัน เลือกแท็บ Android จากนั้นคลิกเริ่มต้นใช้งานใน Firebase ในกล่องโต้ตอบเพิ่ม Firebase ให้ระบุชื่อแพ็กเกจของแอปและลงนามลายนิ้วมือของใบรับรอง แล้วคลิกเพิ่มแอป จากนั้นระบบจะดาวน์โหลดไฟล์การกำหนดค่า google-services.json ลงในคอมพิวเตอร์ของคุณ

  3. คัดลอกไฟล์การกำหนดค่าไปยังไดเรกทอรีรูทของโมดูลแอป Android โดยไฟล์การกำหนดค่านี้มีข้อมูลโปรเจ็กต์และไคลเอ็นต์ OAuth ของ Google

  4. ในไฟล์ build.gradle ระดับโปรเจ็กต์ (<var>your-project</var>/build.gradle) ให้ระบุชื่อแพ็กเกจของแอปในส่วน defaultConfig ดังนี้

    defaultConfig {
       …..
      applicationId "com.your-app"
    }
    
  5. นอกจากนี้ในไฟล์ build.gradle ระดับโปรเจ็กต์ ให้เพิ่มทรัพยากร Dependency เพื่อรวมปลั๊กอิน google-services ดังนี้

    buildscript {
     dependencies {
       // Add this line
       classpath 'com.google.gms:google-services:3.0.0'
     }
    }
    
  6. ในไฟล์ build.gradle ระดับแอปของแอป (<var>my-project</var>/<var>app-module</var>/build.gradle) ให้เพิ่มบรรทัดต่อไปนี้หลังปลั๊กอิน Android Gradle เพื่อเปิดใช้ปลั๊กอิน google-services

    apply plugin: 'com.android.application'
    // Add this line
    apply plugin: 'com.google.gms.google-services'
    

    ปลั๊กอิน google-services จะใช้ไฟล์ google-services.json เพื่อกำหนดค่าแอปพลิเคชันให้ใช้ Firebase

  7. นอกจากนี้ในไฟล์ build.gradle ระดับแอป ให้เพิ่มทรัพยากร Dependency ของการตรวจสอบสิทธิ์ Firebase ดังนี้

    compile 'com.google.firebase:firebase-auth:22.3.1'
    compile 'com.google.android.gms:play-services-auth:21.0.0'
    

ขั้นตอนที่ 2: นำ Identity Toolkit SDK ออก

  1. นำการกำหนดค่า Identity Toolkit ออกจากไฟล์ AndroidManifest.xml ข้อมูลนี้จะรวมอยู่ในไฟล์ google-service.json และโหลดโดยปลั๊กอินของ google-services
  2. นำ Identity Toolkit SDK ออกจากแอปของคุณ

ขั้นตอนที่ 3: เพิ่ม FirebaseUI ลงในแอป

  1. เพิ่ม FirebaseUI Auth ลงในแอป

  2. ในแอป ให้แทนที่การเรียกใช้ Identity Toolkit SDK ด้วยการเรียกใช้ FirebaseUI

iOS

ขั้นตอนที่ 1: เพิ่ม Firebase ลงในแอป

  1. เพิ่ม SDK ของไคลเอ็นต์ลงในแอปโดยเรียกใช้คำสั่งต่อไปนี้

    $ cd your-project directory
    $ pod init
    $ pod 'Firebase'
    
  2. เปิด Cloud Console แล้วเลือกโปรเจ็กต์ Identity Toolkit

  3. ในหน้าผู้ให้บริการ ให้คลิกรายละเอียดการตั้งค่าแอปพลิเคชัน เลือกแท็บ iOS แล้วคลิกเริ่มต้นใช้งานใน Firebase ในกล่องโต้ตอบเพิ่ม Firebase ให้ระบุชื่อแพ็กเกจของแอปและลายนิ้วมือของใบรับรองที่ลงนาม แล้วคลิกเพิ่มแอป จากนั้นระบบจะดาวน์โหลดไฟล์การกำหนดค่า google-services.json ลงในคอมพิวเตอร์ ในกล่องโต้ตอบเพิ่ม Firebase ให้ระบุรหัสชุดของแอปและรหัส App Store แล้วคลิกเพิ่มแอป จากนั้นระบบจะดาวน์โหลดไฟล์การกำหนดค่า GoogleService-Info.plist ไปยังคอมพิวเตอร์ของคุณ หากคุณมีรหัสชุดหลายรหัสในโปรเจ็กต์ รหัสชุดแต่ละรหัสต้องเชื่อมต่อในคอนโซล Firebase รหัสชุดนั้นเพื่อให้มีไฟล์ GoogleService-Info.plist เป็นของตัวเอง

  4. คัดลอกไฟล์การกำหนดค่าไปยังรูทของโปรเจ็กต์ Xcode แล้วเพิ่มลงในเป้าหมายทั้งหมด

ขั้นตอนที่ 2: นำ Identity Toolkit SDK ออก

  1. นำ GoogleIdentityToolkit ออกจาก Podfile ของแอป
  2. เรียกใช้คำสั่ง pod install

ขั้นตอนที่ 3: เพิ่ม FirebaseUI ลงในแอป

  1. เพิ่ม FirebaseUI Auth ลงในแอป

  2. ในแอป ให้แทนที่การเรียกใช้ Identity Toolkit SDK ด้วยการเรียกใช้ FirebaseUI