OAuth ず OpenID Connect の図解ガむド

ノヌト。 翻蚳。: Okta によるこの玠晎らしい蚘事では、OAuth ず OIDC (OpenID Connect) がどのように機胜するかをシンプルか぀明確な方法で説明しおいたす。 この知識は、開発者、システム管理者、さらには他のサヌビスず機密デヌタを亀換する可胜性が高い人気の Web アプリケヌションの「通垞のナヌザヌ」にも圹立ちたす。

むンタヌネットの石噚時代には、サヌビス間で情報を共有するのは簡単でした。 あるサヌビスから別のサヌビスにログむン名ずパスワヌドを枡すだけで、ナヌザヌはあなたのアカりントを入力し、必芁な情報を受け取るこずができたす。

OAuth ず OpenID Connect の図解ガむド
「あなたの銀行口座を教えおください。」 「パスワヌドずお金があればすべおうたくいくこずを玄束したす。 正盎です、正盎です」 *ヒッヒッヒ*

ホラヌ ナヌザヌにナヌザヌ名ずパスワヌドの共有を芁求しおはなりたせん。 資栌、別のサヌビスで。 このサヌビスの背埌にある組織がデヌタを安党に保管し、必芁以䞊の個人情報を収集しないずいう保蚌はありたせん。 クレむゞヌに聞こえるかもしれたせんが、䞀郚のアプリでは今でもこの手法が䜿甚されおいたす。

珟圚、あるサヌビスが別のサヌビスのデヌタを安党に䜿甚できるようにする単䞀の暙準がありたす。 残念ながら、このような暙準では倚くの専門甚語や甚語が䜿甚されおいるため、理解が耇雑になっおいたす。 この資料の目的は、簡単なむラストを䜿甚しおそれらがどのように機胜するかを説明するこずです (私の絵は子䟛の塗り絵に䌌おいるず思いたすか? そうですね!)。

OAuth ず OpenID Connect の図解ガむド

ちなみに、このガむドはビデオ圢匏でも利甚できたす。

皆様、ようこそ: OAuth 2.0

OAuth 2.0 は、あるアプリケヌションが別のアプリケヌションの情報にアクセスする蚱可を取埗できるようにするセキュリティ暙準です。 蚱可蚌を発行する䞀連の手順 [蚱可] たたは 同意 [同意]よく電話する 認可 【認可】 あるいは 委任された承認 [委任された承認]。 この暙準を䜿甚するず、アプリケヌションにパスワヌドを䞎えずに、ナヌザヌに代わっおデヌタを読み取ったり、別のアプリケヌションの機胜を䜿甚したりするこずができたす。 クラス

䟋ずしお、「Unlucky Pun of the Day」ずいうサむトを発芋したずしたす。 [今日のひどいダゞャレ] そしお、毎日のダゞャレを電話のテキストメッセヌゞの圢で受け取るために、それに登録するこずにしたした。 あなたはこのサむトがずおも気に入ったので、それを友達党員ず共有するこずにしたした。 結局のずころ、誰もが䞍気味なダゞャレが奜きですよね

OAuth ず OpenID Connect の図解ガむド
「今日の残念なダゞャレ: 巊半身を倱った男のこずを聞いた? 今では圌は垞に正しいです」 (原文には独自の語呂合わせがあるため、おおよその翻蚳です。)

連絡先リストから各人に手玙を曞くずいう遞択肢がないこずは明らかです。 そしお、あなたが少しでも私ず同じであれば、䞍必芁な仕事を避けるためにはどんな手段を䜿っおもするでしょう。 幞いなこずに、「Terrible Pun of the Day」だけですべおの友達を招埅できたす。 これを行うには、連絡先の電子メヌルぞのアクセスを開くだけです。サむト自䜓から連絡先ぞの招埅状が送信されたす (OAuth ルヌル)。

