OAuth va OpenID Connect uchun tasvirlangan qo'llanma

Eslatma. tarjima.: Oktaning ushbu ajoyib maqolasi OAuth va OIDC (OpenID Connect) qanday ishlashini sodda va tushunarli tarzda tushuntiradi. Ushbu bilim ishlab chiquvchilar, tizim ma'murlari va hatto boshqa xizmatlar bilan maxfiy ma'lumotlarni almashadigan mashhur veb-ilovalarning "muntazam foydalanuvchilari" uchun foydali bo'ladi.

Internetning tosh asrida xizmatlar o'rtasida ma'lumot almashish oson edi. Siz shunchaki login va parolingizni bir xizmatdan boshqasiga berdingiz, shunda u sizning hisobingizga kirdi va kerakli ma'lumotlarni oldi.

OAuth va OpenID Connect uchun tasvirlangan qo'llanma
"Menga bank hisobingizni bering." “Parol va pul bilan hammasi yaxshi bo'lishiga va'da beramiz. Bu halol, halol!" *he-he*

Dahshat! Hech kim foydalanuvchidan foydalanuvchi nomi va parolni almashishni talab qilmasligi kerak, hisobga olish ma'lumotlari, boshqa xizmat bilan. Ushbu xizmat ortidagi tashkilot ma'lumotlarni xavfsiz saqlashiga va kerak bo'lgandan ko'ra ko'proq shaxsiy ma'lumotlarni to'plamasligiga kafolat yo'q. Bu aqldan ozishi mumkin, lekin ba'zi ilovalar hali ham bu amaliyotdan foydalanadi!

Bugungi kunda bitta xizmat boshqasining ma'lumotlaridan xavfsiz foydalanish imkonini beruvchi yagona standart mavjud. Afsuski, bunday standartlarda juda ko'p jargon va atamalar qo'llaniladi, bu ularni tushunishni qiyinlashtiradi. Ushbu materialning maqsadi oddiy illyustratsiyalar yordamida qanday ishlashini tushuntirishdir (Sizningcha, mening chizgan rasmlarim bolalarning dabdabalariga o'xshaydimi? Xo'sh!).

OAuth va OpenID Connect uchun tasvirlangan qo'llanma

Aytgancha, ushbu qo'llanma video formatida ham mavjud:

Xonimlar va janoblar, xush kelibsiz: OAuth 2.0

OAuth 2.0 bir ilovaga boshqa ilovadagi maʼlumotlarga kirish uchun ruxsat olish imkonini beruvchi xavfsizlik standarti. Ruxsatnoma berish bosqichlari ketma-ketligi [ruxsat] (yoki rozilik [rozilik]) tez-tez qo'ng'iroq qiling ruxsat [ruxsat] yoki hatto berilgan vakolat [vakolatli ruxsat]. Ushbu standart yordamida siz ilovaga parolingizni bermasdan maʼlumotlarni oʻqish yoki sizning nomingizdan boshqa ilova funksiyalaridan foydalanishga ruxsat berasiz. Sinf!

