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

    ใน 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() และจัดการ Callback

  • ไม่มี oobActionUrl

    ตอนนี้ Identity Platform จะจัดการการส่งอีเมลและกำหนดค่าในคอนโซล Firebase

  • การปรับแต่ง CSS

    วิดเจ็ต UI ใช้การจัดรูปแบบ Material Design Lite ซึ่งจะเพิ่มภาพเคลื่อนไหว Material Design แบบไดนามิก

ขั้นตอนที่ 1: เปลี่ยนรหัสเซิร์ฟเวอร์

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

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

    compile 'com.google.firebase:firebase-auth:25.0.0'
    compile 'com.google.android.gms:play-services-auth:22.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