Kullanıcı havuzları, kimlik havuzları ve JWT'ler

Geliştiriciler için AWS Güvenliğini Kullanma

Rahul Singh

Technical Product Manager

Cognito tek adla iki hizmettir

Amazon Cognito

  • Uygulama kullanıcıların için yönetilen kimlik
  • Tek ad, iki ayrı hizmet

Kesikli bir Amazon Cognito sınırının üstünde iki soru. Sınırın içinde yan yana iki mavi panel var: kullanıcı dizinin olarak açıklanan bir kullanıcı havuzu ve kimlik bilgisi aracısı olarak açıklanan bir kimlik havuzu. Her iki panelden çıkan çizgiler alttaki turuncu kesikli kutuda birleşiyor; birçok uygulamanın ikisini birden kullandığı belirtiliyor.

Geliştiriciler için AWS Güvenliğini Kullanma

Cognito tek adla iki hizmettir

Amazon Cognito

  • Uygulama kullanıcıların için yönetilen kimlik
  • Tek ad, iki ayrı hizmet

Hangisine ihtiyacın var?

  • Oturum açma ve kullanıcı profilleri: kullanıcı havuzu
  • Tarayıcı veya mobilin doğrudan AWS çağırması: kimlik havuzu

Kesikli bir Amazon Cognito sınırının üstünde iki soru. Sınırın içinde yan yana iki mavi panel var: kullanıcı dizinin olarak açıklanan bir kullanıcı havuzu ve kimlik bilgisi aracısı olarak açıklanan bir kimlik havuzu. Her iki panelden çıkan çizgiler alttaki turuncu kesikli kutuda birleşiyor; birçok uygulamanın ikisini birden kullandığı belirtiliyor.

Geliştiriciler için AWS Güvenliğini Kullanma

Bir kullanıcı havuzu, kullanıcıları oturum açtırır

Yönetilen bir kullanıcı dizini

  • Kayıt ve oturum açma
  • Parola sıfırlama
  • Çok faktörlü kimlik doğrulama

Dikey akış: bir uygulama kullanıcısı parolaları tutan bir kullanıcı havuzuna oturum açar ve havuz, bir Kimlik belirteci, bir Erişim belirteci ve bir Yenileme belirteci içeren bir kutu döndürür

Geliştiriciler için AWS Güvenliğini Kullanma

Bir kullanıcı havuzu, kullanıcıları oturum açtırır

Yönetilen bir kullanıcı dizini

  • Kayıt ve oturum açma
  • Parola sıfırlama
  • Çok faktörlü kimlik doğrulama

 

Başarılı olursa üç belirteç

Dikey akış: bir uygulama kullanıcısı parolaları tutan bir kullanıcı havuzuna oturum açar ve havuz, bir Kimlik belirteci, bir Erişim belirteci ve bir Yenileme belirteci içeren bir kutu döndürür

Geliştiriciler için AWS Güvenliğini Kullanma

Bir kullanıcı havuzu, kullanıcıları oturum açtırır

Yönetilen bir kullanıcı dizini

  • Kayıt ve oturum açma
  • Parola sıfırlama
  • Çok faktörlü kimlik doğrulama

 

Başarılı olursa üç belirteç

  • Kimlik belirteci: kullanıcının kim olduğu
  • Erişim belirteci: neleri çağırabileceği
  • Yenileme belirteci: sonra yenilerini alır

Dikey akış: bir uygulama kullanıcısı parolaları tutan bir kullanıcı havuzuna oturum açar ve havuz, bir Kimlik belirteci, bir Erişim belirteci ve bir Yenileme belirteci içeren bir kutu döndürür

Geliştiriciler için AWS Güvenliğini Kullanma

Bir kimlik havuzu AWS kimlik bilgileri verir

Belirteçler kimlik bilgisi değildir

  • Uygulaman için kimlik kanıtı
  • AWS hizmetlerine erişim için kimlik bilgisi değildir

 

