Bir kullanıcı geçiş anahtarı oluşturduğunda bağlı taraf sunucusu belirli ayrıntıları, kimlik bilgisi sağlayıcı (ör. Google Şifre Yöneticisi) ise diğer ayrıntıları 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 diğer ilişkili meta verileri kaydeder. Bu meta veriler, kullanıcıların oturum açma sırasında gerekli geçiş anahtarını tanımlayıp seçmesine yardımcı olur.
Güvenen taraf sunucusuna kaydedilen veriler ile kimlik bilgisi sağlayıcı arasındaki olası tutarsızlıklar, kötü kullanıcı deneyimlerine yol açabilir. Aşağıdaki senaryolarda sorunlar ortaya çıkabilir:
- Kimlik bilgisi, güvenen taraf sunucusunda silinir ancak kimlik bilgisi sağlayıcısında silinmez. Bu durumda, kimlik bilgisi sağlayıcı, silinen kimlik bilgisini kullanıcıya gösterir.
- Güvenen taraf sunucusunda kullanıcı adı veya görünen ad güncellenir ancak kimlik bilgisi sağlayıcıda güncellenmez. Bu durum, kimlik bilgisi sağlayıcının güncel olmayan ayrıntıları göstermesine neden olur.
Kimlik Bilgisi Yöneticisi'nin Signal API'si, kimlik bilgisi sağlayıcıların kimlik bilgilerini silmek ve kullanıcı meta verilerini (ör. kullanıcı adı ve görünen ad) güncellemek için güvenen taraflarla 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 gösterir.
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 ve androidx.credentials kitaplığının 1.6.0-beta03 sürümünden itibaren kullanılabilir.
Uygulama
Sinyal API'sini kullanmak için aşağıdaki adımları uygulayın:
Projenize Credential Manager bağımlılığını ekleyin.
Kotlin
dependencies { implementation("androidx.credentials:credentials:1.6.0-rc01") }
Groovy
dependencies { implementation "androidx.credentials:credentials:1.6.0-rc01" }
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. Aşağıdaki örneklerde gösterildiği gibi, sinyal isteği türlerinin her biri için bir JSON isteği gerekir:
Bilinmeyen kimlik bilgisi (
SignalUnknownCredentialRequest)Bir kimlik bilgisinin reddedildiğini ve bilinmiyor olarak kabul edildiğini belirtmek için
SignalUnknownCredentialRequestsimgesini 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
rpIdvecredentialId'dir. JSON yapısı hakkında daha fazla bilgi için signalUnknownCredential seçenekleri başlıklı makaleyi inceleyin.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)Kabul edilen tüm kimlik bilgilerini kullanarak kimlik bilgisi sağlayıcıları bilgilendirmek için
SignalAllAcceptedCredentialIdsRequestsimgesini kullanın. Sinyal, kimlik bilgisi sağlayıcı tarafından alındıktan sonra kimlik bilgisi sağlayıcı, bu listede yer almayan tüm kimlik bilgilerini gizler veya siler ya da listede yer alan daha önce gizlenmiş kimlik bilgilerinin gizliliğini kaldırır.Kullanım
Geçiş anahtarı doğrulaması güvenen 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 kimliklerinin kümesini 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 başlıklı makaleyi inceleyin.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ı ayrıntıları (
SignalCurrentUserDetailsRequest)SignalCurrentUserDetailsRequestkullanarak kimlik bilgisi sağlayıcıları, belirli bir kullanıcının kullanıcı adı ve görünen adı gibi meta verilerin güncellendiği ve kimlik bilgisi sağlayıcıda görünmesi gerektiği konusunda bilgilendirin.Kullanım
Kullanıcı veya güvenen 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 başlıklı makaleyi inceleyin.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
Sinyal API'si 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'e giderek 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örmeniz gerekir. Bu, kimlik bilgisi sağlayıcının istekleri aldığını doğrular.