OAuth және OpenID Connect бойынша суреттелген нұсқаулық

Ескерту. аударма: Окта жазған бұл тамаша мақала OAuth және OIDC (OpenID Connect) қарапайым және түсінікті түрде қалай жұмыс істейтінін түсіндіреді. Бұл білім әзірлеушілерге, жүйелік әкімшілерге және тіпті басқа қызметтермен құпия деректерді алмасатын танымал веб-қосымшалардың «тұрақты пайдаланушыларына» пайдалы болады.

Интернеттің тас дәуірінде қызметтер арасында ақпарат алмасу оңай болды. Сіз жай ғана логин мен парольді бір қызметтен екіншісіне бердіңіз, сонда ол сіздің тіркелгіңізге кіріп, қажетті ақпаратты алды.

OAuth және OpenID Connect бойынша суреттелген нұсқаулық
«Банк шотыңызды беріңізші». «Біз құпия сөзбен және ақшамен бәрі жақсы болады деп уәде береміз. Бұл адал, адал!» *хи хи*

Ужас! Ешкім ешқашан пайдаланушыдан логин мен парольді бөлісуді талап етпеуі керек, куәлік, басқа қызметпен. Бұл қызметтің артында тұрған ұйым деректерді қауіпсіз сақтайтынына және қажет болғаннан артық жеке ақпаратты жинамайтынына кепілдік жоқ. Бұл ақылсыз болып көрінуі мүмкін, бірақ кейбір қолданбалар әлі де бұл тәжірибені қолданады!

Бүгінгі күні бір қызмет басқасының деректерін қауіпсіз пайдалануға мүмкіндік беретін бірыңғай стандарт бар. Өкінішке орай, мұндай стандарттарда көптеген жаргондар мен терминдер қолданылады, бұл олардың түсінуін қиындатады. Бұл материалдың мақсаты - қарапайым иллюстрацияларды қолдану арқылы олардың қалай жұмыс істейтінін түсіндіру (Менің салған суреттерім балалардың суретін салуға ұқсайды деп ойлайсыз ба? Жарайсың!).

OAuth және OpenID Connect бойынша суреттелген нұсқаулық

Айтпақшы, бұл нұсқаулық бейне форматында да қол жетімді:

Ханымдар мен мырзалар, қош келдіңіз: OAuth 2.0

OAuth 2.0 бір қолданбаға басқа қолданбадағы ақпаратқа қол жеткізуге рұқсат алуға мүмкіндік беретін қауіпсіздік стандарты. Рұқсат беру қадамдарының реттілігі [рұқсат] (немесе келісім [келісім]) жиі хабарласады рұқсат [авторизация] немесе тіпті берілген рұқсат [берілген рұқсат]. Бұл стандарт арқылы сіз қолданбаға құпия сөзіңізді бермей-ақ деректерді оқуға немесе сіздің атыңыздан басқа қолданбаның функцияларын пайдалануға рұқсат бересіз. Сынып!

Мысал ретінде, сіз «Күннің сәтсіз ойыны» деп аталатын сайтты таптыңыз делік. [Күннің қорқынышты ойыны] және телефонға мәтіндік хабарламалар түріндегі күнделікті сөз тіркестерін алу үшін оған тіркелуді шешті. Сізге сайт өте ұнады және оны барлық достарыңызбен бөлісуді шештіңіз. Ақыр соңында, бәрі қорқынышты сөзді ұнатады, солай ма?

OAuth және OpenID Connect бойынша суреттелген нұсқаулық
«Күннің бақытсыз сөзі: денесінің сол жақ жартысынан айырылған жігіт туралы естідіңіз бе? Енді ол әрқашан дұрыс!» (шамамен аударма, өйткені түпнұсқаның өз сөз тіркесі бар – шамамен аударма)

Контактілер тізімінен әр адамға хат жазу мүмкін емес екені анық. Ал, егер сіз маған ұқсайтын болсаңыз, қажетсіз жұмыстан аулақ болу үшін кез келген әрекетке барасыз. Бақытымызға орай, Күннің қорқынышты ойыны барлық достарыңызды өзі шақыра алады! Ол үшін контактілердің электрондық поштасына кіру рұқсатын ашу жеткілікті - сайттың өзі оларға шақыруларды (OAuth ережелері) жібереді!

