รักษาข้อมูลเข้าสู่ระบบให้สอดคล้องกับผู้ให้บริการข้อมูลเข้าสู่ระบบ

เมื่อผู้ใช้สร้างพาสคีย์ เซิร์ฟเวอร์ของบุคคลที่สามจะบันทึกรายละเอียดบางอย่าง ส่วนผู้ให้บริการข้อมูลเข้าสู่ระบบ เช่น เครื่องมือจัดการรหัสผ่านบน Google จะบันทึกรายละเอียดอื่นๆ ดังนี้

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

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

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

Signal API ของเครื่องมือจัดการข้อมูลเข้าสู่ระบบช่วยให้ผู้ให้บริการที่เชื่อถือได้สื่อสารกับ ผู้ให้บริการข้อมูลเข้าสู่ระบบเพื่อลบข้อมูลเข้าสู่ระบบและอัปเดตข้อมูลเมตาของผู้ใช้ เช่น ชื่อผู้ใช้และชื่อที่แสดง คำขอที่รองรับมี 3 ประเภทสำหรับ สถานการณ์ต่างๆ ดังนี้

  • SignalUnknownCredentialRequest

    • ระบุว่าข้อมูลเข้าสู่ระบบที่เฉพาะเจาะจงไม่มีผลอีกต่อไปและควรซ่อนหรือนำออกจากผู้ให้บริการข้อมูลเข้าสู่ระบบ
  • SignalAllAcceptedCredentialIdsRequest

    • แสดงรายการรหัสข้อมูลเข้าสู่ระบบที่ยอมรับต่อผู้ให้บริการข้อมูลเข้าสู่ระบบ
  • SignalCurrentUserDetailsRequest

    • อัปเดตรายละเอียดข้อมูลเมตาของผู้ใช้

ความเข้ากันได้ของเวอร์ชัน

Signal API พร้อมให้บริการในอุปกรณ์ที่ใช้ Android 15 ขึ้นไป และพร้อมให้บริการตั้งแต่เวอร์ชัน 1.6.0-beta03 ของไลบรารี androidx.credentials

การใช้งาน

