Not. tercüme: Okta'nın bu harika makalesi, OAuth ve OIDC'nin (OpenID Connect) nasıl çalıştığını basit ve net bir şekilde açıklıyor. Bu bilgi geliştiriciler, sistem yöneticileri ve hatta büyük olasılıkla diğer hizmetlerle gizli veri alışverişi yapan popüler web uygulamalarının "sıradan kullanıcıları" için yararlı olacaktır.
İnternetin Taş Devri'nde hizmetler arasında bilgi paylaşımı kolaydı. Kullanıcı adınızı ve şifrenizi bir hizmetten diğerine verdiniz, böylece o, hesabınıza girdi ve ihtiyaç duyduğu bilgileri aldı.
"Bana banka hesabını ver." “Şifre ve para konusunda her şeyin yoluna gireceğine söz veriyoruz. Bu dürüst, dürüst!" *hee hee*
Korku! Hiç kimse bir kullanıcıdan bir kullanıcı adı ve şifreyi paylaşmasını istememeli, kimlik bilgileri, başka bir hizmetle. Bu hizmetin arkasındaki kuruluşun verileri güvende tutacağına ve gereğinden fazla kişisel bilgi toplamayacağına dair hiçbir garanti yoktur. Kulağa çılgınca gelebilir, ancak bazı uygulamalar hala bu uygulamayı kullanıyor!
Bugün, bir hizmetin diğerinin verilerini güvenli bir şekilde kullanmasına izin veren tek bir standart var. Ne yazık ki, bu tür standartlar, anlaşılmasını zorlaştıran çok sayıda jargon ve terim kullanır. Bu materyalin amacı, nasıl çalıştıklarını basit resimler kullanarak açıklamaktır (Sence benim çizimlerim çocukların karalamalarına benziyor mu? Pekala!).
Bu arada, bu kılavuz video formatında da mevcuttur:
Bayanlar ve baylar, hoş geldiniz: OAuth 2.0
OAuth 2.0 bir uygulamanın başka bir uygulamadaki bilgilere erişim izni almasına izin veren bir güvenlik standardıdır. Bir izin vermek için adımların sırası [izin] (ya rıza[onay]) sık sık arayın yetki[yetki] veya devredilen yetki[yetki verilmiş yetki]. Bu standartla, bir uygulamanın sizin adınıza parolanızı vermeden başka bir uygulamanın verilerini okumasına veya işlevlerini kullanmasına izin verirsiniz. Sınıf!
Örnek olarak, "Günün Şanssız Kelime Oyunu" adlı bir site keşfettiğinizi varsayalım. [Günün Korkunç Kelime Oyunu] ve telefonda metin mesajları şeklinde günlük kelime oyunları almak için kaydolmaya karar verdi. Siteyi gerçekten beğendiniz ve tüm arkadaşlarınızla paylaşmaya karar verdiniz. Ne de olsa herkes tüyler ürpertici kelime oyunlarını sever, değil mi?
Günün talihsiz kelime oyunu: Vücudunun sol yarısını kaybeden adamı duydunuz mu? Şimdi o her zaman haklı!” (yaklaşık çeviri, çünkü orijinalin kendi kelime oyunu vardır - yaklaşık çeviri.)
Kişi listesinden her kişiye yazmanın bir seçenek olmadığı açıktır. Ve birazcık bile benim gibiyseniz, gereksiz işlerden kaçınmak için her şeyi yapacaksınız. Neyse ki, Günün Korkunç Kelime Oyunu tek başına tüm arkadaşlarınızı davet edebilir! Bunu yapmak için kişilerinizin e-postalarına erişimi açmanız yeterlidir - sitenin kendisi onlara davetiyeler gönderecektir (OAuth kuralları)!
“Herkes kelime oyunlarını sever! - Zaten giriş yapılmış? "Günün Korkunç Kelime Oyunu web sitesinin kişi listenize erişmesine izin vermek ister misiniz? - Teşekkür ederim! Bundan sonra, her gün tanıdığınız herkese hatırlatmalar göndereceğiz, zamanın sonuna kadar! Sen en iyi arkadaşsın!"
E-posta hizmetinizi seçin.
Gerekirse, posta sitesine gidin ve hesabınızda oturum açın.
Kişilerinize erişmesi için Günün Korkunç Kelime Oyunu'na izin verin.
Günün Korkunç Kelime Oyunu sitesine geri dönün.
Fikrinizi değiştirmeniz durumunda, OAuth kullanan uygulamalar da erişimi iptal etmenin bir yolunu sunar. Artık Günün Korkunç Kelime Oyunu ile kişileri paylaşmak istemediğinize karar verdiğinizde, posta sitesine gidebilir ve kelime oyunu sitesini yetkili uygulamalar listesinden kaldırabilirsiniz.
OAuth Akışı
Biz sadece genellikle denilen şeyi geçtik. akış[akış] OAuth. Örneğimizde, bu akış, iki hizmetin güvenli bir bilgi alışverişi üzerinde anlaştıkları birkaç görünmez adımın yanı sıra görünür adımlardan oluşur. Önceki Günün Korkunç Kelime Oyunu örneği, "yetkilendirme kodu" akışı olarak bilinen en yaygın OAuth 2.0 akışını kullanır. ["yetki kodu" akışı].
OAuth'un nasıl çalıştığına dair ayrıntılara girmeden önce, bazı terimlerin anlamlarından bahsedelim:
Kaynak Sahibi:
O sensin! Kimlik bilgilerinize, verilerinizin sahibi sizsiniz ve hesaplarınızda gerçekleştirilebilecek tüm etkinlikleri kontrol ediyorsunuz.
müşteri:
adına belirli eylemlere erişmek veya bunları gerçekleştirmek isteyen bir uygulama (örneğin, Günün Korkunç Kelime Oyunu hizmeti). Kaynak Sahibi'a.
Yetkilendirme Sunucusu:
Bilen uygulama Kaynak Sahibi'a ve hangi sen Kaynak Sahibi'a zaten bir hesabım var.
Kaynak Sunucusu:
Uygulama programlama arabirimi (API) veya hizmet müşteri adına kullanmak istiyor Kaynak Sahibi'a.
Yönlendirme URI'si:
bağlantı Yetkilendirme Sunucusu yönlendirecek Kaynak Sahibi've izin verdikten sonra müşteri'da. Bazen "Geri arama URL'si" olarak anılır.
Yanıt Türü:
Alınması beklenen bilgi türü müşteri. En genel Yanıt Türü'ohm kodudur, yani müşteri almayı bekliyor Yetki Kodu.
kapsam:
Bu, gerekli izinlerin ayrıntılı bir açıklamasıdır. müşteriverilere erişmek veya belirli eylemleri gerçekleştirmek gibi.
Rıza:
Yetkilendirme Sunucusu bere Kapsamlarıtalep edilen müşteri'om ve sorar Kaynak Sahibi'a, sağlamaya hazır mı müşteri'uygun izinlere sahip olun.
müşteri kimliği:
Bu kimlik tanımlamak için kullanılır müşteri'bir açık Yetkilendirme Sunucusue.
Müşteri Sırrı:
Bu sadece bilinen şifredir müşterisen ve Yetkilendirme Sunucusu'da. Bilgileri özel olarak paylaşmalarına olanak tanır.
Yetki Kodu:
Kısa bir geçerlilik süresine sahip geçici kod, müşteri sağlar Yetkilendirme Sunucusukarşılığında erişim Jetonu.
erişim Jetonu:
İstemcinin iletişim kurmak için kullanacağı anahtar Kaynak SunucusuAman Tanrım. sağlayan bir tür rozet veya anahtar karttır. müşteri'veri talep etme veya üzerinde işlem yapma iznine sahip olmak Kaynak SunucusuSenin adına.
Dikkat: Bazen Yetkilendirme Sunucusu ve Kaynak Sunucusu aynı sunucudur. Ancak bazı durumlarda bunlar aynı kuruluşa ait olmasalar bile farklı sunucular olabiliyor. Örneğin, Yetkilendirme Sunucusu, Kaynak Sunucu tarafından güvenilen bir üçüncü taraf hizmeti olabilir.
OAuth 2.0'ın temel kavramlarını ele aldığımıza göre, örneğimize geri dönelim ve OAuth akışında neler olduğuna daha yakından bakalım.
sen Kaynak Sahibi, Günün Korkunç Kelime Oyunu hizmetini (müşteriy) tüm arkadaşlarınıza davetiye gönderebilmeleri için kişilerinize erişim.
müşteri tarayıcıyı sayfaya yönlendirir Yetkilendirme Sunucusu'a ve sorguya dahil et müşteri kimliği, Yönlendirme URI'si, Yanıt Türü ve bir veya daha fazla Kapsamları (izinler) ihtiyacı var.
Yetkilendirme Sunucusu gerekirse bir kullanıcı adı ve şifre sorarak sizi doğrular.
Yetkilendirme Sunucusu bir form görüntüler Rıza (onaylar) hepsinin bir listesiyle Kapsamlarıtalep edilen müşteriAman Tanrım. Kabul eder veya reddedersiniz.
Yetkilendirme Sunucusu sizi siteye yönlendirir müşteri'a, kullanarak Yönlendirme URI'si ile Yetki Kodu (Yetki Kodu).
müşteri ile doğrudan iletişim kurar Yetkilendirme Sunucusu'ohm (tarayıcıyı atlayarak Kaynak Sahibi'a) ve güvenle gönderir müşteri kimliği, Müşteri Sırrı и Yetki Kodu.
Yetkilendirme Sunucusu verileri kontrol eder ve şu şekilde yanıt verir: erişim Jetonu'om (erişim belirteci).
şimdi müşteri kullanabilirsiniz erişim Jetonu istek göndermek için Kaynak Sunucusu Kişilerin bir listesini almak için.
İstemci Kimliği ve Sırrı
Günün Korkunç Kelime Oyunu'nun kişilerinize erişmesine izin vermeden çok önce, Müşteri ve Yetkilendirme Sunucusu bir çalışma ilişkisi kurmuştu. Yetkilendirme Sunucusu, İstemci Kimliğini ve İstemci Sırrını (bazen Uygulama kimliği и Uygulama Sırrı) ve OAuth içinde daha fazla etkileşim için bunları Müşteriye gönderdi.
"- Merhaba! sizinle çalışmak isterim! - Tabii, sorun değil! İşte Müşteri Kimliğiniz ve Sırrınız!"
Ad, yalnızca İstemci ve Yetkilendirme Sunucusunun bilmesi için İstemci Sırrı'nın gizli tutulması gerektiğini ima eder. Ne de olsa, Yetkilendirme Sunucusunun Müşterinin gerçekliğini doğrulaması onun yardımıyla olur.
Ama hepsi bu kadar değil... Lütfen OpenID Connect'e hoş geldiniz!
OAuth 2.0 yalnızca şunlar için tasarlanmıştır: yetki - bir uygulamadan diğerine verilere ve işlevlere erişim sağlamak için. OpenID Connect (OIDC), OAuth 2.0'ın üzerinde, hesaba giriş yapan kullanıcının oturum açma ve profil ayrıntılarını ekleyen ince bir katmandır. Bir oturum açma oturumunun organizasyonuna genellikle şu ad verilir: kimlik doğrulama[kimlik doğrulama], ve sisteme giriş yapan kullanıcı hakkında bilgiler (örn. Kaynak Sahibi'e), - kişisel veri[kimlik]. Yetkilendirme Sunucusu OIDC'yi destekliyorsa, bazen şu şekilde anılır: kişisel veri sağlayıcısı[kimlik sağlayıcı]sağladığı için müşterihakkında bilgi sahibi olmak Kaynak Sahibie.
OpenID Connect, tek bir oturum açmanın birden çok uygulamada kullanılabileceği senaryoları uygulamanıza olanak tanır - bu yaklaşım aynı zamanda tek seferlik (TOA). Örneğin bir uygulama, Facebook veya Twitter gibi sosyal ağlarla SSO entegrasyonunu destekleyerek, kullanıcıların zaten sahip oldukları ve kullanmayı tercih ettikleri bir hesabı kullanmalarına izin verebilir.
Akış (akış) OpenID Connect, OAuth durumundakiyle aynı görünür. Tek fark, birincil istekte kullanılan spesifik kapsamın şu olmasıdır: openid, - A müşteri sonunda gibi olur erişim JetonuVe kimlik belirteci.
Tıpkı OAuth akışında olduğu gibi, erişim Jetonu OpenID Connect'te bu, net olmayan bir değerdir müşteri'da. bakış açısından müşteri'a erişim Jetonu her istekle birlikte iletilen bir karakter dizisini temsil eder. Kaynak Sunucusu'y, belirtecin geçerli olup olmadığını belirler. kimlik belirteci tamamen farklı bir şeyi temsil ediyor.
Kimlik Jetonu bir JWT'dir
kimlik belirteci JSON Web Token veya JWT olarak bilinen özel olarak biçimlendirilmiş bir karakter dizisidir. (bazen JWT belirteçleri "jots" gibi telaffuz edilir). Dış gözlemciler için, JWT anlaşılmaz saçmalık gibi görünebilir, ancak müşteri kimlik, kullanıcı adı, oturum açma zamanı, son kullanma tarihi gibi çeşitli bilgileri JWT'den çıkarabilir kimlik belirteci'a, JWT'ye müdahale etme girişimlerinin varlığı. içindeki veriler kimlik belirteci'a denir uygulamalar[iddialar].
OIDC durumunda, standart bir yol da vardır. müşteri kişi hakkında ek bilgi talep edebilir [kimlik] itibaren Yetkilendirme Sunucusu'a, örneğin, kullanan bir e-posta adresi erişim Jetonu.
OAuth ve OIDC hakkında daha fazla bilgi edinin
OAuth ve OIDC'nin nasıl çalıştığını kısaca inceledik. Daha derine inmeye hazır mısınız? OAuth 2.0 ve OpenID Connect hakkında daha fazla bilgi edinmenize yardımcı olacak ek kaynakları burada bulabilirsiniz: