Π˜Π»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ руководство ΠΏΠΎ OAuth ΠΈ OpenID Connect

ΠŸΡ€ΠΈΠΌ. ΠΏΠ΅Ρ€Π΅Π².: Π’ этом Π·Π°ΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΌ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π΅ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Okta просто ΠΈ наглядно рассказываСтся ΠΎ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ°Ρ… Ρ€Π°Π±ΠΎΡ‚Ρ‹ OAuth ΠΈ OIDC (OpenID Connect). Π­Ρ‚ΠΈ знания Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ, систСмным администраторам ΠΈ Π΄Π°ΠΆΠ΅ Β«ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌΒ» популярных Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ скорСС всСго Ρ‚ΠΎΠΆΠ΅ ΠΎΠ±ΠΌΠ΅Π½ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΊΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ сСрвисами.

Π’ Β«ΠΊΠ°ΠΌΠ΅Π½Π½ΠΎΠΌ Π²Π΅ΠΊΠ΅Β» ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π° Π΄Π΅Π»ΠΈΡ‚ΡŒΡΡ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ ΠΌΠ΅ΠΆΠ΄Ρƒ сСрвисами Π±Ρ‹Π»ΠΎ Π»Π΅Π³ΠΊΠΎ. Π’Ρ‹ просто Π΄Π°Π²Π°Π»ΠΈ свой Π»ΠΎΠ³ΠΈΠ½ ΠΈ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ ΠΎΡ‚ ΠΎΠ΄Π½ΠΎΠ³ΠΎ сСрвиса Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ‚ΠΎΡ‚ вошСл Π² Π²Π°ΡˆΡƒ ΡƒΡ‡Π΅Ρ‚Π½ΡƒΡŽ запись ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ» Π»ΡŽΠ±ΡƒΡŽ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡƒΡŽ Π΅ΠΌΡƒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ.

Π˜Π»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ руководство ΠΏΠΎ OAuth ΠΈ OpenID Connect
Β«ΠŸΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΡŒΡ‚Π΅ свою Π±Π°Π½ΠΊΠΎΠ²ΡΠΊΡƒΡŽ ΡƒΡ‡Ρ‘Ρ‚ΠΊΡƒΒ». β€” Β«ΠžΠ±Π΅Ρ‰Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ с ΠΏΠ°Ρ€ΠΎΠ»Π΅ΠΌ ΠΈ дСньгами всС Π±ΡƒΠ΄Π΅Ρ‚ Π² порядкС. Π’ΠΎΡ‚ прям чСстно-прСчСстно!Β» *Ρ…ΠΈ-Ρ…ΠΈ*

Π–ΡƒΡ‚ΡŒ! Никто ΠΈ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ Π»ΠΎΠ³ΠΈΠ½ΠΎΠΌ ΠΈ ΠΏΠ°Ρ€ΠΎΠ»Π΅ΠΌ, Π΅Π³ΠΎ ΡƒΡ‡Ρ‘Ρ‚Π½Ρ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, с Π΄Ρ€ΡƒΠ³ΠΈΠΌ сСрвисом. НСт Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΠΈ, Ρ‡Ρ‚ΠΎ организация, стоящая Π·Π° этим сСрвисом, Π±ΡƒΠ΄Π΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π² бСзопасности ΠΈ Π½Π΅ собСрСт большС ΠΏΠ΅Ρ€ΡΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, Ρ‡Π΅ΠΌ Π½ΡƒΠΆΠ½ΠΎ. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ Π΄ΠΈΠΊΠΎΡΡ‚ΡŒΡŽ, Π½ΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ прилоТСния Π΄ΠΎ сих ΠΏΠΎΡ€ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡƒΡŽ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΡƒ!

