Huawei Account Kit Anlatım ve Terminolojisi

Barıs Can Kurtulmus
Huawei Developers - Türkiye
7 min readJun 30, 2020

Huawei Mobil Servis geliştirme dünyasında adımlarını temel kavramları netleştirerek ilerlemekte bir mahzur görmeyen sevgili okur ,hoşgeldin.

Bu yazım sadece teknik detaylara odaklanacak diğer Huawei Account Kit ile Geliştirmenin Temelleri odaklı yazıma ön hazırlık niteliğinde Huawei Account Kiti’nin özelliklerini, kavramsal işleyişini, Account Kit tabanlı terimleri ve açıklamalarını konu almaktadır.

Tanımla başlayalım.

Account Kit’inin görevi temelde 3. parti akıllı telefon uygulamalarına tek bir hesabı, Huawei ID’nizi kullanarak hızlı,basit ve güvenilir şekilde giriş yapmanızı sağlamasıdır.

Kitin İngilizce resmi kaynaklarını incelediğinizde de hızlılık,basitlik ve güvenilirlik kavramlarının vurgulandığı anlaşılır . Hızlılık ve basitliğin nereden kaynaklandığını anlayabilmek için şu yönde bir gözlemden faydalanabiliriz:

Huawei App Gallery ve Google Play Store’a baktığınızda milyonlarca farklı görevleri yerine getiren mobil uygulamayı barındırdığını görürsünüz. Bunlardan bir kısmı mail adresi,telefon numarası ve şifre bilgisiyle kayıt gerektirdiği ve sizin de bu tip birçok uygulamada hesap açmanızın lazım olduğu düşünüldüğünde, her bir uygulama için ayrı ayrı kayıt ve onaylama adımını geçip ,güvenliği de dert ediyorsanız her biri için ayrı şifre bilgisi tutmanıza sebep olacaktır. Bu tip bir ayrımı önlemek amacıyla Huawei tarafında telefonunuzun ilk kullanımında bir kez oluşturulan tek bir HUAWEI ID kullanarak basitçe ve bütün uygulamalara kayıt sürecini en az adıma indirecek şekilde kullanıcıya hızlı giriş deneyimi sağlayan bir Mobil Servis birimi bulunur. Huawei Account Kit’i olarak bilinen bu birimi uygulamanıza entegre ettiğinizde kullanıcılılar için hızlılığı ve basitliği bu şekilde garanti altına almış olursunuz.

  • Tek dokunuşla uygulamalara giriş (doğrulama veya giriş bilgilerini teker teker girmeden)
Hepsine login olmanı sağlayacak bir kit, hepsini bulacak, hepsini bir araya getirecek ve Huawei App Gallery’de bağlayabilecek.

Peki, bunların dışında Geliştiriciler neden Huawei Account Kit’ini tercih etmeli ?

  1. Bir çok farklı tipte cihaz desteği : Akıllı telefon , Bilgisayar, Tablet, giyilebilir vb. cihazlara desteği göz önünde bulundurulduğunda sadece akıllı telefon piyasasındaki uygulamalar için değil , akıllı saatlar,tabletler gibi değişik kullanıcı portföylerini de içine alan uygulamalara destek verir.HUAWEI ID ile kolayca bu cihazlardaki uygulamalara giriş yapabilecek duruma ulaşırsınız.
  2. Küresel erişim : Sadece Türkiye üzerinde değil Huawei’in Dünya çapındaki 190dan fazla ülke ve bölgedeki mobil uygulama ağı ve marketinin bir parçası olmanıza yardımcı olur.
  3. Güvenlik : Global ve yerel güvenlik standartları ile uyumlu hesap güvenliği desteği sağlanır.Hesap yetkilendirmesi şifre bazlı veya cihaz bazlı tanımlanabilir.

HUAWEI ID hesap koruma ve güvenilirlikte ne tür özellikler barındırıyor ?

  • İki etmenli doğrulama (şifre ile ve doğrulama kodu ile)
  • Hesap Risk Kontrol Sistemi: Hesabın risk altında olup olmadığını gerçek zamanlı tespit eder.
  • Avrupa Birliği ve Yerel kullanıcı hesap kanun ve düzenlemelerine uygun hesap güvenliği sağlar.

Diğer Özellikler

  • SMS ile doğrulama : Uygulamanızın SMS mesajlarındaki doğrulama kodunu kullanabilmesine olanak verir.
  • QR Kod ile giriş: Telefon ,tablet gibi bir çok cihazdan uygulamalara giriş yapılmasını mümkün kılar.

Güvenlik standartları ile ilgili bir detayı belirtmeden önce Doğrulama ve Yetkiledirme arasındaki farka bakalım:

Doğrulama(Authentication): Kim olduğunu belirttiğiniz kişi olup olmadığınızı doğrulama