หากต้องการใช้ Signal API ให้ทำตามขั้นตอนต่อไปนี้

  1. เพิ่มทรัพยากร Dependency ของเครื่องมือจัดการข้อมูลเข้าสู่ระบบลงในโปรเจ็กต์

    Kotlin

    dependencies {
        implementation("androidx.credentials:credentials:1.6.0-rc01")
    }

    Groovy

    dependencies {
        implementation "androidx.credentials:credentials:1.6.0-rc01"
    }

  2. เรียกใช้ Signal API

    หากต้องการส่งคำขอสัญญาณไปยังผู้ให้บริการข้อมูลเข้าสู่ระบบ ให้ใช้คำขอสัญญาณที่รองรับ คำขอ JSON จำเป็นสำหรับคำขอสัญญาณแต่ละประเภท ดังที่แสดง ในตัวอย่างต่อไปนี้

    • ข้อมูลเข้าสู่ระบบที่ไม่รู้จัก (SignalUnknownCredentialRequest)

      ใช้ SignalUnknownCredentialRequest เพื่อส่งสัญญาณว่ามีการปฏิเสธข้อมูลเข้าสู่ระบบและถือว่าไม่รู้จัก เมื่อผู้ให้บริการข้อมูลเข้าสู่ระบบได้รับสัญญาณนี้ ก็จะซ่อนหรือลบข้อมูลเข้าสู่ระบบ

      การใช้งาน

      ใช้สัญญาณนี้เมื่อผู้ให้บริการไม่สามารถยืนยันการยืนยันพาสคีย์ได้ ซึ่งหมายความว่าพาสคีย์ไม่ถูกต้องและต้อง ซ่อนหรือนำออกจากผู้ให้บริการข้อมูลเข้าสู่ระบบ

      พารามิเตอร์ JSON ที่จำเป็นสำหรับคำขอนี้คือ rpId และ credentialId ดูข้อมูลเพิ่มเติมเกี่ยวกับโครงสร้าง JSON ได้ที่ ตัวเลือก signalUnknownCredential

      credentialManager.signalCredentialState(
          SignalUnknownCredentialRequest(
              requestJson = JSONObject().apply {
                  put("rpId", rpId /* [String] RP ID of the relying party */)
                  put("credentialId", credentialId /* [String] Credential ID of the credential to be hidden or deleted */)
              }.toString()
          )
      )
      
    • ข้อมูลเข้าสู่ระบบที่ยอมรับทั้งหมด (SignalAllAcceptedCredentialIdsRequest)

      ใช้ SignalAllAcceptedCredentialIdsRequest เพื่อแจ้งผู้ให้บริการข้อมูลเข้าสู่ระบบ ด้วยชุดข้อมูลเข้าสู่ระบบที่ยอมรับทั้งหมด เมื่อผู้ให้บริการข้อมูลเข้าสู่ระบบได้รับสัญญาณแล้ว ผู้ให้บริการจะซ่อนหรือลบข้อมูลเข้าสู่ระบบที่ไม่ได้รวมอยู่ในรายการนี้ หรือยกเลิกการซ่อนข้อมูลเข้าสู่ระบบที่ซ่อนไว้ก่อนหน้านี้ซึ่งตอนนี้รวมอยู่ในรายการแล้ว

      การใช้งาน

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

      พารามิเตอร์ JSON ที่จำเป็นสำหรับคำขอนี้คือ rpId, userId และ allAcceptedCredentialIds ดูข้อมูลเพิ่มเติมเกี่ยวกับโครงสร้าง JSON ได้ที่ตัวเลือก signalAllAcceptedCredential

      credentialManager.signalCredentialState(
          SignalAllAcceptedCredentialIdsRequest(
              requestJson = JSONObject().apply {
                  put("rpId", rpId /* [String] RP ID of the relying party */)
                  put("userId", userId /* [String] User ID of the current user */)
                  put(
                      "allAcceptedCredentialIds",
                      JSONArray(credentialIdsList /* [List<String>] List of accepted Credential IDs */)
                  )
              }.toString()
          )
      )
      
    • รายละเอียดผู้ใช้ปัจจุบัน (SignalCurrentUserDetailsRequest)

      ใช้ SignalCurrentUserDetailsRequest เพื่อแจ้งผู้ให้บริการข้อมูลเข้าสู่ระบบ ว่ามีการอัปเดตข้อมูลเมตา เช่น ชื่อผู้ใช้และชื่อที่แสดงสำหรับผู้ใช้หนึ่งๆ และควรปรากฏในผู้ให้บริการข้อมูลเข้าสู่ระบบ

      การใช้งาน

      ใช้สัญญาณนี้เมื่อผู้ใช้หรือบุคคลที่สามที่เชื่อถือได้อัปเดตข้อมูลเมตาของพาสคีย์ ที่เชื่อมโยงกับบัญชีผู้ใช้

      พารามิเตอร์ JSON ที่จำเป็นสำหรับคำขอนี้คือ rpId, userId, name และ displayName ดูข้อมูลเพิ่มเติมเกี่ยวกับโครงสร้าง JSON ได้ที่ตัวเลือก signalCurrentUserDetails

      credentialManager.signalCredentialState(
          SignalCurrentUserDetailsRequest(
              requestJson = JSONObject().apply {
                  put("rpId", rpId /* [String] RP ID of the relying party */)
                  put("userId", userId /* [String] User ID of the current user */)
                  put("name", name /* [String] New Name to be updated for the current user */)
                  put("displayName", displayName /* [String] New display name to be updated for the current user */)
              }.toString()
          )
      )
      

ทดสอบการใช้งาน

หากต้องการทดสอบการติดตั้งใช้งาน Signal API ให้ทำตามขั้นตอนต่อไปนี้

  1. ติดตั้งตัวอย่างผู้ให้บริการข้อมูลเข้าสู่ระบบชื่อ MyVault

  2. เปิดใช้ MyVault เป็นผู้ให้บริการข้อมูลเข้าสู่ระบบในการตั้งค่า > รหัสผ่าน พาสคีย์ และบัญชี > บริการที่ต้องการ

    เมนูบริการที่ต้องการในการตั้งค่า Android ซึ่งแสดง MyVault ที่เปิดใช้เป็นผู้ให้บริการข้อมูลเข้าสู่ระบบ

  3. เปิดใช้การแจ้งเตือนทั้งหมดสำหรับ MyVault ในการตั้งค่า > แอป > MyVault > การแจ้งเตือน

    เมนูการแจ้งเตือนสำหรับแอป MyVault ซึ่งแสดงการแจ้งเตือนทั้งหมดที่เปิดใช้

  4. ตรวจสอบว่าป๊อปอัปบนหน้าจอเปิดอยู่สำหรับการแจ้งเตือนในการตั้งค่า > แอป > MyVault > การแจ้งเตือน > หมวดหมู่ > Signal API Notification Channel

    การตั้งค่าแชแนลการแจ้งเตือนของ Signal API สำหรับ MyVault โดยแสดงตัวเลือก &quot;ป๊อปอัปบนหน้าจอ&quot; ที่เปิดใช้

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