OAuth және OpenID Connect бойынша суреттелген нұсқаулық
«Барлығы сөз тіркестерін жақсы көреді! - Жүйеге кірдіңіз бе? «Күннің қорқынышты ойыны веб-сайтына контактілер тізіміне кіруге рұқсат бергіңіз келе ме? - Рақмет сізге! Енді сіз білетіндердің барлығына уақыттың соңына дейін күн сайын еске салғыштар жіберетін боламыз! Сен ең жақсы доссың!»

  1. Электрондық пошта қызметін таңдаңыз.
  2. Қажет болса, пошта сайтына өтіп, тіркелгіңізге кіріңіз.
  3. Күннің қорқынышты ойынына контактілерге кіруге рұқсат беріңіз.
  4. Күннің қорқынышты ойыны сайтына оралу.

Ойыңызды өзгерткен жағдайда, OAuth-ті пайдаланатын қолданбалар кіру мүмкіндігін жоюдың жолын да қамтамасыз етеді. Күннің қорқынышты ойынымен контактілерді бұдан былай бөліскіңіз келмейтінін шешкеннен кейін, пошта сайтына өтіп, ойын сайтын рұқсат етілген қолданбалар тізімінен алып тастай аласыз.

OAuth ағыны

Біз әдеттегідей деп аталатын нәрсені бастан өткердік ағын [ағыны] OAuth. Біздің мысалда бұл ағын көрінетін қадамдардан, сондай-ақ екі қызмет қауіпсіз ақпарат алмасу туралы келісетін бірнеше көрінбейтін қадамдардан тұрады. Алдыңғы күннің қорқынышты ойыны мысалы «авторизация коды» ағыны ретінде белгілі ең көп таралған OAuth 2.0 ағынын пайдаланады. ["авторизация коды" ағыны].

OAuth қалай жұмыс істейтінін егжей-тегжейлі қарастырмас бұрын, кейбір терминдердің мағынасы туралы сөйлесейік:

  • Ресурс иесі:

    OAuth және OpenID Connect бойынша суреттелген нұсқаулық

    Бұл сіз! Сіз тіркелгі деректеріңізді, деректеріңізді иеленесіз және тіркелгілеріңізде орындалуы мүмкін барлық әрекеттерді басқарасыз.

  • клиент:

    OAuth және OpenID Connect бойынша суреттелген нұсқаулық

    атынан белгілі бір әрекеттерді орындағысы келетін қолданба (мысалы, күннің қорқынышты ойыны қызметі) Ресурс иесі'А.

  • Авторизация сервері:

    OAuth және OpenID Connect бойынша суреттелген нұсқаулық

    Білетін қолданба Ресурс иесі'a және онда u Ресурс иесі'Менде аккаунт бар.

  • ресурс сервері:

    OAuth және OpenID Connect бойынша суреттелген нұсқаулық

    Қолданбалы бағдарламалау интерфейсі (API) немесе сол қызмет клиент атынан пайдаланғысы келеді Ресурс иесі'А.

  • URI қайта бағыттау:

    OAuth және OpenID Connect бойынша суреттелген нұсқаулық

    Бұл сілтеме Авторизация сервері қайта бағыттайды Ресурс иесі'және рұқсат алғаннан кейін клиент'сағ. Оны кейде «кері шақыру URL мекенжайы» деп те атайды.

  • жауап түрі:

    OAuth және OpenID Connect бойынша суреттелген нұсқаулық

    Күтілетін ақпарат түрі клиент. Ең ортақ жауап түрі'ohm - бұл код, яғни клиент алуды күтеді Авторизация коды.

  • Қолдану аясы:

    OAuth және OpenID Connect бойынша суреттелген нұсқаулық

    Бұл талап етілетін рұқсаттардың толық сипаттамасы клиент'y, мысалы, деректерге қол жеткізу немесе белгілі бір әрекеттерді орындау.

  • Келісім:

    OAuth және OpenID Connect бойынша суреттелген нұсқаулық

    Авторизация сервері алады Ауқымдарсұралды клиент- деп сұрайды Ресурс иесі'a, ол қамтамасыз етуге дайын ба? клиент'тиісті рұқсаттары бар.

  • Тұтынушы идентификаторы:

    OAuth және OpenID Connect бойынша суреттелген нұсқаулық

    Бұл идентификатор анықтау үшін пайдаланылады клиент'a on Авторизация сервері'e.

  • Клиенттің құпиясы:

    OAuth және OpenID Connect бойынша суреттелген нұсқаулық

    Бұл тек белгілі құпия сөз клиент'сен және Авторизация сервері'сағ. Бұл оларға жеке ақпарат алмасуға мүмкіндік береді.

  • Авторизация коды:

    OAuth және OpenID Connect бойынша суреттелген нұсқаулық

    Қолданылу мерзімі қысқа уақытша код, ол клиент қамтамасыз етеді Авторизация сервері'y орнына Токенге кіру.

  • Токенге кіру:

    OAuth және OpenID Connect бойынша суреттелген нұсқаулық

    Клиент байланысу үшін пайдаланатын кілт ресурс сервері'ом. Қамтамасыз ететін бейдж немесе кілт картасының түрі клиент'деректерді сұрауға немесе әрекеттерді орындауға рұқсаты бар ресурс серверісіздің атыңыздан.