БСгодня имССтся Π΅Π΄ΠΈΠ½Ρ‹ΠΉ стандарт, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΠΎΠ΄Π½ΠΎΠΌΡƒ сСрвису бСзопасно Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ. К соТалСнию, ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ стандарты ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ массу ΠΆΠ°Ρ€Π³ΠΎΠ½ΠΈΠ·ΠΌΠΎΠ² ΠΈ Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΎΠ², Ρ‡Ρ‚ΠΎ услоТняСт ΠΈΡ… ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅. ЦСль этого ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π° β€” с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ простых ΠΈΠ»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΠΉ ΠΎΠ±ΡŠΡΡΠ½ΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ (Π”ΡƒΠΌΠ°Π΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΈ рисунки Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°ΡŽΡ‚ Π΄Π΅Ρ‚ΡΠΊΡƒΡŽ мазню? Ну ΠΈ Π»Π°Π΄Π½ΠΎ!).

Π˜Π»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ руководство ΠΏΠΎ OAuth ΠΈ OpenID Connect

ΠœΠ΅ΠΆΠ΄Ρƒ ΠΏΡ€ΠΎΡ‡ΠΈΠΌ, это руководство Ρ‚Π°ΠΊΠΆΠ΅ доступно Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ Π²ΠΈΠ΄Π΅ΠΎ:

Π”Π°ΠΌΡ‹ ΠΈ господа, встрСчайтС: OAuth 2.0

OAuth 2.0 β€” это стандарт бСзопасности, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΠΎΠ΄Π½ΠΎΠΌΡƒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π½Π° доступ ΠΊ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ. ΠŸΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ дСйствий для Π²Ρ‹Π΄Π°Ρ‡ΠΈ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ [permission] (ΠΈΠ»ΠΈ согласия [consent]) часто Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ [authorization] ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ Π΄Π΅Π»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ [delegated authorization]. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этого стандарта Π²Ρ‹ позволяСтС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ прилоТСния ΠΎΡ‚ вашСго ΠΈΠΌΠ΅Π½ΠΈ, Π½Π΅ сообщая Π΅ΠΌΡƒ свой ΠΏΠ°Ρ€ΠΎΠ»ΡŒ. Класс!

Π’ качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° прСдставим, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ»ΠΈ сайт с Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ «НСудачный ΠΊΠ°Π»Π°ΠΌΠ±ΡƒΡ€ дня» [Terrible Pun of the Day] ΠΈ Ρ€Π΅ΡˆΠΈΠ»ΠΈ Π·Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π½Π° Π½Π΅ΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΅ΠΆΠ΅Π΄Π½Π΅Π²Π½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ ΠΊΠ°Π»Π°ΠΌΠ±ΡƒΡ€Ρ‹ Π² Π²ΠΈΠ΄Π΅ тСкстовых сообщСний Π½Π° Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½. Π‘Π°ΠΉΡ‚ Π²Π°ΠΌ ΠΎΡ‡Π΅Π½ΡŒ понравился, ΠΈ Π²Ρ‹ Ρ€Π΅ΡˆΠΈΠ»ΠΈ ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ ΠΈΠΌ со всСми Π·Π½Π°ΠΊΠΎΠΌΡ‹ΠΌΠΈ. Π’Π΅Π΄ΡŒ ΠΆΡƒΡ‚ΠΊΠΈΠ΅ ΠΊΠ°Π»Π°ΠΌΠ±ΡƒΡ€Ρ‡ΠΈΠΊΠΈ нравятся всСм, Π½Π΅ Ρ‚Π°ΠΊ Π»ΠΈ?

Π˜Π»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ руководство ΠΏΠΎ OAuth ΠΈ OpenID Connect
«НСудачный ΠΊΠ°Π»Π°ΠΌΠ±ΡƒΡ€ дня: Π‘Π»Ρ‹ΡˆΠ°Π»ΠΈ ΠΎ ΠΏΠ°Ρ€Π½Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ потСрял Π»Π΅Π²ΡƒΡŽ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Ρƒ Ρ‚Π΅Π»Π°? Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΎΠ½ всСгда ΠΏΡ€Π°Π²!Β» (ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½Ρ‹ΠΉ, Ρ‚.ΠΊ. Π² ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»Π΅ своя ΠΈΠ³Ρ€Π° слов β€” ΠΏΡ€ΠΈΠΌ. ΠΏΠ΅Ρ€Π΅Π².)