OAuth ず OpenID Connect の図解ガむド
「みんなダゞャレが倧奜き - ログむン枈み 「今日のひどいダゞャレ Web サむトがあなたの連絡先リストにアクセスするこずを蚱可したすか? - ありがずう これからは、時間が終わるたで、あなたの知り合い党員に毎日リマむンダヌを送信したす。 あなたは最高の友達です」

  1. メヌルサヌビスを遞択しおください。
  2. 必芁に応じお、メヌル サむトにアクセスし、アカりントにサむンむンしたす。
  3. Terrible Pun of the Day に連絡先にアクセスする蚱可を䞎えたす。
  4. 「今日のひどいダゞャレ」サむトに戻りたす。

気が倉わった堎合に備えお、OAuth を䜿甚するアプリケヌションにはアクセスを取り消す方法も甚意されおいたす。 Terrible Pun of the Day ず連絡先を共有したくないず刀断したら、メヌル サむトにアクセスしお、蚱可されたアプリケヌションのリストからそのダゞャレ サむトを削陀できたす。

OAuth フロヌ

私たちは䞀般的に呌ばれるものを通過しただけです フロヌ [フロヌ] OAuth。 この䟋では、このフロヌは目に芋えるステップず、2.0 ぀のサヌビスが情報の安党な亀換に぀いお合意するいく぀かの目に芋えないステップで構成されおいたす。 前の「今日のひどいダゞャレ」の䟋では、「認蚌コヌド」フロヌずしお知られる最も䞀般的な OAuth XNUMX フロヌを䜿甚しおいたす。 【「認可コヌド」の流れ】.

OAuth の仕組みの詳现に入る前に、いく぀かの甚語の意味に぀いお説明したしょう。

  • リ゜ヌス所有者:

    OAuth ず OpenID Connect の図解ガむド

    あなただ あなたは自分の資栌情報ずデヌタを所有し、自分のアカりントで実行される可胜性のあるすべおのアクティビティを制埡したす。

  • クラむアント:

    OAuth ず OpenID Connect の図解ガむド

    に代わっおアクセスたたは特定のアクションを実行したいアプリケヌション (たずえば、「今日のひどいダゞャレ」サヌビス) リ゜ヌス所有者' 。

  • 認可サヌバヌ:

    OAuth ず OpenID Connect の図解ガむド

    知っおいるアプリケヌション リ゜ヌス所有者'a、そしおその䞭であなたは リ゜ヌス所有者「すでにアカりントを持っおいたす。

  • リ゜ヌスサヌバヌ:

    OAuth ず OpenID Connect の図解ガむド

    アプリケヌション プログラミング むンタヌフェむス (API) たたはサヌビス クラむアント 代理で利甚したい リ゜ヌス所有者' 。

  • URIをリダむレクトする:

    OAuth ず OpenID Connect の図解ガむド

    そのリンクは、 認可サヌバヌ リダむレクトしたす リ゜ヌス所有者'そしお蚱可を䞎えた埌 クラむアント'で。 「コヌルバック URL」ず呌ばれるこずもありたす。

  • 応答タむプ:

    OAuth ず OpenID Connect の図解ガむド

    受信が期埅される情報の皮類 クラむアント。 最も䞀般的な 応答タむプ「オヌムはコヌドです、぀たり クラむアント 受け取るこずを期埅しおいたす 承認コヌド.

  • 察象領域:

    OAuth ず OpenID Connect の図解ガむド

    これは、必芁な暩限の詳现な説明です。 クラむアントデヌタぞのアクセスや特定のアクションの実行など。

  • 同意:

    OAuth ず OpenID Connect の図解ガむド

    認可サヌバヌ テむク スコヌプ芁求された クラむアントああ、そしお尋ねる リ゜ヌス所有者ああ、圌は提䟛する準備ができおいたすか クラむアント' 適切な暩限を持っおいたす。

  • 顧客ID:

    OAuth ず OpenID Connect の図解ガむド

    このIDは識別するために䜿甚されたす クラむアント'a on 認可サヌバヌ「え。

  • クラむアントシヌクレット:

    OAuth ず OpenID Connect の図解ガむド

    これは唯䞀知られおいるパスワヌドです クラむアントあなたず 認可サヌバヌ'で。 これにより、情報をプラむベヌトに共有できるようになりたす。

  • 承認コヌド:

    OAuth ず OpenID Connect の図解ガむド

    有効期間が短い䞀時コヌドです。 クラむアント 提䟛しおいたす 認可サヌバヌ代わりに アクセストヌクン.

  • アクセストヌクン:

    OAuth ず OpenID Connect の図解ガむド

    クラむアントが通信に䜿甚するキヌ リ゜ヌスサヌバヌああ。 バッゞたたはキヌカヌドのようなもので、 クラむアント'デヌタをリク゚ストするか、アクションを実行する暩限を持っおいたす リ゜ヌスサヌバヌあなたに代わっお。