ескерту: Кейде авторизация сервері мен ресурс сервері бір сервер болып табылады. Дегенмен, кейбір жағдайларда олар бір ұйымға тиесілі болмаса да, әртүрлі серверлер болуы мүмкін. Мысалы, авторизация сервері Ресурс сервері сенімді үшінші тарап қызметі болуы мүмкін.

Біз OAuth 2.0 негізгі тұжырымдамаларын қарастырған соң, мысалға оралайық және OAuth ағынында не болатынын егжей-тегжейлі қарастырайық.

OAuth және OpenID Connect бойынша суреттелген нұсқаулық

  1. Сіз, Ресурс иесі, сіз күннің қорқынышты ойынын ұсынғыңыз келеді (клиентy) барлық достарыңызға шақырулар жібере алатын контактілерге қол жеткізу.
  2. клиент шолғышты бетке қайта бағыттайды Авторизация сервері'a және сұрауға қосыңыз Тұтынушы идентификаторы, URI қайта бағыттау, жауап түрі және бір немесе бірнеше Ауқымдар (рұқсаттар) қажет.
  3. Авторизация сервері қажет болған жағдайда пайдаланушы аты мен құпия сөзді сұрай отырып, сізді тексереді.
  4. Авторизация сервері пішінді көрсетеді Келісім (растаулар) барлығының тізімімен Ауқымдарсұралды клиент'ом. Сіз келісесіз немесе бас тартасыз.
  5. Авторизация сервері сайтқа қайта бағыттайды клиент'a, пайдалану URI қайта бағыттау бірге Авторизация коды (авторизация коды).
  6. клиент -мен тікелей байланысады Авторизация сервері'ohm (браузерді айналып өту Ресурс иесі'a) және қауіпсіз түрде жібереді Тұтынушы идентификаторы, Клиенттің құпиясы и Авторизация коды.
  7. Авторизация сервері деректерді тексереді және жауап береді Токенге кіру'om (қолжетімділік белгісі).
  8. Қазір клиент пайдалана алады Токенге кіру сұрау жіберу үшін ресурс сервері контактілер тізімін алу үшін.

Клиент идентификаторы және құпия

Күннің қорқынышты ойынына контактілеріңізге кіруге рұқсат бергеніңізден көп бұрын, Клиент пен Авторизация сервері жұмыс қатынасын орнатқан болатын. Авторизация сервері Клиент идентификаторын және Клиент құпиясын жасады (кейде деп аталады Қолданба идентификаторы и Қолданба құпиясы) және оларды OAuth ішінде одан әрі өзара әрекеттесу үшін Клиентке жіберді.

OAuth және OpenID Connect бойынша суреттелген нұсқаулық
«- Сәлеметсіз бе! Мен сіздермен жұмыс істегім келеді! - Әрине, проблема емес! Міне, сіздің клиенттік идентификаторыңыз бен құпияңыз!»