Yetkilendirme(Authorization):Bir kaynağa erişim için yetkiniz olup olmadığına kara verme

  • OAuth2.0(Yetkilendirme kodu ,Erişim Tokenı gibi yetkilendirme ile ilgili Huawei’in kullandığı ifadeler bu standarttan kaynaklanır) ve OpenID Connect(Yetkilendirme + Doğrulama) güvenlik standartlarıyla uyumludur.
Huawei Account Kiti ile OAuth2 ve OpenID güvenlik protokollerine dayanan güvenilir uygulama girişi
  • Bu standartların bünyesinde bulundurduğu teknik ve yöntemleri kapsar:

—Yetkilendirme Kodu desteği,

— ID Token desteği

—Temel Kullanıcı bilgileri(profil resmi,takma isim,özgün kullanıcı IDsi) ve email adresi elde edilebilir.

—Yetkilendirme Uygulama Yönetimi(Authorization app management)

— Yetkilendirme iptali (Authorization Cancellation)

Üstte yer alanlarla birlikte Huawei Developer Sitesindeki kaynaklarda Account kit ile uygulama geliştirme sürecinde kullanılan teknik ifadeler ve karşılıkları hakkında daha net bir bilgiye sahip olmak ordaki adımları takip ederken uygulamamızın içeriğine dahil ettiğimiz fonksiyonların tam anlamıyla neler kattığını öğrenmemizde büyük kolaylık sağlayacaktır.Bunun için aşağıdaki terimleri inceleyelim:

Yetkinlendirme Kodu(Authorization Code): OAuth Sunucusunda tek seferlik kullanıma yönelik yetkilendirme için kullanılan ,içinde özgün bir karakter dizisi ve belirlenmiş uygulama gizi(app secret)’nin yer aldığı kod.

Uygulama gizi: HMS tarafındaki uygulamadan giden istek ve cevaplarda ,HMS platform tarafının uygulamayı tanımasına ,diğer uygulamalardan ayırmasına yardımcı olan anahtar.

  • Güvenlik için yalnızca uygulama sahibi bilir ve paylaşmaması gerekir.
  • Açık anahtar şifreleme tekniğindeki gizli anahtar olarakta bilinir.
  • Uygulamanın gizli anahtarı bilen sahibi tarafından geldiğine(başka bir hacker ya da kaynaktan değil) emin olunabilmesi için kullanılır.

Erişim Tokenı(Access Token): Kullanıcı kaynaklarına herhangi bir anda ulaşmak için kullanılan Token.

ID Token: Önceden giriş yapmış kullanıcının doğrulama için imzasını da içeren kimlik bilgisi. ID Token JWT (JSON Web Token) formatındadır.

JWT: Yetkilendirme yoluyla gerçekleştirilen her bir istemci isteğinin(client request) güvenliğini sağlayan JSON tabanlı standart.