泚意: 認可サヌバヌずリ゜ヌスサヌバヌが同じサヌバヌである堎合がありたす。 ただし、堎合によっおは、同じ組織に属しおいなくおも、これらは異なるサヌバヌである可胜性がありたす。 たずえば、認可サヌバヌは、リ゜ヌス サヌバヌによっお信頌されおいるサヌドパヌティ サヌビスである堎合がありたす。

OAuth 2.0 の䞭心的な抂念を説明したので、䟋に戻り、OAuth フロヌで䜕が起こるかを詳しく芋おみたしょう。

OAuth ず OpenID Connect の図解ガむド

  1. あなたは リ゜ヌス所有者、「今日のひどいダゞャレ」サヌビス (クラむアントy) 連絡先にアクセスしお、すべおの友達に招埅状を送信できるようにしたす。
  2. クラむアント ブラりザをペヌゞにリダむレクトしたす 認可サヌバヌ'a をク゚リに含めたす 顧客ID, URIをリダむレクトする, 応答タむプ そしおXNUMX぀以䞊の スコヌプ 蚱可が必芁です。
  3. 認可サヌバヌ 必芁に応じおナヌザヌ名ずパスワヌドを芁求し、ナヌザヌを確認したす。
  4. 認可サヌバヌ フォヌムを衚瀺したす 同意 (確認) すべおのリスト付き スコヌプ芁求された クラむアントああ。 同意するか拒吊するかです。
  5. 認可サヌバヌ サむトにリダむレクトしたす クラむアント'a、䜿甚しお URIをリダむレクトする 䞀緒に 承認コヌド (認蚌コヌド)。
  6. クラむアント ず盎接通信する 認可サヌバヌああブラりザをバむパスする リ゜ヌス所有者'a) 安党に送信したす 顧客ID, クラむアントシヌクレット О 承認コヌド.
  7. 認可サヌバヌ デヌタをチェックしお次のように応答したす アクセストヌクン'om (アクセストヌクン)。
  8. 今 クラむアント 䜿える アクセストヌクン にリク゚ストを送信する リ゜ヌスサヌバヌ 連絡先のリストを取埗したす。

クラむアントIDずシヌクレット

Terrible Pun of the Day に連絡先ぞのアクセスを蚱可するずっず前に、クラむアントず認可サヌバヌは連携関係を確立しおいたした。 認可サヌバヌはクラむアント ID ずクラむアント シヌクレット (クラむアント シヌクレットず呌ばれるこずもありたす) を生成したした。 アプリケヌションID О アプリシヌクレット) を䜜成し、OAuth 内でさらにやり取りするためにクラむアントに送信したす。

OAuth ず OpenID Connect の図解ガむド
"- こんにちは 䞀緒に働きたいず思っおいたす - もちろん、問題ありたせん! これがあなたのクラむアントIDずシヌクレットです」

この名前は、クラむアント シヌクレットがクラむアントず認可サヌバヌのみに知られるように秘密にしおおく必芁があるこずを瀺唆しおいたす。 結局のずころ、認可サヌバヌがクラむアントの真実性を確認できるのは圌の助けによるものです。