Атауы Клиент құпиясы оны тек Клиент пен Авторизация сервері білуі үшін құпия сақталуы керек дегенді білдіреді. Өйткені, оның көмегімен Авторизация сервері Клиенттің шындығын растайды.

Бірақ бұл бәрі емес... OpenID Connect бағдарламасына қош келдіңіз!

OAuth 2.0 тек мыналарға арналған рұқсат - бір қолданбадан екіншісіне деректер мен функцияларға қол жеткізуді қамтамасыз ету. OpenID қосылымы (OIDC) - OAuth 2.0 жоғарғы жағындағы жұқа қабат, ол тіркелгіге кірген пайдаланушының логин мен профиль мәліметтерін қосады. Жүйеге кіру сеансын ұйымдастыру жиі деп аталады аутентификация [аутентификация], және жүйеге кірген пайдаланушы туралы ақпарат (яғни Ресурс иесі'e), — жеке деректер [жеке басын куәландыратын]. Авторизация сервері OIDC қолдаса, ол кейде деп аталады жеке деректерді жеткізуші [жеке куәлік беруші]қамтамасыз ететіндіктен клиенттуралы ақпарат бар Ресурс иесі'e.

OpenID Connect бір логинді бірнеше қолданбаларда пайдалануға болатын сценарийлерді жүзеге асыруға мүмкіндік береді - бұл тәсіл сондай-ақ белгілі бір реттік кіру (SSO). Мысалы, қолданба пайдаланушыларға бұрыннан бар және пайдаланғысы келетін есептік жазбаны пайдалануға мүмкіндік беретін Facebook немесе Twitter сияқты әлеуметтік желілермен SSO интеграциясын қолдауы мүмкін.

OAuth және OpenID Connect бойынша суреттелген нұсқаулық

OpenID Connect ағыны (ағыны) OAuth жағдайындағы сияқты көрінеді. Жалғыз айырмашылық - бастапқы сұрауда қолданылатын нақты аумақ openid, - А клиент ақырында ұқсайды Токенге кіру, Сонымен ID таңбалауышы.

OAuth және OpenID Connect бойынша суреттелген нұсқаулық

OAuth ағынындағы сияқты, Токенге кіру OpenID Connect жүйесінде бұл анық емес мән клиент'сағ. тұрғысынан клиентТокенге кіру әрбір сұраумен бірге берілетін таңбалар жолын білдіреді ресурс сервері'y, ол таңбалауыштың жарамдылығын анықтайды. ID таңбалауышы мүлде басқа нәрсені білдіреді.

ID Token - бұл JWT

ID таңбалауышы JSON Web Token немесе JWT ретінде белгілі таңбалардың арнайы пішімделген жолы (кейде JWT таңбалауыштары «жоқтар» деп айтылады). Сырттан келген бақылаушылар үшін JWT түсініксіз сөз сияқты көрінуі мүмкін, бірақ клиент JWT-тен идентификатор, пайдаланушы аты, кіру уақыты, жарамдылық мерзімі сияқты әртүрлі ақпаратты шығара алады ID таңбалауышы'a, JWT-ге кедергі жасау әрекеттерінің болуы. Ішіндегі деректер ID таңбалауышыа деп аталады қолданбалар [шағымдар].

OAuth және OpenID Connect бойынша суреттелген нұсқаулық

OIDC жағдайында стандартты әдіс бар клиент жеке тұлға туралы қосымша ақпаратты сұрай алады [жеке басын куәландыратын] от Авторизация сервері'a, мысалы, пайдаланатын электрондық пошта мекенжайы Токенге кіру.

OAuth және OIDC туралы көбірек біліңіз

Сонымен, біз OAuth және OIDC қалай жұмыс істейтінін қысқаша қарастырдық. Тереңірек қазуға дайынсыз ба? Мұнда OAuth 2.0 және OpenID Connect туралы көбірек білуге ​​көмектесетін қосымша ресурстар бар:

Әдеттегідей, пікір қалдырыңыз. Біздің соңғы жаңалықтарымыздан хабардар болу үшін жазылыңыз Twitter и YouTube Әзірлеушілерге арналған Okta!

Аудармашыдан PS

Біздің блогта да оқыңыз:

Ақпарат көзі: www.habr.com

пікір қалдыру