Misol tariqasida, siz "Kunning omadsiz o'yini" deb nomlangan saytni topdingiz deylik. [Kunning dahshatli so'zi] va har kuni telefonda matnli xabarlar ko'rinishidagi so'z o'yinlarini olish uchun ro'yxatdan o'tishga qaror qildi. Sizga sayt juda yoqdi va siz uni barcha do'stlaringiz bilan baham ko'rishga qaror qildingiz. Axir, hamma dahshatli so'zlarni yaxshi ko'radi, shunday emasmi?

OAuth va OpenID Connect uchun tasvirlangan qo'llanma
"Kunning baxtsiz so'zi: tanasining chap yarmini yo'qotgan yigit haqida eshitganmisiz? Endi u har doim haqdir! ” (taxminan tarjima, chunki asl nusxada o'z so'z birikmasi bor - taxminan tarjima).

Kontaktlar ro'yxatidan har bir kishiga yozish variant emasligi aniq. Va agar siz menga ozgina o'xshagan bo'lsangiz, keraksiz ishlardan qochish uchun hamma narsani qilasiz. Yaxshiyamki, Kunning Dahshatli Pun o'zi barcha do'stlaringizni taklif qilishi mumkin! Buning uchun kontaktlaringizning elektron pochtasiga kirishni ochish kifoya - saytning o'zi ularga taklifnomalar yuboradi (OAuth qoidalari)!

OAuth va OpenID Connect uchun tasvirlangan qo'llanma
"Hamma so'z birikmalarini yaxshi ko'radi! - Allaqachon tizimga kirganmisiz? “Kunning dahshatli so‘zlashuvi veb-saytiga kontaktlar ro‘yxatiga kirishga ruxsat bermoqchimisiz? - Rahmat! Bundan buyon biz har kuni siz bilgan har bir kishiga, oxirigacha eslatmalar yuboramiz! Siz eng yaxshi do'stsiz! ”

  1. Elektron pochta xizmatini tanlang.
  2. Agar kerak bo'lsa, pochta saytiga o'ting va hisobingizga kiring.
  3. Kunning dahshatli so'zlashuviga kontaktlaringizga kirishga ruxsat bering.
  4. "Kunning dahshatli so'zi" saytiga qaytish.

Agar fikringizni o'zgartirsangiz, OAuth-dan foydalanadigan ilovalar kirishni bekor qilish usulini ham taqdim etadi. Kunning dahshatli o'yinchisi bilan aloqalarni endi baham ko'rishni xohlamasligingizga qaror qilganingizdan so'ng, pochta saytiga o'tishingiz va so'zlashuv saytini ruxsat etilgan ilovalar ro'yxatidan olib tashlashingiz mumkin.

OAuth oqimi

Biz hozirgina odatda deb ataladigan narsadan o'tdik oqim [oqim] OAuth. Bizning misolimizda, bu oqim ko'rinadigan bosqichlardan, shuningdek, bir nechta ko'rinmas bosqichlardan iborat bo'lib, ularda ikkita xizmat xavfsiz ma'lumot almashinuviga rozi bo'ladi. Oldingi “Kunning dahshatli so‘zi” misolida “avtorizatsiya kodi” oqimi sifatida tanilgan eng keng tarqalgan OAuth 2.0 oqimidan foydalaniladi. ["avtorizatsiya kodi" oqimi].

OAuth qanday ishlashini batafsil ko'rib chiqishdan oldin, keling, ba'zi atamalarning ma'nosi haqida gapiraylik:

  • Resurs egasi:

    OAuth va OpenID Connect uchun tasvirlangan qo'llanma

    Bu sizsiz! Siz hisob ma'lumotlaringiz, ma'lumotlaringizga egalik qilasiz va hisob qaydnomangizda bajarilishi mumkin bo'lgan barcha harakatlarni nazorat qilasiz.

  • mijoz:

    OAuth va OpenID Connect uchun tasvirlangan qo'llanma

    nomidan ma'lum harakatlarga kirishni yoki amalga oshirishni xohlaydigan ilova (masalan, Kunning dahshatli Pun xizmati) Resurs egasi'A.

  • Avtorizatsiya serveri:

    OAuth va OpenID Connect uchun tasvirlangan qo'llanma

    Biladigan dastur Resurs egasi'a va qaysi u Resurs egasi"Allaqachon hisobi bor.

  • resurs serveri:

    OAuth va OpenID Connect uchun tasvirlangan qo'llanma

    Ilova dasturlash interfeysi (API) yoki unga xizmat ko'rsatish mijoz nomidan foydalanmoqchi Resurs egasi'A.

  • URI-ni qayta yo'naltirish:

    OAuth va OpenID Connect uchun tasvirlangan qo'llanma

    Bu havola Avtorizatsiya serveri yo'naltiradi Resurs egasiva ruxsat berilgandan keyin mijoz'da. U ba'zan "qayta qo'ng'iroq URL" deb ataladi.

  • javob turi:

    OAuth va OpenID Connect uchun tasvirlangan qo'llanma

    Qabul qilinishi kutilayotgan ma'lumotlar turi mijoz. Eng keng tarqalgan javob turi"ohm - bu kod, ya'ni mijoz olishni kutadi Avtorizatsiya kodi.

  • Tortib:

    OAuth va OpenID Connect uchun tasvirlangan qo'llanma

    Bu talab qilinadigan ruxsatlarning batafsil tavsifi mijoz'y, masalan, ma'lumotlarga kirish yoki muayyan harakatlarni bajarish.

  • Rozilik:

    OAuth va OpenID Connect uchun tasvirlangan qo'llanma

    Avtorizatsiya serveri oladi Maydonlarso'ralgan mijoz— deb soʻradi Resurs egasi'a, u ta'minlashga tayyormi? mijoz'tegishli ruxsatlarga ega bo'ling.

  • mijoz ID:

    OAuth va OpenID Connect uchun tasvirlangan qo'llanma

    Ushbu ID identifikatsiya qilish uchun ishlatiladi mijoza on Avtorizatsiya serveri'e.

  • Mijoz sirlari:

    OAuth va OpenID Connect uchun tasvirlangan qo'llanma

    Bu faqat ma'lum bo'lgan parol mijoz'u va Avtorizatsiya serveri'da. Bu ularga shaxsiy ma'lumotlarni almashish imkonini beradi.

  • Avtorizatsiya kodi:

    OAuth va OpenID Connect uchun tasvirlangan qo'llanma

    Qisqa muddatga ega bo'lgan vaqtinchalik kod mijoz beradi Avtorizatsiya serverining evaziga Kirish Token.

  • Kirish Token:

    OAuth va OpenID Connect uchun tasvirlangan qo'llanma

    Mijoz muloqot qilish uchun foydalanadigan kalit resurs serveri'om. Ta'minlovchi bir turdagi nishon yoki kalit karta mijoz'ma'lumot so'rash yoki amallarni bajarish uchun ruxsatga ega resurs serverisizning nomingizdan.

nota: Ba'zida avtorizatsiya serveri va resurs serveri bir xil serverdir. Biroq, ba'zi hollarda, ular bir tashkilotga tegishli bo'lmasa ham, turli xil serverlar bo'lishi mumkin. Masalan, avtorizatsiya serveri Resurs serveri ishonchli uchinchi tomon xizmati bo'lishi mumkin.

Endi biz OAuth 2.0 ning asosiy tushunchalarini ko‘rib chiqdik, keling, misolimizga qaytaylik va OAuth oqimida nima sodir bo‘lishini batafsil ko‘rib chiqaylik.

OAuth va OpenID Connect uchun tasvirlangan qo'llanma

  1. Siz, Resurs egasi, siz "Kunning dahshatli so'zi" xizmatini taqdim qilmoqchisiz (mijozy) barcha do'stlaringizga taklifnoma yuborishlari uchun kontaktlaringizga kirish.
  2. mijoz brauzerni sahifaga yo'naltiradi Avtorizatsiya serveri'a va so'rovga kiriting mijoz ID, URI-ni qayta yo'naltirish, javob turi va bir yoki bir nechta Maydonlar (ruxsatnomalar) kerak.
  3. Avtorizatsiya serveri sizni tekshiradi, agar kerak bo'lsa, foydalanuvchi nomi va parolni so'raydi.
  4. Avtorizatsiya serveri shaklni ko'rsatadi Rozilik (tasdiqlashlar) hammasi ro'yxati bilan Maydonlarso'ragan mijoz'om. Siz rozi bo'lasiz yoki rad etasiz.
  5. Avtorizatsiya serveri sizni saytga yo'naltiradi mijoz'a, foydalanish URI-ni qayta yo'naltirish bilan birga Avtorizatsiya kodi (avtorizatsiya kodi).
  6. mijoz bilan bevosita muloqot qiladi Avtorizatsiya serveri'ohm (brauzerni chetlab o'tish Resurs egasia) va xavfsiz yuboradi mijoz ID, Mijoz sirlari и Avtorizatsiya kodi.
  7. Avtorizatsiya serveri ma'lumotlarni tekshiradi va javob beradi Kirish Token'om (kirish belgisi).
  8. Endi mijoz foydalanishi mumkin Kirish Token ga so'rov yuborish resurs serveri kontaktlar ro'yxatini olish uchun.