しかし、それだけではありたせん...OpenID Connect を歓迎しおください。

OAuth 2.0 は以䞋のためにのみ蚭蚈されおいたす。 認可 - あるアプリケヌションから別のアプリケヌションぞのデヌタおよび機胜ぞのアクセスを提䟛したす。 OpenID Connect (OIDC) は、アカりントにログむンしおいるナヌザヌのログむンずプロファむルの詳现を远加する OAuth 2.0 䞊の薄い局です。 ログむン セッションの構成は、通垞、次のように呌ばれたす。 認蚌 【認蚌】、およびシステムにログむンしおいるナヌザヌに関する情報 (぀たり、 リ゜ヌス所有者e)、— 個人デヌタ [身元]。 認可サヌバヌが OIDC をサポヌトしおいる堎合、それは次のように呌ばれるこずがありたす。 個人デヌタの提䟛者 [アむデンティティプロバむダヌ]提䟛しおくれるので クラむアント'に぀いおの情報がありたす リ゜ヌス所有者「え。

OpenID Connect を䜿甚するず、単䞀のログむンを耇数のアプリケヌションで䜿甚できるシナリオを実装できたす。このアプロヌチは、ずも呌ばれたす。 single sign-on (SSO)。 たずえば、アプリケヌションは Facebook や Twitter などの゜ヌシャル ネットワヌクずの SSO 統合をサポヌトし、ナヌザヌがすでに所有しおおり、䜿甚したいアカりントを䜿甚できるようにする堎合がありたす。

OAuth ず OpenID Connect の図解ガむド

OpenID Connect のフロヌ (flow) は OAuth の堎合ず同じです。 唯䞀の違いは、プラむマリリク゚ストで䜿甚される特定のスコヌプが openid、 - A クラむアント 最終的には次のようになりたす アクセストヌクンず IDトヌクン.

OAuth ず OpenID Connect の図解ガむド

OAuth フロヌず同様に、 アクセストヌクン OpenID Connect では、これは明確ではない倀です クラむアント'で。 芳点から芋るず クラむアント'а アクセストヌクン 各リク゚ストずずもに枡される文字列を衚したす。 リ゜ヌスサヌバヌ'y、トヌクンが有効かどうかを決定したす。 IDトヌクン 党く異なるものを衚したす。

IDトヌクンはJWTです

IDトヌクン JSON Web Token たたは JWT ずしお知られる特別にフォヌマットされた文字列です。 (JWT トヌクンは「ゞョッツ」のように発音される堎合がありたす)。 倖郚の芳察者にずっお、JWT は理解できない意味䞍明なものに芋えるかもしれたせんが、 クラむアント ID、ナヌザヌ名、ログむン時刻、有効期限などのさたざたな情報を JWT から抜出できたす IDトヌクン'a、JWT に干枉しようずする詊みの存圚。 内郚のデヌタ IDトヌクン' ず呌ばれたす アプリケヌション [請求].

OAuth ず OpenID Connect の図解ガむド

OIDC の堎合、次の暙準的な方法もありたす。 クラむアント 個人に関する远加情報を芁求する堎合がありたす [身元] から 認可サヌバヌ'a、たずえば、次のような電子メヌル アドレス アクセストヌクン.

OAuth ず OIDC に぀いお詳しく芋る

そこで、OAuth ず OIDC がどのように機胜するかを簡単に確認したした。 さらに深く掘り䞋げる準備はできおいたすか? OAuth 2.0 ず OpenID Connect に぀いお詳しく孊ぶのに圹立぀远加リ゜ヌスを次に瀺したす。

い぀ものように、お気軜にコメントしおください。 最新ニュヌスを入手するには、賌読しおください Twitter О YouTube 開発者向けの Okta!

翻蚳者からの远䌞

私たちのブログもお読みください:

出所 habr.com

コメントを远加したす