はじめに
「OAuth徹底入門 セキュアな認可システムを適用するための原則と実践」を読み始めました。
OAuthを学び始めると「リソース所有者」「クライアント」「認可サーバー」「保護対象リソース」という4つの役割が出てきます。
最初はピンとこなかったのですが、具体例で考えたらスッと理解できたので、同じように悩んでいる方の参考になればと思い記事にまとめました。
具体例で理解する
あなたがGoogleフォトに保存している写真を、印刷サービスを使って印刷したい場合を考えてみましょう。
| 役割 | 具体例 | 説明 |
|---|---|---|
| リソース所有者 | あなた | Googleフォトに保存されている写真の持ち主。誰に写真へのアクセスを許可するか決める人 |
| クライアント | 印刷サービスのアプリ | あなたの写真にアクセスしたいアプリケーション。でも、あなたのGoogleパスワードは知らない(知る必要もない) |
| 認可サーバー | Googleの認証システム | 「本当にこの印刷サービスに写真へのアクセスを許可しますか?」と確認し、OKをもらったらアクセストークン(入館証のようなもの)を発行する |
| 保護対象リソース | Googleフォトのサーバー | 実際に写真が保存されている場所。正しいアクセストークンを持っているクライアントにだけ写真を渡す |
この例で考えたとき、印刷サービスが自分のGoogleパスワードを知らなくても写真にアクセスできるというのがポイントだと気づきました。
OAuthの認可フロー
理解を深めるために、実際の流れを図にしてみました。
ステップバイステップ解説
①〜②:リクエスト開始
ユーザーが印刷サービスで「Googleフォトから印刷」をクリックすると、印刷サービスが認可サーバーに認可をリクエストします。
③〜④:ユーザー認証と許可
Googleのログイン画面が表示され、ユーザーがログインして「写真へのアクセスを許可」をクリックします。
⑤:トークン発行
認可サーバーが印刷サービスにアクセストークンを発行します。このトークンは「この印刷サービスは写真を見てもいいですよ」という証明書のようなものです。
⑥〜⑦:リソースアクセス
印刷サービスがトークンを提示してGoogleフォトに写真をリクエストします。Googleフォトがトークンを検証してOKなら写真データを返します。
⑧:サービス提供
取得した写真を使って印刷サービスが処理を実行します。
理解できたOAuthの重要なポイント
🔐 パスワードを共有しない
印刷サービスはあなたのGoogleパスワードを一切知らずに、写真にアクセスできます。
🎯 限定的なアクセス権限
「写真の閲覧のみ」など、必要最小限の権限だけを付与できます。
メールやカレンダーにはアクセスさせず、写真だけに限定できるのが便利ですね。
🚫 いつでも取り消し可能
あとからGoogleの設定画面で印刷サービスへのアクセス許可を取り消すことができます。
「このアプリ、もう使わないな」と思ったら、パスワード変更せずに権限だけ取り消せるのは安心です。
⏰ 有効期限付き
アクセストークンには有効期限があり、セキュリティが向上します。
トークンが漏洩しても永久に使われることはないという点で、セキュリティが高いと感じました。
まとめ
OAuthは「パスワードを教えずに、安全に第三者アプリに限定的なアクセス権限を与える」仕組みです。4つの役割を理解することで、OAuth認証フローの全体像が見えてきました。
まだまだOAuthは学び途中なので、今後勉強していきたいと思います。間違いや補足があれば、コメントで教えていただけると嬉しいです!