DEV Community

Cengiz TORU
Cengiz TORU

Posted on • Originally published at Medium on

Kullanıcı Kimlik Doğrulama Süreçlerini Kolaylaştırma (Cross Platformlar ve Cross Uygulamalar…

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


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.

https://medium.com/media/ebc2f5a06f3f52804bf8e99797d42181/href

🤔 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ı, web uygulamaları ve quick (hızlı) uygulamalar 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.


Keyring farklı platformlarlar nasıl çalışır

💾🔏Kullanıcı kimlik bilgilerini güvenli bir şekilde saklama ve elde etme

https://medium.com/media/b9c01a1ccf54591de29db932b04792a2/href

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

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.


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


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.


Smart Lock for Passwords bulunduran Android cihazlar icin versiyon 4.4 veya üstü olmalıdır.

💾 Kullanıcı kimlik bilgilerini saklama ve alma

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ı olarak belirtebilirsiniz.

Smart Lock for Passwords kimlik bilgilerini kayıt etmek için kullanıcıdan onay ister . 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. 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 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

https://medium.com/media/db5e15b9437c1b861a1303ccc56529d1/href

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


Huawei Keyring vs Google Identity Smart Lock for Passwords

Buraya tıklayarak excel tablosunu daha detaylı görüntüleyebilirsiniz.

🔚 💚 👏 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 ç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

Smart Lock for Passwords


Discussion (0)