iss(issuer,yayınlayan): Key bilgisi yayınlayan internet adres bilgisini içeren JWT parametresidir.(örn: https://accounts.huawei.com )

aud(audience,hedef kitle): Uygulamamızın ID’sinin tutulduğu JWK parametresidir.(örn: 300035233)

exp(expiration time,son kullanma tarihi): Keyimizin geçerli olduğu son tarihi belirten JWT parametresidir.(örn: 1563823909)

iat(issued at,yayınlanma tarihi): Keyimizin ilk yayınlandığı tarihi belirten JWT parametresidir(örn:1563820309)

Geçerlilik süresi hesabı:

1563823909-1563820309= 3600 saniye, 3600 sny / 60 sny = 60 dakika

kid(keyID): Oluşturulan keylerin kendi aralarında farklılıklarını belirtmek amacı için kullanılan JWT parametresidir.

JWK(Json Web Key): Yetkilendirme sunucusunun(OAuth) sağladığı JSON Web Tokenların doğrulanmasında kullanılan RS256 imzalama algoritması ile imzalanan (public key)açık anahtara verilen isimdir.

Yenileme/Tazeleme Tokenı(Refresh Token): Eski erişim tokenının geçerliliği bittiğinde yeni giriş token’ı alabilmek için kullanılan Token.

APK(Android Package): Android tarafından kullanılan paket dosya formatıdır. Android tabanlı işletim sistemlerinin dağıtımı ve mobil uygulama ve oyunların yüklenmesinde kullanılır.

HMS Core : Huawei tarafından hazırlanmış zengin cihaz ve bulut bilişim kabiliyetleri sağlayan verimli uygulama geliştirmeyi kolaylaştıran , hızlı büyüme ve uygulamalardan para kazanma olanaklarını esneten bir yapı sunan android paketidir .Kitlerin bazıları istemlerini HMS Core üstünden yürütür.

Bu kavramlara aşina olduktan sonra son kısımda Account Kit’inin işleyişine yönelik 2 süreç akışını inceleyemeye başlayabiliriz:

Account Kiti kullanıcı girişi için iki yöntemi seçenek olarak sunar :

1. Yetkilendirme kodu ile giriş

1.1 Uygulama kullanıcının yetkilendirme isteğini HMS Core APK’e iletir.

1.2 Yetkilendirme isteği alındıktan sonra kullanıcıya yetkilendirme izni sayfası gösterilir.Kullanıcı onaylar.

1.3 Sonrasında istek Huawei OAuth Sunucusu’na yönlendirilir ve Yetkilendirme Kodu uygulama istemcisine(Application Client) döndürülmüş olur.

Yetkilendirme Kodu örneği

1.4 Uygulama istemcisi Uygulama Sunucusuna(Application Server) döndürülen Yetkilendirme kodunu gönderir.

1.5 Uygulama sunucusu bu kodu ve uygulama gizini Erişim Tokenını ve Yenileme Tokenını Huawei OAuth Sunucusu’ndan elde etmek için kullanır.

Elde edilen Erişim Tokenı ve Yenileme Tokenı

1.6 Elde edilen Erişim Token’ı ile kullanıcı profili Huawei OAuth Sunucusundan istenerek kullanıcı giriş süreci tamamlanır.

Not:

Erişim Tokenı geçerlilik süresi: 1 saat

Yenileme Tokenı geçerlilik süresi: 6 ay

İlgili akış diyagramına alttaki linkten ulaşılabilir:

2 . ID Token ile giriş

2.1 , 2.2 , 2.3 Aynı süreç Yetkilendirme kodunun elde edilmesine kadarki süreçle aynı şekilde ID Token için de ilerler. Fakat ID Token giriş yönteminde Huawei OAuth Sunucusu’ndan elde edilip uygulama istemcisine döndürülen bilgi Yetkilendirme kodu değil ID Tokendır.

ID Token örneği

2.4 Yetkilendirme mesajı Erişim Kodu ve temel kullanıcı bilgileri de içeren IDToken ile birlikte Uygulama istemcisinden uyguluma sunucuna iletilir.

Huawei Codelab’da yer alan Access Token örneği

2.5 IDToken’ın doğrulanması için kullanılmak üzere iki ayrı metot tercih edilebilir.

2.5.1 Birinci yerel doğrulama metodu tercih edilirse uygulama sunucusunda ID Tokenın geçerliliğinin imzası üzerinden doğrulanması ile kullanıcı giriş adımları bitirelebilir .Bu doğrulama işlemi JWT formatındaki ID Token’ın HMS Core APK’den elde edilen imzasının header’ındaki kid paramatresi ile OAuth Sunucusunun JWK formatındaki kid parametresinin eşleşmesi ve iss,aud ve exp parametrelerinin doğru değerleri alıp almadığının kontrolü ile gerçekleşir.

2.5.2 İkinci doğrulama tercihinde ise HUAWEI Account Kit sunucusundaki doğrulama API’ı kendi ID Tokenımız için çağrılarak gerçekleştirilir.

Uyarı:İkinci tercih debug amaçlı kullanım içindir.Huawei Account Sunucusundan API çağrımı gerektirecek bu doğrulama zayıf ağ bağlantısı ile kullanımlarda yavaşlamaya sebep olabilir.Son kullanıcıyla buluşacak uygulamarda birinci yerel doğrulama tercihi ile ilerlenmelidir!

HUAWEI Account Kit sunucusunun IDToken içeren isteğe verdiği kullanıcı detaylarının bulunduğu doğrulama cevabı

Not: ID Token yönteminde kullanıcı bilgisi Huawei OAuth Sunucusu’na gönderilmek zorunda değildir.

İlgili akış diyagramına alttaki linkten ulaşılabilir:

IDToken’da 5 adım gibi daha az adımda yetkilendirmenin tamamlanacağı düşünülse de Erişim Tokenının geçerlilik süresi dolduğu durumda bu yöntemde OAuth sunucusu’ndan refresh token elde etmek mümkün olmadığından tekrar erişim kazanabilmek için Erişim Token’ının elde edileceği bütün adımlar tekrarlanmak zorundadır.Oysaki Yetkilendirme Kodu yönteminde Yenileme Token’ı ile sadece 1 adımda uygulamaya tekrar erişim hakkı kazanılabilir.

İki yöntem karşılaştırıldığında Huawei tarafında önerilen metot Yetkilendirme Kodu ile giriştir.

  • Bunun bir sebebi üstte belirtilen Erişim Token’ının her geçerliliğini yitirdiğinde Yetkilendirme Kodu metodu ile çok kısa adımda tekrar erişim kazanılması ile daha hızlılığa ve rahatlığa imkan sağlamasıdır.

Not: Eğer uygulama sunucusu olmayan bir uygulamaya sahipseniz, ID Token yöntemi uygulama sunucusu bulundurma mecburiyeti olmadığından tercih edilebilir.

Huawei Account Kiti Anlatım videosu

Yardımcı kaynak linkleri:

--

--