Kullanıcı Kimlik Doğrulama Süreçlerini Kolaylaştırma (Cross Platformlar ve Cross Uygulamalar…
Tags: hms, android, huawei, google
Published: 2022-05-18 13:45:14

---
title: Kullanıcı Kimlik Doğrulama Süreçlerini Kolaylaştırma (Cross Platformlar ve Cross Uygulamalar…
published: true
date: 2022-04-07 18:12:17 UTC
tags: hms,android,huawei,google
canonical_url: 
---

### 👨🏼‍💻Kullanıcı Kimlik Doğrulama Süreçlerini Kolaylaştırma (Cross Platformlar ve Uygulamalar dahil) | Keyring vs SmartLock for Passwords

![](https://cdn-images-1.medium.com/max/1024/0*sHiJRWIiIAcA8D_V)
_Source_

**Giriş**

Herkese merhabalar👋, Sizin için bir sorum var❓

> 🤔 💭 Düşünün ki Meta -eski adıyla Facebook- gibi bir şirketiniz var. Dolayısyla Facebook, Whatsapp, Instagram gibi bir çok uygulamanız/projeniz var. Bazen kullanıcılarınız şifrelerini/hesaplarını unuttukları için sizin uygulamalarınıza giremiyorlar. Bu yüzden de uygulamalarınızdaki “Şifremi Unuttum” özelliğini kullanarak şifrelerini kurtarmaya çalışıyorlar. Buna bir zaman harcıyorlar. Bu durum kullanıcılar için kolay olmayan, kullanıcı dostu olmayan bir uygulama deneyimi yaşamalarına sebep oluyor. E tabi sizin Şifremi Unuttum servisleriniz de çokça istek aldığı için maliyetleriniz artıyordur.

<iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fgiphy.com%2Fembed%2FIgLIVXrBcID9cExa6r%2Ftwitter%2Fiframe&amp;display_name=Giphy&amp;url=https%3A%2F%2Fmedia.giphy.com%2Fmedia%2FIgLIVXrBcID9cExa6r%2Fgiphy.gif&amp;image=https%3A%2F%2Fi.giphy.com%2Fmedia%2FIgLIVXrBcID9cExa6r%2Fgiphy.gif&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=giphy" width="435" height="435" frameborder="0" scrolling="no"><a href="https://medium.com/media/ebc2f5a06f3f52804bf8e99797d42181/href">https://medium.com/media/ebc2f5a06f3f52804bf8e99797d42181/href</a></iframe>

> 🤔 Aklınıza kullanıcı bilgilerini projeleriniz arasında paylaşmak gibi bir fikir gelir. Kullanıcı bilgilerini uygulamalar arasında ve platfromlar arasında -Android Uygulamalar/Websiteler gibi- paylaşarak kullanıcı doğrulama süreçlerini kolaylaştırmak istiyorsunuz. Kullanıcılar projeleriniz arasında bilgilerini paylaşabilirse sadece 1 şifreyi hatırlamaları yeterli olacaktır. **Projeleriniz, uygulamalarınız arasında kullanıcı bilgilerini nasıl paylaşırdınız** ❓

🔎Bu makalede hem HMS Core’a sahip cihazlar için hemde Google Play Servislerine sahip cihazlar için sorumuzun cevabını arayacağız.

Huawei Keyring Servisi bizim ihtiyaçlarımızı tam olarak karşılıyor. Hadi inceleyelim bakalım.

### 🔑🔐 Huawei Keyring

Keyring kullanıcı kimlik bilgilerini Android cihazlarda saklamamızı, bunları farklı uygulamalar arasında hatta web siteleri, quick app’ler gibi platformlarla da paylaşabilmemizi sağlayan Huawei tarafından sağlanan bir SDK’dir.

> Keyring [android uygulamaları](https://developer.huawei.com/consumer/en/doc/development/Security-References/overview-0000001133344960), [web uygulamaları](https://developer.huawei.com/consumer/en/doc/development/Security-References/javascript-overview-0000001214568685) ve [quick (hızlı) uygulamalar](https://developer.huawei.com/consumer/en/doc/development/quickApp-Guides/quickapp-access-keyring-kit-0000001161177180) için API’lar barındırır. Uygulamalar Keyring’i kullanmak için ilgili API’yi entegre edebilirler. Tüm kullanıcı bilgileri birleşik yönetim ve paylaşım için, hangi API’leri çağırdığınızdan bağımsız olarak HMS Core Keyring’te saklanacaktır.

![](https://cdn-images-1.medium.com/max/989/0*7Z-D57pOBzbTb6SH)
_Keyring farklı platformlarlar nasıl çalışır_

#### 💾🔏Kullanıcı kimlik bilgilerini güvenli bir şekilde saklama ve elde etme
<iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fgiphy.com%2Fembed%2F110dhxfJebYOTm%2Ftwitter%2Fiframe&amp;display_name=Giphy&amp;url=https%3A%2F%2Fmedia.giphy.com%2Fmedia%2F110dhxfJebYOTm%2Fgiphy.gif&amp;image=https%3A%2F%2Fi.giphy.com%2Fmedia%2F110dhxfJebYOTm%2Fgiphy.gif&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=giphy" width="435" height="278" frameborder="0" scrolling="no"><a href="https://medium.com/media/b9c01a1ccf54591de29db932b04792a2/href">https://medium.com/media/b9c01a1ccf54591de29db932b04792a2/href</a></iframe>

Keyring kullanıcının kimlik bilgilerini **şifreleyip** kullanıcının cihazında bulunan HMS Core’a kayıt eder. Ek olarak herhangi birisi bizim daha önce kaydettiğimiz bir kimlik bilgisine eriştiğinde [**biyometrik doğrulama**](https://github.com/Explore-In-HMS/Explore-Landmarks/blob/master/art/01Login/04BiometricAuth.png) **ve kilit açma ekranının şifresi** ni sormak istiyorsak, kimlik bilgisini kayıt ederken (Credential), hazırladığımız kimlik bilgisini **_userAuth_** _değişkenine true vererek bunu sağlayabiliriz._

> Herhangi bir uygulama/platform **userAuth** değişken değerinin true olduğu bir kimlik bilgisine erişmeye çalıştığında Keyring kullanıcıdan [**biyometrik doğrulama**](https://github.com/Explore-In-HMS/Explore-Landmarks/blob/master/art/01Login/04BiometricAuth.png) **veya kilit açma ekranının şifresi** ile o cihazın gerçek sahibi olduğunu doğrulamasını ister. Doğrulama yapılmadığı sürece uygulama/platform erişmeye çalıştığı kimlik bilgisinin şifresine erişemez. Ayrıca kullanıcılara birden fazla giriş seçeneği sunmak için **birden fazla kimlik bilgisini kayıt edebilirsiniz**.

#### 📱📲 Cross-App Giriş & 💻📲 Cross-Platform Giriş ( Kimlik Bilgilerini Paylaşma)

![](https://cdn-images-1.medium.com/max/512/1*esctU4Kz1ZamW8Ok1R-Ayw.png)

Bir kimlik bilgisini kayıt ederken, bu kimlik bilgisini paylaşmak istediğiniz uygulamaların ve platformların bazı bilgilerini o kimlik bilgisinin **_sharedWith_** değişkenine paslayabilirsiniz. Böylece kaydettiğiniz kimlik bilgisini tanımladığınız uygulamalarla, platformlarla güvenli bir şekilde paylaşabilirsiniz.

![](https://cdn-images-1.medium.com/max/944/1*poOCD4KDgdyrNthbASwWnA.png)
_Kimlik bilgisini diğer platformlarla paylaşırken diğer platformların bazı basit bilgilerine ihtiyacınız vardır._

Kayıtlı olan kimlik bilgilerini Keyring’ten çekerken daha önce sizin uygulamanızdan kaydettiğiniz kimlik bilgilerine ek olarak sizin uygulamanızla paylaşılmış olan kimlik bilgilerini de elde edebilirsiniz. Bunun hangi uygulamaların/platformların sizin uygulamanıza güvendiğini ve sizin uygulamanızla bazı veriler paylaşmış olabileceğini tanımlamak için kayıtlı kimlik bilgileri isteğinde bulunurken -bir kimlik bilgisini kayıt ederkenki gibi _trustedAppList_ paslayabilirsiniz.

**Örneğin;** Bir kullanıcı Instagram android uygulamasına giriş yaptı ve Instagram’da kullanıcıyı kayıt ederken bir _trustedAppList_ ile kaydetti. Varsayalım ki bu _trustedAppList_ Instagram websitesinin, Facebook android uygulamasının, Facebook websitesinin, WhatsApp android uygulamasının bilgilerini(identity) içeriyor olsun. Bir kullanıcı Facebook uygulamasına girdiğinde Facebook uygulaması daha önce kayıt edilmiş kimlik bilgilerini HMS Core’dan isteyecektir. Facebook android uygulaması bu istekte bulunurken eğer Instagram’ın bilgilerini(identity) bir _trustedAppList_ içinde paslarsa Instagram tarafından HMS Core’a kayıt edilmiş kimlik bilgilerini de elde edebilecektir. Daha sonrasında Facebook uygulaması elde ettiği listeyi ekranda gösterecek ve kullanıcı da Facebook uygulamasına giriş yapabilmek için Instagram hesabının kimlik bilgilerini kullanabilecektir.

> **Tek kimlik bilgisi, 2 farklı uygulama. Sorunsuz ve zahmetsiz kullanıcı deneyimi. İşte Keyring’in gücü 💪**

Not; Kimlik bilgilerini kayıt ederken ve daha önce kayıtlı kimlik bilgilerini çekerken _trustedAppList_ farklı olabilir. Aynı olmak zorunda değildir. Örneğin A kimlik bilgisini kayıt ederken bu kimlik bilgisini 3 platformla/uygulayla paylaşmak istiyorsanız sadece 3 tane platform bilgisini (identity) listeye ekleyebilirsiniz. B kimlik bilgisi için sadece 1 platfrom bilgisi paslayabilirsiniz. Ve hatta isterseniz hiç platfrom bilgisi paslamayadabilirsiniz. Bu durumda kimlik bilgisine sadece onu kayıt eden uygulama erişebilecektir. Daha önce kayıtlı kimlik bilgilerine erişirken de isterseniz 5 tane platform bilgisi paslayabilirsiniz. Herhangi bir problem olmaz. İhtiyaçlarınıza göre özelleştirebilirsiniz. (XXX kimlik bilgisini hangi platformlar ile paylaşmak istiyorsunuz? Hangi platformlar sizinle kimlik bilgisi paylaşımında bulunmuş olabilir?)

#### 💪Supported Devices

![](https://cdn-images-1.medium.com/max/1014/1*OiL4PgvbsZ4wx1Gsy3Vgpg.png)
_Keyring kullanan cihazlar_

Keyring Servisini kullanabilmek için cihazlarda HMS Core bulunmalıdır. Keyring kullanıcılarımızın hayatını kolaylaştırmak ve web request maliyetlerimizi azaltmak için çok güzel bir çözüm. Peki HMS Core bulundurmayıp da Google Play Servisleri’ne sahip cihazlar için bir çözüm var mı?

### 🔑Google Identity Smart Lock for Passwords

Bu SDK programatik olarak **kimlik bilgilerini kaydetmeyi, elde etmeyi** ve kullanıcıların farklı cihazlar ve websiteleri arasında oturum açmasını sağlar.

> Not; güncellenmiş kullanıcı deneyimi ve diğer geliştirmeler için Google ihtiyaçlarınızı karşılıyorsa Smart Lock for Passwords yerine One Tap kullanmanızı tavsiye eder. Ama One Tap’in uygulamalar veya websiteleri arasında kimlik bilgisi paylaşma gibi bir özelliği bulunmamaktadır.

![](https://cdn-images-1.medium.com/max/1024/1*0aMirnu556HE-o9pdYkkVQ.png)
_Smart Lock for Passwords bulunduran Android cihazlar icin versiyon 4.4 veya üstü olmalıdır._

#### 💾 Kullanıcı kimlik bilgilerini saklama ve alma

![](https://cdn-images-1.medium.com/max/512/1*5NiZ2BNyZJhYaUnMYc1jzw.png)

Bir kimlik bilgisini kayıt ederken veya kimlik bilgilerini çekerken oturum açma tipini şifre tabanlı oturum açma veya Google ile giriş, Twitter ile giriş gibi [sık kullanılan oturum açma sağlayıcıları](https://developers.google.com/android/reference/com/google/android/gms/auth/api/credentials/IdentityProviders) olarak belirtebilirsiniz.

Smart Lock for Passwords kimlik bilgilerini kayıt etmek için [**kullanıcıdan onay ister**](https://developers.google.com/identity/smartlock-passwords/android/store-credentials#store_credentials) **.** Kullanıcının onay vermemesi halinde uygulamanızın kimlik bilgilerini saklama isteği kullanıcıya bir daha gösterilmez. Kullanıcı bu tercihini daha sonra Google Ayarlar uygulamasının Smart Lock for Password başlığından değiştirebilir. **Keyring’te böyle bir durum yoktur.**

Smart Lock for Passwords kayıtlı olan tüm kimlik bilgilerinin içinde bulunduğu bir liste vermez. Eğer birden fazla kimlik bilgisi varsa veya hiç yoksa size liste vermek yerine [hata fırlatır](https://developers.google.com/identity/smartlock-passwords/android/retrieve-credentials#handle_multiple_saved_credentials). Daha sonrasında uygun API’yi çağırma veya uygun ekranı gösterme durumlarını sizin yönetmeniz gerekir. Birden fazla kimlik bilgisi varsa _startResolutionForResult()_ metodunu çağırmalısınız. Daha sonra **SDK** kullanıcının bir tanesini seçmesi için **kimlik bilgilerini ekranda listeler**. Kullanıcının ekrandaki kimlik bilgilerinden birini seçmesi halinde ilgili kimlik bilgisi size verilir.

#### 💻📲 Kimlik Bilgilerini Paylaşma

Smart Lock for Passwords otomatik giriş için uygulamalar ve websiteleri arasında kimlik bilgilerini paylaşma imkanı sağlar.Ama kimlik bilgilerini **android uygulamalar arasında** paylaşma gibi bir özelliği **yoktur**. Bunun yerine Content Provider gibi bir yapı kullanmanız gerekir.

Bir uygulama ile websiteyi ilişkilendirmek için aralarındaki ilişkiyi websitenize ekleyeceğiniz [**Digital Asset Links JSON**](https://developers.google.com/identity/smartlock-passwords/android/associate-apps-and-sites) dosyasında tanımlamanız gerekir. Ve uygulamanızın manifest dosyasına bu dosya için bir link eklemeniz gerekmekte. Ayrıca websitenizin oturum açma domaini **HTTPS** üzerinden erişilebilir olmalıdır. Ve ilişkilendirmelerin yapılabilmesi için uygulamanızın **public** bir kanal üzerinden **release** edilmesi gerekir.

#### 💡 Oturum açma ipuçları & Otomatik Doldurma
<iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fgiphy.com%2Fembed%2Fl1KVaST85EIicDiLe%2Ftwitter%2Fiframe&amp;display_name=Giphy&amp;url=https%3A%2F%2Fmedia.giphy.com%2Fmedia%2Fl1KVaST85EIicDiLe%2Fgiphy.gif&amp;image=https%3A%2F%2Fi.giphy.com%2Fmedia%2Fl1KVaST85EIicDiLe%2Fgiphy.gif&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=giphy" width="435" height="324" frameborder="0" scrolling="no"><a href="https://medium.com/media/db5e15b9437c1b861a1303ccc56529d1/href">https://medium.com/media/db5e15b9437c1b861a1303ccc56529d1/href</a></iframe>

SmartLock for Passwords kayıtlı kimlik bilgilerini alma isteği başarısız olduğunda kullanıcı adı, e-posta adresi gibi giriş yapma ipuçları sağlar. Android O veya üzerindeki cihazlarda şifre kimlik bilgilerini kaydetmek için Smart Lock kullandığınızda, Smart Lock mümkün oldukça **native otomatik doldurma onay diyaloğu** gösterir.

### 🔑🔐 Huawei Keyring vs Google Identity Smart Lock for Passwords

![](https://cdn-images-1.medium.com/max/1024/1*V3JBmD0Vt6U4_n9TDWWolw.png)
_Huawei Keyring vs Google Identity Smart Lock for Passwords_

> [Buraya tıklayarak excel tablosunu daha detaylı görüntüleyebilirsiniz.](https://docs.google.com/spreadsheets/d/1SjSrqZMsKUJr4d6aXsbfakU_KSHJq93W/edit#gid=858545918)

### 🔚 💚 👏 Son sözler

Bu makalemizde kullanıcılarımızın kimliklerini doğrulama süreçlerini nasıl kolaylaştırabileceğimize baktık. Ayrıca Huawei Keyring Servisini ve Google Identity Smart Lock For Password SDK’sını kıyasladık. Umarım sizler için faydalı ve bilgilendirici olmuştur. Bir hata görmeniz durumunda lütfen [benimle iletişime geçmekten](https://www.linkedin.com/in/cengiztoru/) çekinmeyin. Okuduğunuz için teşekkürler. Sonraki makalelerde görüşmek üzere sağlıklı günler dilerim👋.

(Alkış butonunu kırmayı unutmayalım pls.😊)

### Kaynaklar

#### Keyring

- [Explore-Landmarks/CredentialManagementViewModel.kt at master · Explore-In-HMS/Explore-Landmarks](https://github.com/Explore-In-HMS/Explore-Landmarks/blob/master/app/src/main/java/com/hms/explorelandmarks/ui/authentication/CredentialManagementViewModel.kt)
- [Keyring](https://developer.huawei.com/consumer/en/hms/huawei-keyring/)
- [Document](https://developer.huawei.com/consumer/en/doc/development/Security-Guides/introduction-0000001133141068)
- [👨🏼‍💻 Manage Your Credentials with Huawei Keyring](https://medium.com/huawei-developers/manage-your-credentials-with-huawei-keyring-ac7f2d82b4ac)
- [Shares the user’s credentials between your Android apps, quick apps, and web apps using Huawei…](https://basavarajnavi.medium.com/shares-the-users-credentials-between-your-android-apps-quick-apps-and-web-apps-using-huawei-cb4f8a69ddac)
- [Document](https://developer.huawei.com/consumer/en/doc/development/Security-References/credential-0000001133185188)
- [Document](https://developer.huawei.com/consumer/en/doc/development/Security-References/credentialtype-0000001179304561)

#### Smart Lock for Passwords

- [Google Identity | Google Developers](https://developers.google.com/identity)
- [Smart Lock for Passwords on Android | Google Developers](https://developers.google.com/identity/smartlock-passwords/android)
- [Enable automatic sign-in across apps and websites | Smart Lock for Passwords on Android | Google Developers](https://developers.google.com/identity/smartlock-passwords/android/associate-apps-and-sites)
- [IdentityProviders | Google Play services | Google Developers](https://developers.google.com/android/reference/com/google/android/gms/auth/api/credentials/IdentityProviders)

* * *