Kimlik bilgilerinizi kimlik bilgisi sağlayıcılarla tutarlı tutma

Kullanıcı geçiş anahtarı oluşturduğunda bağlı taraf sunucusu belirli bilgileri kaydederken Google Şifre Yöneticisi gibi kimlik bilgisi sağlayıcılar diğer bilgileri kaydeder. Özellikle:

  • Güvenen taraf sunucusu, ortak anahtar kimlik bilgisini kaydeder.
  • Kimlik bilgisi sağlayıcı; kullanıcı adını, görünen adı, özel anahtarı ve ilişkili diğer meta verileri kaydeder. Bu meta veriler, kullanıcıların oturum açma sırasında gerekli geçiş anahtarını tanımlamasına ve seçmesine yardımcı olur.

Güvenen taraf sunucusuna kaydedilen veriler ile kimlik bilgisi sağlayıcı arasında olası tutarsızlıklar, kötü kullanıcı deneyimlerine yol açabilir. Aşağıdaki durumlarda sorunlar ortaya çıkabilir:

  • Kimlik bilgisi, bağlı taraf sunucusunda silinir ancak kimlik bilgisi sağlayıcıda silinmez. Bu durumda kimlik bilgisi sağlayıcı, silinen kimlik bilgisini kullanıcıya gösterir.
  • Kullanıcı adı veya görünen ad, bağlı olan taraf sunucusunda güncellenir ancak kimlik bilgisi sağlayıcıda güncellenmez. Bu durumda kimlik bilgisi sağlayıcı, güncel olmayan bilgileri gösterir.

Kimlik Bilgisi Yöneticisi'nin Signal API'si, güvenen tarafların kimlik bilgilerini silmek ve kullanıcı meta verilerini (ör. kullanıcı adı ve görünen ad) güncellemek için kimlik bilgisi sağlayıcılarla iletişim kurmasına olanak tanır. Farklı senaryolar için desteklenen üç istek türü vardır:

  • SignalUnknownCredentialRequest

    • Belirli bir kimlik bilgisinin artık geçerli olmadığını ve kimlik bilgisi sağlayıcıdan gizlenmesi veya kaldırılması gerektiğini belirtir.
  • SignalAllAcceptedCredentialIdsRequest

    • Kimlik bilgisi sağlayıcıya, kabul edilen kimlik bilgisi kimliklerinin listesini sağlar.
  • SignalCurrentUserDetailsRequest

    • Kullanıcının meta veri ayrıntılarını günceller.

Sürüm uyumluluğu

Signal API, Android 15 veya sonraki sürümlerin yüklü olduğu cihazlarda kullanılabilir. Bu API'yi kullanmak için androidx.credentials kitaplığının 1.6.0-beta03 veya sonraki bir sürümü gerekir.

Uygulama

