ย้ายข้อมูลจาก 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 และอื่นๆ คุณสามารถใช้การลงชื่อเข้าใช้แบบไม่ระบุข้อมูลระบุตัวบุคคลเพื่อสร้าง User-ID ที่ไม่ซ้ำกันโดยไม่ต้องให้ผู้ใช้ผ่านกระบวนการลงชื่อเข้าใช้หรือลงชื่อสมัครใช้ ซึ่งช่วยให้คุณเรียก API ที่ผ่านการตรวจสอบสิทธิ์ได้เช่นเดียวกับผู้ใช้ทั่วไป เมื่อผู้ใช้ตัดสินใจลงชื่อสมัครใช้บัญชี ระบบจะเก็บรักษากิจกรรมทั้งหมดไว้ด้วย User-ID เดียวกัน ฟีเจอร์นี้มีประโยชน์สำหรับสถานการณ์ต่างๆ เช่น ตะกร้าสินค้าฝั่งเซิร์ฟเวอร์หรือแอปพลิเคชันอื่นๆ ที่คุณต้องการดึงดูดผู้ใช้ก่อนที่จะส่งผู้ใช้ผ่านโฟลว์การลงชื่อสมัครใช้

  • ปรับขนาดได้อย่างมั่นใจด้วยข้อตกลงระดับการให้บริการและการสนับสนุนจากระบบคลาวด์

    Identity Platform สร้างขึ้นบนโครงสร้างพื้นฐานที่เชื่อถือได้ของ Google และมี ข้อตกลงระดับการให้บริการ และการสนับสนุนจาก Google Cloud ซึ่งหมายความว่าคุณสามารถปรับขนาดบริการได้อย่างมั่นใจ และวางใจให้ Google มอบความยืดหยุ่น ความพร้อมใช้งาน และความสามารถในการปรับขนาดที่คุณต้องการ

  • สิทธิ์เข้าถึง Firebase ทั้งหมด

    Firebase เป็นแพลตฟอร์มมือถือที่ช่วยให้คุณสามารถพัฒนาแอปคุณภาพสูง ขยายฐานผู้ใช้ และสร้างรายได้เพิ่มได้อย่างรวดเร็ว Firebase ประกอบด้วย ฟีเจอร์เสริมที่คุณสามารถนำมาใช้ร่วมกันเพื่อให้เหมาะกับความต้องการของคุณ และ มีโครงสร้างพื้นฐานสำหรับฟีเจอร์ต่างๆ ได้แก่: ข้อมูลวิเคราะห์สำหรับอุปกรณ์เคลื่อนที่, Cloud Messaging, ฐานข้อมูลแบบเรียลไทม์, พื้นที่เก็บข้อมูลไฟล์, การโฮสต์แบบคงที่, การกำหนดค่าระยะไกล, การรายงานข้อขัดข้องในอุปกรณ์เคลื่อนที่ และ การทดสอบ 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

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

ใน 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 Platform จัดการเซสชันแตกต่างกัน ระบบจะสิ้นสุดเซสชันที่มีอยู่ของผู้ใช้เมื่ออัปเกรด 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 หลายประการ

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

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

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

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

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

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

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

Android

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

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

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

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

  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:24.1.0'
    compile 'com.google.android.gms:play-services-auth:21.5.1'
    

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

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

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

  1. เพิ่มการตรวจสอบสิทธิ์ FirebaseUI ลงในแอป

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

iOS

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

  1. เพิ่ม Client 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 ลงในแอป

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