Kimlik havuzları: güvenilir belirteç girer, kimlik bilgisi çıkar

Kullanıcı havuzu diyagramıyla aynı geometrili dikey akış: güvenilir bir belirteç bir kimlik havuzuna sunulur, havuz bunu kimin verdiğini kontrol eder ve süresi dolan, tek bir role kapsamlı AWS kimlik bilgileri döndürür

Geliştiriciler için AWS Güvenliğini Kullanma

Bir kimlik havuzu AWS kimlik bilgileri verir

Belirteçler kimlik bilgisi değildir

  • Uygulaman için kimlik kanıtı
  • AWS hizmetlerine erişim için kimlik bilgisi değildir

 

Kimlik havuzları: güvenilir belirteç girer, kimlik bilgisi çıkar

  • Bir derleme işi bir OIDC belirteci takas etti
  • Elindeki kanıt, kart anahtarla değiştirilir

Kullanıcı havuzu diyagramıyla aynı geometrili dikey akış: güvenilir bir belirteç bir kimlik havuzuna sunulur, havuz bunu kimin verdiğini kontrol eder ve süresi dolan, tek bir role kapsamlı AWS kimlik bilgileri döndürür

Geliştiriciler için AWS Güvenliğini Kullanma

Tek uygulama, iki parça

İkisini birden kullanan bir tarayıcı

  1. Oturum aç, bir belirteç al
  2. Bu belirteci API'ne gönder

Taşıyıcı belirteç: kim tutarsa o kullanır

Dikey bir akış. Bir tarayıcı bir kullanıcı havuzunda oturum açar ve bir belirteç alır. Bu tek belirteç iki yöne dallanır: sola API'ne ve sağa bir kimlik havuzuna. Kimlik havuzu kimlik bilgileri döndürür ve S3'e ulaşan bu kimlik bilgilerdir.

Geliştiriciler için AWS Güvenliğini Kullanma

Tek uygulama, iki parça

İkisini birden kullanan bir tarayıcı

  1. Oturum aç, bir belirteç al
  2. Bu belirteci API'ne gönder
  3. Aynı belirteci kimlik bilgileriyle değiştir

Dikey bir akış. Bir tarayıcı bir kullanıcı havuzunda oturum açar ve bir belirteç alır. Bu tek belirteç iki yöne dallanır: sola API'ne ve sağa bir kimlik havuzuna. Kimlik havuzu kimlik bilgileri döndürür ve S3'e ulaşan bu kimlik bilgilerdir.

Geliştiriciler için AWS Güvenliğini Kullanma

Tek uygulama, iki parça

İkisini birden kullanan bir tarayıcı

  1. Oturum aç, bir belirteç al
  2. Bu belirteci API'ne gönder
  3. Aynı belirteci kimlik bilgileriyle değiştir
  4. Bu kimlik bilgilerle S3'e eriş

Belirteçler koduna, kimlik bilgileri AWS'ye

Dikey bir akış. Bir tarayıcı bir kullanıcı havuzunda oturum açar ve bir belirteç alır. Bu tek belirteç iki yöne dallanır: sola API'ne ve sağa bir kimlik havuzuna. Kimlik havuzu kimlik bilgileri döndürür ve S3'e ulaşan bu kimlik bilgilerdir.

Geliştiriciler için AWS Güvenliğini Kullanma

Belirteç, imzalı metindir

Noktalarla birleştirilmiş üç bölüm: Üstbilgi, Yük ve İmza. Yükün üstünde açık bir kilit var ve alttaki bir ayraç, imzanın ilk iki bölümü kapsadığını gösteriyor.

JWT: JSON Web Token

  • Claims: kullanıcıya dair etiketli ifadeler
Geliştiriciler için AWS Güvenliğini Kullanma

Belirteç, imzalı metindir

