今回は、輪読会でOAuth2.0での認証について勉強してみました。まったくわからないからちょっとわかるへ理解がステップアップしたので「ざっくりと理解する」というテイストでまとめてみました。何も知らない人が、ちょっとわかるにステップするための後押しぐらいになればよいなと思っています。真面目まとめはちゃんとまとめます。
はじめに
どもども!輪読会でいろいろな技術に触れようの会を泣きながら突破した龍ちゃんです。絶賛まとめながら泣いています。約1か月かけてOAuthに関係する書籍を読みながら、同僚や先輩に解釈を話して理解を進めていきました。何もわからない状態からちょっとわかる状態にまではなったので、何もわからない状態の人のためにざっくりとした理解を書いていこうと思います。
この記事は、初心者と一緒に勉強を始めていく人向けの記事となっています。有識者の皆さん、ミスっている部分があれば指摘をお願いします。今回の記事でわかることは以下になります。
- OAuthを理解するための用語
- OAuth認証の基礎的な部分
それでは本編始めていきましょう。
ちなみにですが、僕が今回勉強するにあたって使用した書籍は以下になります。
- 雰囲気でOAuth2.0を使っているエンジニアがOAuth2.0を整理して、手を動かしながら学べる本[2023年改訂版]
- 今さら聞けない暗号技術&認証・認可 Web系エンジニア必須のセキュリティ基礎力をUP (Software Design別冊)
後はネットの記事をいろいろ読んでみました。先にざっくりとした僕の理解を一言で置いておきます。
OAuth認証って何?
先ほど、僕なりの理解を置いておいたのですが、実際にどこで使われているの?という疑問が生まれてくるかなと思います。皆さんGoogleのサービスなどは使っていると思います。別のアプリからカレンダーに予定を書き込むみたいな機能を使っている人はおそらくOAuth認証を使っていると思います。以下の画面を見たことってありませんか?この2つの画面を見たことがあるあなたは、OAuth認証を実際に使用しています。
この同意画面をクリックすることでカレンダーの予定が編集されたりします。これの裏側で起きている一つのアクションとしてOAuth認証があるのです。
OAuthを理解していくための用語
とりあえず、入門であれば以下の用語を押さえておけばよいと思います。僕のイメージをセットで置いておきます。
こちらの要素が通信することで、OAuth認証が実行されます。これに加えて、クライアントを操作する「ユーザー:自分自身」がいることを忘れてはいけません。
シーケンス図を読める人ならば、通信のやり取りを追えると思うのでそちらを見てみるとよいかもしれません。僕が参考にしたどちらの書籍でもシーケンス図は触れられていました。
OAuthをざっくりと理解してみる
それでは、一例をもって説明していきたいと思います。体系的に学ぼうとすると「グラントタイプ」や「クライアントタイプ」などの説明が入ってくるのですが、そこはカロリーが高いので、いったんおいておきます。シーケンス図もいきなりだとカロリーが高いので図化してきました。
やりたいこととしては、「GoogleのAPIを用いて何かしらの処理を実行したい」というイメージです。もっと詳しく話すと「OAuth認証:認可コードグラント(アクセストークンの部分をいったんおいておく)」になります。
処理を順に言葉で説明していきます。
- ユーザーがクライアントにアクセスする(アプリケーションにアクセス)
- クライアントから認可サーバーにリクエストを送信する
- 認可サーバーからユーザーに確認画面を提示する
- ユーザーが承認をする(クライアントからのアクセスを承認する)
- 認可サーバーからクライアントにアクセスするためのカギを渡す
- クライアントがリソースサーバーにカギを使ってアクセスする
基本的な理解は以上で大丈夫だと思います。OAuth認証の4パターンほどあるのですが、「認可サーバーからカギをもらうタイミング」や「ユーザーが登場しないパターン」などがあるだけで、基本的な部分としては、「リソースサーバーにアクセスするためのカギを入手する」というイメージを持っておけば大丈夫です。僕はこのイメージを持つまでに苦労しました。
上のほうでも書きましたが、「カギを入手する方法」が多くあります。これをグラントタイプという命名で記載されており、4つのグラントタイプがあります。これについて入っていくとなかなかなカロリーを使ってしまうので、いったんは置いておきます。
もっと理解したい人は続きブログであるこちらを読んでみてください。
ブログのリンクが挿入される予定です。
とりあえず輪読会のリンクを置いておきます。
終わりに
さて、ざっくりと理解できましたか?私はこのブログを書くことを通して理解を深めていきました。やはり書いてまとめることは偉大です。というわけで啓もう活動をしているわけです。
さすがに今回は一人で理解してまとめることはつらかったです。今後、同僚たちの認証認可系の記事が投稿されるはずです。
ここから下にきっと連なっていきます。
それではまたね~