ΠŸΠΎΠ½ΡΡ‚Π½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΡƒ ΠΈΠ· ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚-листа Π½Π΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚. И, Ссли Π²Ρ‹ хотя Π±Ρ‹ Ρ‡ΡƒΡ‚ΠΎΡ‡ΠΊΡƒ ΠΏΠΎΡ…ΠΎΠΆΠΈ Π½Π° мСня, Ρ‚ΠΎ ΠΏΠΎΠΉΠ΄Π΅Ρ‚Π΅ Π½Π° всё, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ лишнСй Ρ€Π°Π±ΠΎΡ‚Ρ‹. Π‘Π»Π°Π³ΠΎ Terrible Pun of the Day ΠΌΠΎΠΆΠ΅Ρ‚ сам ΠΏΡ€ΠΈΠ³Π»Π°ΡΠΈΡ‚ΡŒ всСх Π²Π°ΡˆΠΈΡ… Π΄Ρ€ΡƒΠ·Π΅ΠΉ! Для этого лишь Π½ΡƒΠΆΠ½ΠΎ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Π΅ΠΌΡƒ доступ ΠΊ элСктронной ΠΏΠΎΡ‡Ρ‚Π΅ ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚ΠΎΠ² β€” сайт сам ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ ΠΈΠΌ ΠΏΡ€ΠΈΠ³Π»Π°ΡˆΠ΅Π½ΠΈΡ (OAuth Ρ€ΡƒΠ»ΠΈΡ‚)!

Π˜Π»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ руководство ΠΏΠΎ OAuth ΠΈ OpenID Connect
«ВсС Π»ΡŽΠ±ΡΡ‚ ΠΊΠ°Π»Π°ΠΌΠ±ΡƒΡ€Ρ‹! β€” Π£ΠΆΠ΅ залогинились? β€” Π₯ΠΎΡ‚ΠΈΡ‚Π΅ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ доступ сайту Terrible Pun of the Day ΠΊ списку ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚ΠΎΠ²? β€” Бпасибо! Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ дСнь Π±ΡƒΠ΄Π΅ΠΌ ΡΠ»Π°Ρ‚ΡŒ напоминания всСм, ΠΊΠΎΠ³ΠΎ Π²Ρ‹ Π·Π½Π°Π΅Ρ‚Π΅, Π΄ΠΎ скончания Π²Π΅ΠΊΠΎΠ²! Π’Ρ‹ самый Π»ΡƒΡ‡ΡˆΠΈΠΉ Π΄Ρ€ΡƒΠ³!Β»

  1. Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ свой сСрвис элСктронной ΠΏΠΎΡ‡Ρ‚Ρ‹.
  2. ΠŸΡ€ΠΈ нСобходимости ΠΏΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π½Π° сайт ΠΏΠΎΡ‡Ρ‚Ρ‹ ΠΈ Π²ΠΎΠΉΠ΄ΠΈΡ‚Π΅ Π² ΡƒΡ‡Π΅Ρ‚Π½ΡƒΡŽ запись.
  3. Π”Π°ΠΉΡ‚Π΅ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ сайту Terrible Pun of the Day Π½Π° доступ ΠΊ ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Π°ΠΌ.
  4. Π’Π΅Ρ€Π½ΠΈΡ‚Π΅ΡΡŒ Π½Π° сайт Terrible Pun of the Day.

Π’ случаС, Ссли Π²Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄ΡƒΠΌΠ°Π΅Ρ‚Π΅, прилоТСния, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠ΅ OAuth, Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ способ Π°Π½Π½ΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ доступ. РСшив, Ρ‡Ρ‚ΠΎ Π²Ρ‹ большС Π½Π΅ ΠΆΠ΅Π»Π°Π΅Ρ‚Π΅ Π΄Π΅Π»ΠΈΡ‚ΡŒΡΡ ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Π°ΠΌΠΈ с Terrible Pun of the Day, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π½Π° сайт ΠΏΠΎΡ‡Ρ‚Ρ‹ ΠΈ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ сайт с ΠΊΠ°Π»Π°ΠΌΠ±ΡƒΡ€Π°ΠΌΠΈ ΠΈΠ· списка Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.