Noktalarla birleştirilmiş üç bölüm: Üstbilgi, Yük ve İmza. Yükün üstünde açık bir kilit var ve alttaki bir ayraç, imzanın ilk iki bölümü kapsadığını gösteriyor.

JWT: JSON Web Token

  • Claims: kullanıcıya dair etiketli ifadeler
  • Kodlanır, şifrelenmez
  • Herkes okuyabilir ve herkes değiştirebilir
Geliştiriciler için AWS Güvenliğini Kullanma

Okumadan önce doğrula

Önce doğrulama gelir

  • JWKS: JSON Web Key Set, verenin ortak imzalama anahtarları
  • İmza bu anahtarlara karşı kontrol edilir

Dikey bir geçit diyagramı. Bir belirteç gelir ve sırayla dört onaydan geçer: imza, veren, hedef kitle ve son kullanma. Verenin ortak anahtarları yandan imza kontrolüne beslenir ve ancak dördüncü kontrolden sonra yol, iddiaların okunacağı yeşil kutuya ulaşır.

Geliştiriciler için AWS Güvenliğini Kullanma

Okumadan önce doğrula

Önce doğrulama gelir

  • JWKS: JSON Web Key Set, verenin ortak imzalama anahtarları
  • İmza bu anahtarlara karşı kontrol edilir

 

Sonra üç claim

  • iss: kullanıcı havuzun
  • ID belirtecinde aud, erişim belirtecinde client_id
  • exp: hâlâ geçerli

Dikey bir geçit diyagramı. Bir belirteç gelir ve sırayla dört onaydan geçer: imza, veren, hedef kitle ve son kullanma. Verenin ortak anahtarları yandan imza kontrolüne beslenir ve ancak dördüncü kontrolden sonra yol, iddiaların okunacağı yeşil kutuya ulaşır.

Geliştiriciler için AWS Güvenliğini Kullanma

Doğrulanmış bir belirteç yine de yanlış olabilir

Yan yana iki eş kart. Kimlik belirteci kartı bir kimlik belirteci olarak işaretlenmiş, hedef kitle claim'inde tutulan istemci kimliğini gösterir ve kapsam taşımadığını belirtir; altında kullanıcının kim olduğu için gri bir kutu. Erişim belirteci kartı bir erişim belirteci olarak işaretlenmiş, kendi istemci tanımlayıcı claim'inde tutulan istemci kimliğini gösterir ve kapsam taşıdığını belirtir; altında neleri çağırabilecekleri için turuncu bir kutu. Alt kısımdaki kesikli şerit, Cognito grupları claim'inin her iki belirteçte de göründüğünü belirtir.

Doğrulandı ama hâlâ yanlış belirteç

Geliştiriciler için AWS Güvenliğini Kullanma

Doğrulanmış bir belirteç yine de yanlış olabilir

Yan yana iki eş kart. Kimlik belirteci kartı bir kimlik belirteci olarak işaretlenmiş, hedef kitle claim'inde tutulan istemci kimliğini gösterir ve kapsam taşımadığını belirtir; altında kullanıcının kim olduğu için gri bir kutu. Erişim belirteci kartı bir erişim belirteci olarak işaretlenmiş, kendi istemci tanımlayıcı claim'inde tutulan istemci kimliğini gösterir ve kapsam taşıdığını belirtir; altında neleri çağırabilecekleri için turuncu bir kutu. Alt kısımdaki kesikli şerit, Cognito grupları claim'inin her iki belirteçte de göründüğünü belirtir.

Doğrulandı ama hâlâ yanlış belirteç

token_use türünü söyler

  • cognito:groups ikisinde de yer alır, kapsam değildir

  • scope: belirtecin neleri çağırabileceği

  • sub: hangi kullanıcı, asla değişmez
  • Kimlik, izin değildir
Geliştiriciler için AWS Güvenliğini Kullanma

Hadi pratik yapalım!

Geliştiriciler için AWS Güvenliğini Kullanma

Preparing Video For Download...