Crowdin Uygulamaları için Güvenlik

Crowdin uygulamasının Crowdin’den gelen verilerle çalıştığı (yani crowdin_app aracılığıyla yetkilendirmeyi kullandığı) durumlarda yüksek seviyede güvenlik sağlamak için bir güvenlik mekanizması geliştirdik. Bu güvenlik mekanizmasının ana prensibi, Crowdin ile Crowdin uygulaması arasındaki JWT belirtecinin takasına dayanmaktadır. JWT belirteci, sadece son iki tarafça bilinen bir OAuth İstemci Gizli Anahtarı ile imzalanır. Bu şekilde Crowdin uygulaması, sayfanın tam olarak Crowdin’de açıldığına dair bir onay alabilir.

Uygulama

Yetkilendirme ve kimlik doğrulamayı Crowdin uygulamanızda uygulamak için şu adımları izleyin:

  • Yetkilendirmeyi crowdin_app aracılığıyla uygulama tanımlayıcınıza ekleyin ve yetkilendirme için kullanılacak OAuth İstemci Kimliğini ekleyin.
  • Geri çağrıyı Crowdin uygulamanıza Installed Olayını işleyecek şekilde ekleyin.
  • Crowdin uygulamanız için gerekli uygulama tanımlayıcınızda gerekli kapsam grubunu belirtin. Belirtilen kapsam grubu, OAuth içinde belirtilen kapsamları aşmamalıdır.

Yukarıdaki yöntemleri kullanarak, Crowdin uygulamasına yapılan her istekte, Crowdin, OAuth’tan gelen bir gizli anahtar ile doğrulanabilen bir güvenlik belirteci ile birlikte bir dizi parametre geçirecektir.

Aşağıda Crowdin tarafından bir modül sayfasını açmak için kullanılan URL’nin bir örneğini görebilirsiniz.

https://ornek.com/app-module?jwtToken=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhdWQiOiJCcjRhMmhwUW……MX0.yt-lbv3Z8JyIGX4jG405mjZvX8lwc1q0EfWdTtm9GCc&origin=https://{domain}.crowdin.com&clientId=your-client-id

Sorgu parametreleri:

jwtToken

Tür: dizgi

Açıklama: Yetkilendirme için kullanılan JWT belirteci.

origin

Tür: dizgi (url)

Açıklama: Modül sayfasını açmak için kullanılan anamakine.

clientId

Tür: dizgi

Açıklama: Yetkilendirme için kullanılan OAuth İstemcisinin kimliği.

En iyi uygulama, her isteğin geçerli bir imzası ve süresi dolan bir belirteci olup olmadığını doğrulamak için Crowdin uygulamasına ara yazılım eklemek olacaktır. Belirtecin özgünlüğünü doğrulamak için varolan kütüphanelerden birini kullanabilirsiniz.

JWT Belirteç Yapısı

JWT belirteci aşağıdaki bölümlerden oluşur:

  • Üstbilgi - belirtecin türü ve kodlama algoritmaları hakkında bilgi içerir.
  • Yük - belirtecin verilme ve sona erme tarihleri, belirteci veren ve talep eden hakkında bilgiler ve diğer bağlamsal bilgiler hakkında ek bilgiler içerir.
  • İmza - üstbilgi ve yüke dayalı imzalı kısım.

JWT belirteç yükü örneği:

{
  "aud": "Br4a2hpQiNW96anuuO4a",
  "sub": "1",
  "domain": null,
  "context": {},
  "iat": 1600000000,
  "exp": 1600000900
}

Özellikler:

aud

Tür: dizgi

Açıklama: Belirteci veren OAuth İstemcisinin kimliği.

sub

Tür: dizgi

Açıklama: Crowdin uygulamasına istekte bulunan kullanıcının tanımlayıcısı.

domain

Tür: dizgi|null

Zorunlu: evet

Açıklama: Uygulamaya erişen kuruluşun adı. Crowdin için etki alanı değeri her zaman null’dur

context

Tür: nesne

Açıklama: Crowdin uygulaması modülünün açıldığı ortamla ilgili bilgiler (örn. proje, yerel ayar, kullanıcının saat dilimi vb.).

iat

Tür: tamsayı

Açıklama: Belirtecin verilme zamanını tanımlar.

exp

Tür: tamsayı

Açıklama: Belirtecin sona erme zamanını tanımlar.

Bu makale yararlı oldu mu?