ΠŸΠΎΡ‚ΠΎΠΊ OAuth

Волько Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΏΡ€ΠΎΡˆΠ»ΠΈ Ρ‡Π΅Ρ€Π΅Π· Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠΌ [flow] OAuth. Π’ нашСм ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ этот ΠΏΠΎΡ‚ΠΎΠΊ состоит ΠΈΠ· Π²ΠΈΠ΄ΠΈΠΌΡ‹Ρ… шагов, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π½Π΅Π²ΠΈΠ΄ΠΈΠΌΡ‹Ρ… шагов, Π² Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π΄Π²Π° сСрвиса Π΄ΠΎΠ³ΠΎΠ²Π°Ρ€ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΎ бСзопасном ΠΎΠ±ΠΌΠ΅Π½Π΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ. Π’ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ с Terrible Pun of the Day ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ распространСнный ΠΏΠΎΡ‚ΠΎΠΊ OAuth 2.0, извСстный ΠΊΠ°ΠΊ ΠΏΠΎΡ‚ΠΎΠΊ «с ΠΊΠΎΠ΄ΠΎΠΌ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈΒ» [Β«authorization codeΒ» flow].

ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΡƒΠ³Π»ΡƒΠ±ΠΈΡ‚ΡŒΡΡ Π² подробности Ρ€Π°Π±ΠΎΡ‚Ρ‹ OAuth, Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΎΠ²:

  • Resource Owner:

    Π˜Π»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ руководство ΠΏΠΎ OAuth ΠΈ OpenID Connect

    Π­Ρ‚ΠΎ Π²Ρ‹! Π’Ρ‹ Π²Π»Π°Π΄Π΅Π΅Ρ‚Π΅ своими ΡƒΡ‡Π΅Ρ‚Π½Ρ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, своими Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΈ управляСтС всСми дСйствиями, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½Ρ‹ с вашими Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚Π°ΠΌΠΈ.

  • Client:

    Π˜Π»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ руководство ΠΏΠΎ OAuth ΠΈ OpenID Connect

    ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, сСрвис Terrible Pun of the Day), ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Ρ…ΠΎΡ‡Π΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΈΠ»ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ дСйствия ΠΎΡ‚ ΠΈΠΌΠ΅Π½ΠΈ Resource Owner‘Π°.

  • Authorization Server:

    Π˜Π»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ руководство ΠΏΠΎ OAuth ΠΈ OpenID Connect

    ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π·Π½Π°Π΅Ρ‚ Resource Owner‘Π° ΠΈ Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Ρƒ Resource Owner‘Π° ΡƒΠΆΠ΅ Π΅ΡΡ‚ΡŒ учСтная запись.

  • Resource Server:

    Π˜Π»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ руководство ΠΏΠΎ OAuth ΠΈ OpenID Connect

    ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ интСрфСйс прилоТСния (API) ΠΈΠ»ΠΈ сСрвис, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Client Ρ…ΠΎΡ‡Π΅Ρ‚ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ ΠΈΠΌΠ΅Π½ΠΈ Resource Owner‘Π°.

  • Redirect URI:

    Π˜Π»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ руководство ΠΏΠΎ OAuth ΠΈ OpenID Connect

    Бсылка, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Authorization Server ΠΏΠ΅Ρ€Π΅Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚ Resource Owner‘Π° послС прСдоставлСния Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Client‘Ρƒ. Иногда Π΅Π΅ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ Β«Π’ΠΎΠ·Π²Ρ€Π°Ρ‚Π½Ρ‹ΠΌ URLΒ» (Β«Callback URLΒ»).

  • Response Type:

    Π˜Π»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ руководство ΠΏΠΎ OAuth ΠΈ OpenID Connect

    Π’ΠΈΠΏ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Client. Π‘Π°ΠΌΡ‹ΠΌ распространСнным Response Type‘ΠΎΠΌ являСтся ΠΊΠΎΠ΄, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Client рассчитываСт ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Authorization Code.

  • Scope:

    Π˜Π»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ руководство ΠΏΠΎ OAuth ΠΈ OpenID Connect

    Π­Ρ‚ΠΎ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ описаниС Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ Client‘Ρƒ, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ доступ ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ ΠΈΠ»ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… дСйствий.

  • Consent:

    Π˜Π»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ руководство ΠΏΠΎ OAuth ΠΈ OpenID Connect

    Authorization Server Π±Π΅Ρ€Π΅Ρ‚ Scopes, Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅ΠΌΡ‹Π΅ Client‘ΠΎΠΌ, ΠΈ ΡΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚ Ρƒ Resource Owner‘Π°, Π³ΠΎΡ‚ΠΎΠ² Π»ΠΈ Ρ‚ΠΎΡ‚ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Client‘Ρƒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ.

  • Client ID:

    Π˜Π»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ руководство ΠΏΠΎ OAuth ΠΈ OpenID Connect

    Π­Ρ‚ΠΎΡ‚ ID ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Client‘Π° Π½Π° Authorization Server‘Π΅.

  • Client Secret:

    Π˜Π»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ руководство ΠΏΠΎ OAuth ΠΈ OpenID Connect

    Π­Ρ‚ΠΎ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ извСстСн Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Client‘Ρƒ ΠΈ Authorization Server‘Ρƒ. Он позволяСт ΠΈΠΌ ΠΊΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ ΠΎΠ±ΠΌΠ΅Π½ΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ.

  • Authorization Code:

    Π˜Π»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ руководство ΠΏΠΎ OAuth ΠΈ OpenID Connect

    Π’Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ с нСбольшим ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ΠΎΠΌ дСйствия, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Client прСдоставляСт Authorization Server‘Ρƒ Π² ΠΎΠ±ΠΌΠ΅Π½ Π½Π° Access Token.

  • Access Token:

    Π˜Π»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ руководство ΠΏΠΎ OAuth ΠΈ OpenID Connect

    ΠšΠ»ΡŽΡ‡, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для связи с Resource Server‘ΠΎΠΌ. Π­Ρ‚Π°ΠΊΠΈΠΉ Π±Π΅ΠΉΠ΄ΠΆ ΠΈΠ»ΠΈ ΠΊΠ»ΡŽΡ‡-ΠΊΠ°Ρ€Ρ‚Π°, ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ Client‘Ρƒ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π½Π° запрос Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ»ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ дСйствий Π½Π° Resource Server‘Π΅ ΠΎΡ‚ вашСго ΠΈΠΌΠ΅Π½ΠΈ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: ΠΈΠ½ΠΎΠ³Π΄Π° Authorization Server ΠΈ Resource Server ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΎΠ΄Π½ΠΈΠΌ ΠΈ Ρ‚Π΅ΠΌ ΠΆΠ΅ сСрвСром. Однако Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… случаях это ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ сСрвСры, Π΄Π°ΠΆΠ΅ Π½Π΅ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‰ΠΈΠ΅ ΠΊ ΠΎΠ΄Π½ΠΎΠΉ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ. НапримСр, Authorization Server ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ сторонним сСрвисом, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ довСряСт Resource Server.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ ознакомились с основными понятиями OAuth 2.0, Π΄Π°Π²Π°ΠΉΡ‚Π΅ вСрнСмся ΠΊ Π½Π°ΡˆΠ΅ΠΌΡƒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ ΠΈ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ рассмотрим, Ρ‡Ρ‚ΠΎ происходит Π² ΠΏΠΎΡ‚ΠΎΠΊΠ΅ OAuth.

