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:
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" }
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
SignalUnknownCredentialRequestkullanı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
rpIdvecredentialId. 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
SignalAllAcceptedCredentialIdsRequestkullanı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,userIdveallAcceptedCredentialIds'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
SignalCurrentUserDetailsRequestyö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,namevedisplayName'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:
MyVault adlı kimlik bilgisi sağlayıcı örneğini yükleyin.
Ayarlar > Şifreler, Geçiş Anahtarları ve Hesaplar > Tercih Edilen Hizmet bölümünde MyVault'u kimlik bilgisi sağlayıcı olarak etkinleştirin.
Ayarlar > Uygulamalar > MyVault > Bildirimler bölümünde MyVault için tüm bildirimleri etkinleştirin.
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.
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.