Signal API'yi kullanmak için aşağıdaki adımları uygulayın:

  1. Projenize Kimlik Bilgisi Yöneticisi bağımlılığını ekleyin.

    Kotlin

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

    Groovy

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

  2. Signal API'yi çağırma

    Kimlik bilgisi sağlayıcıya sinyal isteği göndermek için desteklenen bir sinyal isteği kullanın. Sinyal isteği türlerinin her biri, aşağıdaki örneklerde gösterildiği gibi bir JSON isteği gerektirir:

    • Bilinmeyen kimlik bilgisi (SignalUnknownCredentialRequest)

      Bir kimlik bilgisinin reddedildiğini ve bilinmediğini belirtmek için SignalUnknownCredentialRequest kullanın. Kimlik bilgisi sağlayıcı bu sinyali aldığında kimlik bilgisini gizler veya siler.

      Kullanım

      Güvenen taraf, geçiş anahtarı onayını doğrulayamadığında bu sinyali kullanın. Bu, geçiş anahtarının geçersiz olduğu ve kimlik bilgisi sağlayıcı tarafından gizlenmesi veya kaldırılması gerektiği anlamına gelir.

      Bu istek için gerekli JSON parametreleri rpId ve credentialId. JSON yapısı hakkında daha fazla bilgi için signalUnknownCredential seçenekleri bölümüne bakın.

      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()
          )
      )
      
    • Kabul edilen tüm kimlik bilgileri (SignalAllAcceptedCredentialIdsRequest)

      Kimlik bilgisi sağlayıcıları kabul edilen tüm kimlik bilgileriyle bilgilendirmek için SignalAllAcceptedCredentialIdsRequest kullanın. Kimlik bilgisi sağlayıcı, sinyali aldıktan sonra bu listede yer almayan kimlik bilgilerini gizler veya siler ya da daha önce gizlenmiş olan ve artık listede yer alan kimlik bilgilerini gösterir.

      Kullanım

      Geçiş anahtarı doğrulaması, bağlı taraf tarafından başarısız olduğunda bu sinyali kullanın. Bu hata, geçiş anahtarının geçersiz olduğu ve kimlik bilgisi sağlayıcı tarafından gizlenmesi veya kaldırılması gerektiği anlamına gelir. Bu sinyali, bilinen kimlik bilgisi kimlikleri grubunu kimlik bilgisi sağlayıcılara yayınlamanız gerektiğinde de kullanabilirsiniz.

      Bu istek için gerekli JSON parametreleri rpId, userId ve allAcceptedCredentialIds'dir. JSON yapısı hakkında daha fazla bilgi için signalAllAcceptedCredential seçenekleri bölümüne bakın.

      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()
          )
      )
      
    • Mevcut kullanıcı bilgileri (SignalCurrentUserDetailsRequest)

      Kimlik bilgisi sağlayıcılara, belirli bir kullanıcının kullanıcı adı ve görünen adı gibi meta verilerin güncellendiğini ve kimlik bilgisi sağlayıcıda görünmesi gerektiğini bildirmek için SignalCurrentUserDetailsRequest yöntemini kullanın.

      Kullanım

      Kullanıcı veya bağlı taraf, kullanıcı hesabıyla ilişkili geçiş anahtarı meta verilerini güncellediğinde bu sinyali kullanın.

      Bu istek için gerekli JSON parametreleri rpId, userId, name ve displayName'dir. JSON yapısı hakkında daha fazla bilgi için signalCurrentUserDetails seçenekleri bölümüne bakın.

      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()
          )
      )
      

Uygulamayı test etme

Signal API uygulamanızı test etmek için aşağıdaki adımları tamamlayın:

  1. MyVault adlı kimlik bilgisi sağlayıcı örneğini yükleyin.

  2. Ayarlar > Şifreler, Geçiş Anahtarları ve Hesaplar > Tercih Edilen Hizmet bölümünde MyVault'u kimlik bilgisi sağlayıcı olarak etkinleştirin.

    Android ayarlarındaki Tercih Edilen Hizmet menüsünde MyVault'un kimlik bilgisi sağlayıcı olarak etkinleştirildiği gösteriliyor.

  3. Ayarlar > Uygulamalar > MyVault > Bildirimler bölümünde MyVault için tüm bildirimleri etkinleştirin.

    MyVault uygulamasının tüm bildirimlerin etkinleştirildiğini gösteren Bildirimler menüsü.

  4. Ayarlar > Uygulamalar > MyVault > Bildirimler > Kategoriler > Signal API Bildirim Kanalı bölümünde bildirimler için Ekranda göster seçeneğinin açık olduğunu doğrulayın.

    MyVault için Signal API bildirim kanalı ayarları, &quot;Ekranda göster&quot; seçeneğinin etkin olduğunu gösteriyor.

  5. Uygulamanızda, kimlik bilgisi sağlayıcıya sinyal istekleri gönderen akışları tetikleyin. Ekranda MyVault'tan gelen bildirimleri görürsünüz. Bu, kimlik bilgisi sağlayıcının istekleri aldığını doğrular.