Π˜Π»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ руководство ΠΏΠΎ OAuth ΠΈ OpenID Connect

  1. Π’Ρ‹, Resource Owner, ΠΆΠ΅Π»Π°Π΅Ρ‚Π΅ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ сСрвису Terrible Pun of the Day (Client‘Ρƒ) доступ ΠΊ своим ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Π°ΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ‚ΠΎΡ‚ ΠΌΠΎΠ³ Ρ€Π°Π·ΠΎΡΠ»Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ³Π»Π°ΡˆΠ΅Π½ΠΈΡ всСм вашим Π΄Ρ€ΡƒΠ·ΡŒΡΠΌ.
  2. Client пСрСнаправляСт Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ Π½Π° страницу Authorization Server‘Π° ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² запрос Client ID, Redirect URI, Response Type ΠΈ ΠΎΠ΄Π½ΠΎ ΠΈΠ»ΠΈ нСсколько Scopes (Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΅ΠΌΡƒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹.
  3. Authorization Server провСряСт вас, ΠΏΡ€ΠΈ нСобходимости Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Ρ Π»ΠΎΠ³ΠΈΠ½ ΠΈ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ.
  4. Authorization Server Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ Ρ„ΠΎΡ€ΠΌΡƒ Consent (подтвСрТдСния) с ΠΏΠ΅Ρ€Π΅Ρ‡Π½Π΅ΠΌ всСх Scopes, Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅ΠΌΡ‹Ρ… Client‘ΠΎΠΌ. Π’Ρ‹ ΡΠΎΠ³Π»Π°ΡˆΠ°Π΅Ρ‚Π΅ΡΡŒ ΠΈΠ»ΠΈ ΠΎΡ‚ΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚Π΅ΡΡŒ.
  5. Authorization Server пСрСнаправляСт вас Π½Π° сайт Client‘Π°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Redirect URI вмСстС с Authorization Code (ΠΊΠΎΠ΄ΠΎΠΌ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ).
  6. Client Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ связываСтся с Authorization Server‘ΠΎΠΌ (Π² ΠΎΠ±Ρ…ΠΎΠ΄ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π° Resource Owner‘Π°) ΠΈ бСзопасно отправляСт Client ID, Client Secret ΠΈ Authorization Code.
  7. Authorization Server провСряСт Π΄Π°Π½Π½Ρ‹Π΅ ΠΈ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ с Access Token‘ΠΎΠΌ (Ρ‚ΠΎΠΊΠ΅Π½ΠΎΠΌ доступа).
  8. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Client ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Access Token для ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ запроса Π½Π° Resource Server с Ρ†Π΅Π»ΡŒΡŽ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ список ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚ΠΎΠ².

Client ID ΠΈ Secret

Π—Π°Π΄ΠΎΠ»Π³ΠΎ Π΄ΠΎ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π²Ρ‹ Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΠ»ΠΈ Terrible Pun of the Day ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Π°ΠΌ, Client ΠΈ Authorization Server установили Ρ€Π°Π±ΠΎΡ‡ΠΈΠ΅ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ. Authorization Server сгСнСрировал Client ID ΠΈ Client Secret (ΠΈΠ½ΠΎΠ³Π΄Π° ΠΈΡ… Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ App ID ΠΈ App Secret) ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΠ» ΠΈΡ… Client’Ρƒ для дальнСйшСго взаимодСйствия Π² Ρ€Π°ΠΌΠΊΠ°Ρ… OAuth.

Π˜Π»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ руководство ΠΏΠΎ OAuth ΠΈ OpenID Connect
Β«β€” ΠŸΡ€ΠΈΠ²Π΅Ρ‚! Π― Ρ…ΠΎΡ‚Π΅Π» Π±Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Ρ‚ΠΎΠ±ΠΎΠΉ! β€” Π”Π° Π½Π΅ вопрос! Π’ΠΎΡ‚ Ρ‚Π²ΠΎΠΈ Client ID ΠΈ Secret!Β»

НазваниС Π½Π°ΠΌΠ΅ΠΊΠ°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Client Secret Π΄ΠΎΠ»ΠΆΠ΅Π½ Π΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒΡΡ Π² Ρ‚Π°ΠΉΠ½Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΅Π³ΠΎ Π·Π½Π°Π»ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Client ΠΈ Authorization Server. Π’Π΅Π΄ΡŒ ΠΈΠΌΠ΅Π½Π½ΠΎ с Π΅Π³ΠΎ ΠΏΠΎΠΌΠΎΡ‰ΡŒ Authorization Server ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π°Π΅Ρ‚ ΠΈΡΡ‚ΠΈΠ½Π½ΠΎΡΡ‚ΡŒ Client’Π°.

Но это Π΅Ρ‰Ρ‘ Π½Π΅ всё… ΠŸΠΎΠΆΠ°Π»ΡƒΠΉΡΡ‚Π°, попривСтствуйтС OpenID Connect!

OAuth 2.0 Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ β€” для прСдоставлСния доступа ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ ΠΈ функциям ΠΎΡ‚ ΠΎΠ΄Π½ΠΎΠ³ΠΎ прилоТСния Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ. OpenID Connect (OIDC) β€” это Ρ‚ΠΎΠ½ΠΊΠΈΠΉ слой ΠΏΠΎΠ²Π΅Ρ€Ρ… OAuth 2.0, Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ свСдСния ΠΎ Π»ΠΎΠ³ΠΈΠ½Π΅ ΠΈ ΠΏΡ€ΠΎΡ„ΠΈΠ»Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ вошСл Π² ΡƒΡ‡Π΅Ρ‚Π½ΡƒΡŽ запись. ΠžΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΡŽ Π»ΠΎΠ³ΠΈΠ½-сСссии часто Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠ΅ΠΉ [authentication], Π° ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅, вошСдшСм Π² систСму (Ρ‚.Π΅. ΠΎ Resource Owner‘Π΅), β€” Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ [identity]. Если Authorization Server ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ OIDC, Π΅Π³ΠΎ ΠΈΠ½ΠΎΠ³Π΄Π° Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ поставщиком Π»ΠΈΡ‡Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… [identity provider], ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ прСдоставляСт Client‘Ρƒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Resource Owner‘Π΅.

OpenID Connect позволяСт Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ сцСнарии, ΠΊΠΎΠ³Π΄Π° СдинствСнный Π»ΠΎΠ³ΠΈΠ½ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²ΠΎ мноТСствС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, β€” этот ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ Ρ‚Π°ΠΊΠΆΠ΅ извСстСн ΠΊΠ°ΠΊ single sign-on (SSO). НапримСр, ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ SSO-ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡŽ с ΡΠΎΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ сСтями, Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ Facebook ΠΈΠ»ΠΈ Twitter, позволяя ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡƒΡ‡Ρ‘Ρ‚Π½ΡƒΡŽ запись, которая Ρƒ Π½ΠΈΡ… ΡƒΠΆΠ΅ имССтся ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΎΠ½ΠΈ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°ΡŽΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ.

Π˜Π»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ руководство ΠΏΠΎ OAuth ΠΈ OpenID Connect

ΠŸΠΎΡ‚ΠΎΠΊ (flow) OpenID Connect выглядит Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ Π² случаС OAuth. ЕдинствСнная Ρ€Π°Π·Π½ΠΈΡ†Π° Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π² ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½ΠΎΠΌ запросС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ scope β€” openid, β€” Π° Client Π² ΠΈΡ‚ΠΎΠ³Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΠΊΠ°ΠΊ Access Token, Ρ‚Π°ΠΊ ΠΈ ID Token.

Π˜Π»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ руководство ΠΏΠΎ OAuth ΠΈ OpenID Connect

Π’Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ Π² ΠΏΠΎΡ‚ΠΎΠΊΠ΅ OAuth, Access Token Π² OpenID Connect β€” это Π½Π΅ΠΊΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π½Π΅ понятноС Client‘Ρƒ. Π‘ Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния Client‘Π° Access Token прСдставляСт Π½Π΅ΠΊΡƒΡŽ строку ΠΈΠ· символов, которая пСрСдаСтся вмСстС с ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ запросом ΠΊ Resource Server‘Ρƒ, Π° Ρ‚ΠΎΡ‚ опрСдСляСт, дСйствитСлСн Π»ΠΈ Ρ‚ΠΎΠΊΠ΅Π½. ID Token прСдставляСт собой совсСм ΠΈΠ½ΠΎΠ΅.

ID Token β€” это JWT

ID Token β€” это особым ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ отформатированная строка символов, извСстная ΠΊΠ°ΠΊ JSON Web Token ΠΈΠ»ΠΈ JWT (ΠΈΠ½ΠΎΠ³Π΄Π° Ρ‚ΠΎΠΊΠ΅Π½Ρ‹ JWT произносят ΠΊΠ°ΠΊ Β«jotsΒ»). Π‘Ρ‚ΠΎΡ€ΠΎΠ½Π½ΠΈΠΌ Π½Π°Π±Π»ΡŽΠ΄Π°Ρ‚Π΅Π»ΡΠΌ JWT ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ нСпонятной Π°Π±Ρ€Π°ΠΊΠ°Π΄Π°Π±Ρ€ΠΎΠΉ, ΠΎΠ΄Π½Π°ΠΊΠΎ Client ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ·Π²Π»Π΅Ρ‡ΡŒ ΠΈΠ· JWT Ρ€Π°Π·Π»ΠΈΡ‡Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, Ρ‚Π°ΠΊΡƒΡŽ ΠΊΠ°ΠΊ ID, имя ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, врСмя Π²Ρ…ΠΎΠ΄Π° Π² ΡƒΡ‡Π΅Ρ‚Π½ΡƒΡŽ запись, срок окончания дСйствия ID Token‘Π°, Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ ΠΏΠΎΠΏΡ‹Ρ‚ΠΎΠΊ Π²ΠΌΠ΅ΡˆΠ°Ρ‚Π΅Π»ΡŒΡΡ‚Π²Π° Π² JWT. Π”Π°Π½Π½Ρ‹Π΅ Π²Π½ΡƒΡ‚Ρ€ΠΈ ID Token‘Π° Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ заявками [claims].

Π˜Π»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ руководство ΠΏΠΎ OAuth ΠΈ OpenID Connect

Π’ случаС OIDC Ρ‚Π°ΠΊΠΆΠ΅ имССтся стандартный способ, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Client ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°ΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ личности [identity] ΠΎΡ‚ Authorization Server‘Π°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, адрСс элСктронной ΠΏΠΎΡ‡Ρ‚Ρ‹, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Access Token.

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ свСдСния ΠΎΠ± OAuth ΠΈ OIDC

Π˜Ρ‚Π°ΠΊ, ΠΌΡ‹ Π²ΠΊΡ€Π°Ρ‚Ρ†Π΅ рассмотрСли ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ OAuth ΠΈ OIDC. Π“ΠΎΡ‚ΠΎΠ²Ρ‹ ΠΊΠΎΠΏΠ½ΡƒΡ‚ΡŒ Π³Π»ΡƒΠ±ΠΆΠ΅? Π’ΠΎΡ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ рСсурсы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚ ΡƒΠ·Π½Π°Ρ‚ΡŒ большС ΠΎΠ± OAuth 2.0 ΠΈ OpenID Connect:

Как ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ, Π½Π΅ ΡΡ‚Π΅ΡΠ½ΡΠΉΡ‚Π΅ΡΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. Π§Ρ‚ΠΎΠ±Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π² курсС Π½Π°ΡˆΠΈΡ… послСдних Π½ΠΎΠ²ΠΈΠ½ΠΎΠΊ, ΠΏΠΎΠ΄ΠΏΠΈΡΡ‹Π²Π°ΠΉΡ‚Π΅ΡΡŒ Π½Π° Twitter ΠΈ YouTube ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Okta для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ²!

P.S. ΠΎΡ‚ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Ρ‡ΠΈΠΊΠ°

Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ Ρ‚Π°ΠΊΠΆΠ΅ Π² нашСм Π±Π»ΠΎΠ³Π΅:

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com