Mijoz identifikatori va siri

Kunning dahshatli o'yiniga kontaktlaringizga kirishga ruxsat berishingizdan ancha oldin, mijoz va avtorizatsiya serveri ish munosabatlarini o'rnatgan edi. Avtorizatsiya serveri mijoz identifikatori va mijoz sirini yaratdi (ba'zan App ID и Ilova siri) va ularni OAuth doirasida keyingi o'zaro hamkorlik qilish uchun Mijozga yubordi.

OAuth va OpenID Connect uchun tasvirlangan qo'llanma
"- Salom! Men siz bilan ishlashni xohlayman! - Albatta, muammo emas! Mana sizning mijoz identifikatoringiz va siringiz!”

Ism mijoz sirini faqat mijoz va avtorizatsiya serveri bilishi uchun maxfiy saqlanishi kerakligini bildiradi. Axir, uning yordami bilan avtorizatsiya serveri Mijozning haqiqatini tasdiqlaydi.

Lekin bu hammasi emas... Iltimos, OpenID Connect-ga xush kelibsiz!

OAuth 2.0 faqat uchun mo'ljallangan ruxsat - bir ilovadan boshqasiga ma'lumotlar va funksiyalarga kirishni ta'minlash. OpenID ulanish (OIDC) OAuth 2.0 ning yuqori qismidagi yupqa qatlam bo'lib, hisob qaydnomasiga kirgan foydalanuvchining login va profil ma'lumotlarini qo'shadi. Kirish seansini tashkil qilish ko'pincha deb ataladi autentifikatsiya [autentifikatsiya], va tizimga kirgan foydalanuvchi haqidagi ma'lumotlar (ya'ni Resurs egasi'e), - Shaxsiy malumot [shaxslik]. Agar avtorizatsiya serveri OIDC ni qo'llab-quvvatlasa, u ba'zan shunday deb ataladi shaxsiy ma'lumotlar provayderi [identifikatsiya provayderi]chunki u beradi mijozhaqida ma'lumotga ega Resurs egasi'e.

OpenID Connect bir nechta ilovalarda bitta logindan foydalanish mumkin bo'lgan stsenariylarni amalga oshirish imkonini beradi - bu yondashuv sifatida ham tanilgan. yagona kirish (SSO). Masalan, ilova Facebook yoki Twitter kabi ijtimoiy tarmoqlar bilan SSO integratsiyasini qo‘llab-quvvatlashi mumkin, bu esa foydalanuvchilarga o‘zlarida mavjud bo‘lgan va foydalanishni afzal ko‘rgan akkauntdan foydalanish imkonini beradi.

OAuth va OpenID Connect uchun tasvirlangan qo'llanma

OpenID Connect oqimi (oqimi) OAuth holatidagi kabi ko'rinadi. Yagona farq shundaki, birlamchi so'rovda ishlatiladigan o'ziga xos qamrov openid, - A mijoz oxir-oqibat shunday bo'ladi Kirish Token, va ID tokeni.

OAuth va OpenID Connect uchun tasvirlangan qo'llanma

Xuddi OAuth oqimidagi kabi, Kirish Token OpenID Connect-da bu aniq bo'lmagan qiymatdir mijoz'da. Nuqtai nazaridan mijoz‘а Kirish Token har bir soʻrov bilan birga uzatiladigan belgilar qatorini ifodalaydi resurs serveri'y, bu tokenning haqiqiyligini aniqlaydi. ID tokeni butunlay boshqacha narsani ifodalaydi.

ID Token - bu JWT

ID tokeni JSON Web Token yoki JWT deb nomlanuvchi maxsus formatlangan belgilar qatori (ba'zan JWT tokenlari "jots" kabi talaffuz qilinadi). Tashqi kuzatuvchilar uchun JWT tushunarsiz ma'nosiz tuyulishi mumkin, ammo mijoz JWT dan identifikator, foydalanuvchi nomi, kirish vaqti, amal qilish muddati kabi turli xil ma'lumotlarni olishi mumkin ID tokeni'a, JWTga aralashishga urinishlar mavjudligi. Ichki ma'lumotlar ID tokenia deb ataladi ilovalar [da'volar].

OAuth va OpenID Connect uchun tasvirlangan qo'llanma

OIDC holatida standart usul ham mavjud mijoz shaxs toʻgʻrisida qoʻshimcha maʼlumot soʻrashi mumkin [shaxslik] от Avtorizatsiya serveri'a, masalan, elektron pochta manzilidan foydalanish Kirish Token.

OAuth va OIDC haqida ko'proq bilib oling

Shunday qilib, biz OAuth va OIDC qanday ishlashini qisqacha ko'rib chiqdik. Chuqurroq qazishga tayyormisiz? OAuth 2.0 va OpenID Connect haqida koʻproq maʼlumot olishga yordam beradigan qoʻshimcha manbalar:

Har doimgidek, sharhlaringizni qoldiring. Bizning eng so'nggi yangiliklarimizdan xabardor bo'lish uchun obuna bo'ling Twitter и YouTube Ishlab chiquvchilar uchun Okta!

Tarjimondan PS

Shuningdek, bizning blogimizda o'qing:

Manba: www.habr.com

a Izoh qo'shish