Türkçe
  • oidc
  • openid connect
  • oauth
  • kimlik doğrulama
  • yetkilendirme

OIDC Nedir: Neden İhtiyacımız Olduğundan Nasıl Çalıştığına

OIDC'nin ne olduğunu, neden gerektiğini ve nasıl çalıştığını öğrenin. OIDC'nin kimlik doğrulaması için OAuth 2.0'ı nasıl genişlettiğini keşfedin, ID Tokenlar, kapsamlar ve kullanıcı bilgi uç noktası gibi temel bileşenlerini anlayın.

Yijun
Yijun
Developer

OpenID Connect (OIDC) tanımı

OpenID Connect (OIDC), OAuth 2.0 üzerine inşa edilmiş bir kimlik doğrulama protokolüdür. OAuth 2.0 yalnızca yetkilendirme sağlarken, OIDC kimlik doğrulama yetenekleri ekleyerek kullanıcı yetkilendirme ve kimlik doğrulama senaryoları için daha standart bir çözüm sunar.

Basitçe şöyle söylemek gerekirse: OIDC = Yetkilendirme Protokolü + Kimlik Doğrulama.

Neden OIDC'ye ihtiyaç duyuluyor?

OIDC'ye neden ihtiyaç duyulduğunu anlamak için önce OAuth 2.0'ın temel kavramları ve iş akışını ve pratik uygulamalarındaki sınırlamalarını inceleyelim. Belirli senaryoları analiz ederek, OAuth 2.0 üzerinden neden OIDC'ye ihtiyacımız olduğunu göreceğiz.

OAuth 2.0'ın anahtar kavramları ve yetkilendirme akışı

OAuth 2.0 (Open Authorization), kullanıcıların kimlik bilgilerini (kullanıcı adları ve şifreler gibi) paylaşmadan üçüncü taraf uygulamalara kaynaklarına erişim izni vermelerini sağlayan bir yetkilendirme protokolüdür. Dört ana rol içerir:

  • Kaynak Sahibi: Kaynakların sahibi olan kullanıcı
  • Kaynak Sunucusu: Kullanıcı kaynaklarını depolayan sunucu
  • İstemci: Kullanıcı kaynaklarına erişim talep eden üçüncü taraf uygulama
  • Yetkilendirme Sunucusu: Kullanıcı kimliğini doğrulayan ve erişim tokenları veren sunucu

Tipik bir OAuth 2.0 yetkilendirme akışı şu şekilde çalışır:

Görüldüğü gibi, OAuth 2.0 esas olarak üçüncü taraf istemcilere kullanıcı kaynaklarına erişim için erişim tokenı verilmesi ile ilgilenir.

OAuth 2.0'ın sınırlamaları

OAuth 2.0 protokolü yalnızca erişim tokenları vermeye odaklanır. Kaynak sunucusu bu tokenları doğrular ve yetkilendirilmiş kaynakları döndürür. Ancak kaynak sunucusu kullanıcının kimliğini bilmez.

Bu, erken internet ekosisteminde önemli bir sorun değildi.

Ancak, Google, Facebook, Twitter ve Github gibi platformlar evrildikçe, zengin kullanıcı kaynakları sunmaya başladılar ve bu kaynaklar üçüncü taraf uygulamalar için değerli hale geldi.

OAuth 2.0, kullanıcı kaynaklarına üçüncü taraf erişimini yetkilendirmede başarılıyken, bazı sınırlamaları da vardır. Tipik bir senaryo şudur: Kullanıcı bilgisi de bir kaynak olduğundan, üçüncü taraf uygulamalar temel kullanıcı bilgilerine erişmek zorunda kaldıklarında, farklı platformlar (Google, Facebook, Twitter gibi) kullanıcı bilgilerini farklı formatlarda döndürür, bu da geliştiriciler için zorluk yaratır.

OIDC bu zorlukları gidermek için oluşturulmuştur.

OIDC'deki roller

OAuth 2.0'ın üzerine kullanıcı kimlik doğrulaması eklemek ve sınırlamalarını gidermek için OIDC üç rol tanıttı:

  • Son Kullanıcı (EU): Nihai kullanıcı, OAuth 2.0'ın Kaynak Sahibi'ne karşılık gelir
  • Güvenen Taraf (RP): Bağımlı taraf, OAuth 2.0'ın İstemcisine karşılık gelir
  • OpenID Sağlayıcı (OP): Kimlik doğrulama hizmet sağlayıcısı, OAuth 2.0'ın Yetkilendirme Sunucusu ve Kaynak Sunucusuna karşılık gelir

OP, hem OAuth 2.0'ın yetkilendirme işlevselliğini sağlayan hem de kullanıcı bilgilerini ayrı bir kaynak olarak ele alan temel roldür.

OIDC nasıl çalışır?

OIDC'nin kimlik doğrulama süreci OAuth 2.0'a benzerdir, ancak OP Yetkilendirme Sunucusu ve Kaynak Sunucusu rollerini birleştirdiği için hem bir Erişim Tokenı hem de bir ID Token döndürür. ID Token, kullanıcı kimlik bilgilerini içerir ve RP, ID Token'ı doğrulayarak kullanıcının kimliğini doğrulayabilir.

