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

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

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

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

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

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

  • 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.6.0-rc01")
    }

    Groovy

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

  2. Signal API को कॉल करना

    क्रेडेंशियल देने वाली कंपनी को सिग्नल का अनुरोध भेजने के लिए, सिग्नल के अनुरोध का इस्तेमाल करें. सिग्नल के हर अनुरोध के लिए, JSON अनुरोध की ज़रूरत होती है. यहां दिए गए उदाहरणों में इसे दिखाया गया है:

    • क्रेडेंशियल की जानकारी नहीं है (SignalUnknownCredentialRequest)

      SignalUnknownCredentialRequest का इस्तेमाल करके यह बताया जाता है कि क्रेडेंशियल अस्वीकार कर दिया गया है और उसे अज्ञात माना जाता है. क्रेडेंशियल प्रोवाइडर को यह सिग्नल मिलने पर, वह क्रेडेंशियल को छिपा देता है या मिटा देता है.

      इस्तेमाल

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

      इस अनुरोध के लिए ज़रूरी 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 की सेटिंग में मौजूद &#39;पसंदीदा सेवा&#39; मेन्यू में, MyVault को क्रेडेंशियल देने वाली कंपनी के तौर पर चालू किया गया है.

  3. सेटिंग > ऐप्लिकेशन > MyVault > सूचनाएं में जाकर, MyVault के लिए सभी सूचनाएं पाने की सुविधा चालू करें.

    MyVault ऐप्लिकेशन के लिए सूचनाएं मेन्यू, जिसमें चालू की गई सभी सूचनाएं दिख रही हैं.

  4. पक्का करें कि सेटिंग > ऐप्लिकेशन > MyVault > सूचनाएं > कैटेगरी > Signal API Notification Channel में, सूचनाओं के लिए स्क्रीन पर पॉप-अप करें सेटिंग चालू हो.

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

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