OAuth ve OpenID Connect için Resimli Kılavuz

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ı.

OAuth ve OpenID Connect için Resimli Kılavuz
"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!).

OAuth ve OpenID Connect için Resimli Kılavuz

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?

OAuth ve OpenID Connect için Resimli Kılavuz
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ı)!

OAuth ve OpenID Connect için Resimli Kılavuz
“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!"

  1. E-posta hizmetinizi seçin.
  2. Gerekirse, posta sitesine gidin ve hesabınızda oturum açın.
  3. Kişilerinize erişmesi için Günün Korkunç Kelime Oyunu'na izin verin.
  4. 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:

    OAuth ve OpenID Connect için Resimli Kılavuz

    O sensin! Kimlik bilgilerinize, verilerinizin sahibi sizsiniz ve hesaplarınızda gerçekleştirilebilecek tüm etkinlikleri kontrol ediyorsunuz.

  • müşteri:

    OAuth ve OpenID Connect için Resimli Kılavuz

    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:

    OAuth ve OpenID Connect için Resimli Kılavuz

    Bilen uygulama Kaynak Sahibi'a ve hangi sen Kaynak Sahibi'a zaten bir hesabım var.

  • Kaynak Sunucusu:

    OAuth ve OpenID Connect için Resimli Kılavuz

    Uygulama programlama arabirimi (API) veya hizmet müşteri adına kullanmak istiyor Kaynak Sahibi'a.

  • Yönlendirme URI'si:

    OAuth ve OpenID Connect için Resimli Kılavuz

    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ü:

    OAuth ve OpenID Connect için Resimli Kılavuz

    Alınması beklenen bilgi türü müşteri. En genel Yanıt Türü'ohm kodudur, yani müşteri almayı bekliyor Yetki Kodu.

  • kapsam:

    OAuth ve OpenID Connect için Resimli Kılavuz

    Bu, gerekli izinlerin ayrıntılı bir açıklamasıdır. müşteriverilere erişmek veya belirli eylemleri gerçekleştirmek gibi.

  • Rıza:

    OAuth ve OpenID Connect için Resimli Kılavuz

    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:

    OAuth ve OpenID Connect için Resimli Kılavuz

    Bu kimlik tanımlamak için kullanılır müşteri'bir açık Yetkilendirme Sunucusue.

  • Müşteri Sırrı:

    OAuth ve OpenID Connect için Resimli Kılavuz

    Bu sadece bilinen şifredir müşterisen ve Yetkilendirme Sunucusu'da. Bilgileri özel olarak paylaşmalarına olanak tanır.

  • Yetki Kodu:

    OAuth ve OpenID Connect için Resimli Kılavuz

    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:

    OAuth ve OpenID Connect için Resimli Kılavuz

    İ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.

OAuth ve OpenID Connect için Resimli Kılavuz

  1. 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.
  2. 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.
  3. Yetkilendirme Sunucusu gerekirse bir kullanıcı adı ve şifre sorarak sizi doğrular.
  4. 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.
  5. Yetkilendirme Sunucusu sizi siteye yönlendirir müşteri'a, kullanarak Yönlendirme URI'si ile Yetki Kodu (Yetki Kodu).
  6. 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.
  7. Yetkilendirme Sunucusu verileri kontrol eder ve şu şekilde yanıt verir: erişim Jetonu'om (erişim belirteci).
  8. ş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.

OAuth ve OpenID Connect için Resimli Kılavuz
"- 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.

OAuth ve OpenID Connect için Resimli Kılavuz

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.

OAuth ve OpenID Connect için Resimli Kılavuz

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].

OAuth ve OpenID Connect için Resimli Kılavuz

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:

Her zaman olduğu gibi, yorum yapmaktan çekinmeyin. En son haberlerimizden haberdar olmak için abone olun Twitter и YouTube Geliştiriciler için Okta!

çevirmenden PS

Blogumuzda da okuyun:

Kaynak: habr.com

Yorum ekle