Tipik bir iş akışı şu şekilde görünür:

Bu, kullanıcı bilgilerinin farklı platformlar arasında nasıl elde edildiğini standartlaştırır, üçüncü taraf uygulamaların platforma özgü farklılıkları yönetme ihtiyacını ortadan kaldırır.

OIDC'de ID token (kimlik tokenı)

Kullanıcılar üçüncü taraf uygulamaları yetkilendirdiğinde, OP hem bir OAuth 2.0 Erişim Tokenı hem de JWT formatında bir ID Token döndürür. Bu ID Token, kullanıcı kimlik bilgileri, kullanıcı ID'si, kullanıcı adı, e-posta ve avatar gibi bilgileri içerir. RP, ID Token'ı doğrulayarak kullanıcının kimliğini teyit edebilir.

Bir JWT olarak, ID Token standart talepler içerir, bunlar arasında bu zorunlu temel talepler bulunur:

  • iss (Yayınlayan): ID Token'ı veren OpenID Sağlayıcının benzersiz tanımlayıcısı
  • sub (Konu): Kullanıcının benzersiz tanımlayıcısı
  • aud (Hedef kitle): ID Token'ı alan istemci uygulamanın tanımlayıcısı
  • exp (Son Kullanma Zamanı): ID Token'ın sona erme zamanı
  • iat (Yayım Zamanı): ID Token'ın yayım zamanı

ID tokenlar hakkında ayrıntılı bilgi için lütfen bakınız: ID token.

Kullanıcı bilgi uç noktası

Kullanıcı Bilgi Uç Noktası, OP tarafından sağlanan kullanıcı doğrulama detaylarını elde etmek için standart bir HTTP API'dir. Bu uç noktaya GET veya POST istekleri göndererek ve bir Erişim Tokenı kullanarak, JSON formatında kullanıcı bilgisi alabilirsiniz. Dönüş verisi, benzersiz kullanıcı ID'si (sub), kullanıcı adı (name), e-posta, ve resim gibi standartlaştırılmış alanlar içerir.

Kullanıcı bilgisi alma işlemi, OAuth 2.0'da korunan kaynaklara erişimle aynı deseni izler. Genellikle, kullanıcı bilgi uç noktasından alınan kullanıcı bilgisi, ID tokenında bulunanlardan daha kapsamlıdır, çünkü ID token esas olarak kimlik doğrulama ve temel kullanıcı bilgisi içindir.

Kullanıcı bilgi uç noktası hakkında ayrıntılı bilgi için lütfen bakınız: Userinfo endpoint.

Kullanıcı bilgi uç noktasından aldığınız kullanıcı bilgisi, yetkilendirme sırasında talep edilen kapsamlar ve verilen izinlere bağlıdır.

OIDC'deki kapsamlar

OIDC'deki kapsamlar, RP'nin erişebileceği kullanıcı bilgilerini tanımlar. OIDC standart kapsamları tanımlar ve openid kapsamı OIDC kimlik doğrulama akışlarında zorunludur.

Yaygın standart kapsamlar şunlardır:

  • openid: OIDC kimlik doğrulama isteğini belirtir
  • profile: Kullanıcının adı ve avatarı gibi temel kullanıcı bilgisi
  • email: Kullanıcının e-posta bilgisi
  • phone: Kullanıcının telefon numarası
  • address: Kullanıcının adres bilgisi

Farklı kapsamlar farklı kullanıcı bilgisi döndürür. Örneğin, openid profile email isteği, ID Token ve Userinfo'da temel kullanıcı bilgisi ve e-posta döndürürken, openid profile email phone address isteği, telefon numarası ve adres bilgisi de içerir.

OIDC tabanlı kimlik yönetimi

OIDC yalnızca bir kimlik doğrulama protokolü değildir; esnek, ölçeklenebilir kimlik yönetim sistemleri oluşturmada güçlü bir araçtır. OAuth 2.0'a bir kimlik doğrulama katmanı ekleyerek, kullanıcı bilgilendirme kaynaklarını standartlaştırarak ve genişletilmiş kimlik yönetimi özellikleri için bir temel oluşturarak çeşitli kimlik yönetimi senaryolarını mümkün kılar:

  • Tek Oturum Açma (SSO): OIDC, genişletilmiş kullanıcı oturum bilgileri ile SSO'yu doğal olarak destekler, tekli giriş durumu yönetimine ve uygulamalar arası kimlik paylaşımına olanak tanır.
  • Organizasyon yapısı yönetimi: Genişletilmiş kullanıcı organizasyon bilgileri, bölüm hiyerarşileri ve kullanıcı grup ilişkilerini içeren karmaşık organizasyon yapılarını yönetebilir.
  • İzin yönetimi: Genişletilmiş kullanıcı izin öznitelikleri, rol bilgileri ve izin politikası yapılandırması da dahil olmak üzere ince ayrıntılı kaynak erişim kontrolüne olanak tanır.

OIDC'nin esnekliği, gelişen kimlik yönetimi ihtiyaçlarına uyum sağlar. OIDC üzerine kurulan birçok kimlik yönetim sistemi bulunmaktadır, örneğin SSO, organizasyon yönetimi ve izin yönetimi özellikleri sunan Logto.