क्रेडेंशियल देने वाली कंपनियों के हिसाब से अपने क्रेडेंशियल अपडेट करें

जब कोई उपयोगकर्ता पासकी बनाता है, तो रिलाइंग पार्टी सर्वर कुछ जानकारी सेव करता है. वहीं, क्रेडेंशियल प्रोवाइडर, जैसे कि Google Password Manager, अन्य जानकारी सेव करता है. खास तौर से:

  • भरोसेमंद पार्टी का सर्वर, सार्वजनिक पासकोड को सेव करता है.
  • क्रेडेंशियल देने वाली सेवा, उपयोगकर्ता नाम, डिसप्ले नेम, निजी कुंजी, और इससे जुड़ा अन्य मेटाडेटा सेव करती है. इस मेटाडेटा से, उपयोगकर्ताओं को साइन-इन के दौरान ज़रूरी पासकी की पहचान करने और उसे चुनने में मदद मिलती है.

भरोसा करने वाली पार्टी के सर्वर और क्रेडेंशियल देने वाली कंपनी के सर्वर पर सेव किए गए डेटा में अंतर होने की वजह से, लोगों को खराब अनुभव मिल सकता है. इन स्थितियों में समस्याएं आ सकती हैं:

  • क्रेडेंशियल को Relying Party सर्वर से मिटा दिया जाता है, लेकिन क्रेडेंशियल देने वाली कंपनी से नहीं. इससे क्रेडेंशियल देने वाली कंपनी, उपयोगकर्ता को मिटाया गया क्रेडेंशियल दिखाती है.
  • भरोसेमंद पार्टी के सर्वर पर उपयोगकर्ता नाम या डिसप्ले नेम अपडेट किया गया है, लेकिन क्रेडेंशियल सेवा देने वाली कंपनी के सर्वर पर अपडेट नहीं किया गया है. इस वजह से, क्रेडेंशियल सेवा देने वाली कंपनी पुरानी जानकारी दिखाती है.

Credential Manager के Signal API की मदद से, Relying Party, क्रेडेंशियल मिटाने और उपयोगकर्ता के मेटाडेटा को अपडेट करने के लिए, क्रेडेंशियल प्रोवाइडर से संपर्क कर सकती हैं. जैसे, उपयोगकर्ता नाम और डिसप्ले नेम. अलग-अलग स्थितियों के लिए, अनुरोध तीन तरह से किए जा सकते हैं:

  • SignalUnknownCredentialRequest

    • इससे पता चलता है कि कोई क्रेडेंशियल अब मान्य नहीं है. इसलिए, इसे क्रेडेंशियल देने वाली कंपनी से छिपा दिया जाना चाहिए या हटा दिया जाना चाहिए.
  • SignalAllAcceptedCredentialIdsRequest

    • यह कुकी, क्रेडेंशियल देने वाली कंपनी को स्वीकार किए गए क्रेडेंशियल आईडी की सूची उपलब्ध कराती है.
  • SignalCurrentUserDetailsRequest

    • यह कुकी, उपयोगकर्ता के मेटाडेटा की जानकारी को अपडेट करती है.

वर्शन के साथ काम करने वाली सुविधाएं

Signal API, Android 15 या इसके बाद के वर्शन पर चलने वाले डिवाइसों पर उपलब्ध है. साथ ही, यह androidx.credentials लाइब्रेरी के 1.6.0-beta03 वर्शन से उपलब्ध है.

लागू करना

Signal API का इस्तेमाल करने के लिए, यह तरीका अपनाएं:

  1. अपने प्रोजेक्ट में Credential Manager डिपेंडेंसी जोड़ें.

    Kotlin

    dependencies {
        implementation("androidx.credentials:credentials:1.7.0-alpha02")
    }

    Groovy

    dependencies {
        implementation "androidx.credentials:credentials:1.7.0-alpha02"
    }

  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 में, सूचनाओं के लिए स्क्रीन पर पॉप-अप करें सेटिंग चालू हो.

    MyVault के लिए, Signal API के सूचना चैनल की सेटिंग. इसमें 'स्क्रीन पर पॉप-अप करें' विकल्प चालू दिख रहा है.

  5. अपने ऐप्लिकेशन में, उन फ़्लो को ट्रिगर करें जो क्रेडेंशियल देने वाली कंपनी को सिग्नल के अनुरोध भेजते हैं. आपको स्क्रीन पर MyVault से मिली सूचनाएँ दिखनी चाहिए. इससे पुष्टि होती है कि क्रेडेंशियल देने वाली कंपनी को अनुरोध मिल गए हैं.