OIDC / OAuth 2.0
入門

OAuth が解決する問題

OAuth が生まれる前、サードパーティアプリにデータを共有するには パスワードを渡すしかありませんでした。この章では、なぜそれが危険で、 OAuth がどのように解決したのかを学びます。

パスワード共有の時代

2007年以前、あるサービスが別のサービスのデータにアクセスしたい場合、 ユーザーは自分のパスワードを直接渡す必要がありました。 例えば、写真印刷サービスが Google Photos の写真にアクセスするには、Google のパスワードをそのサービスに教えなければなりませんでした。

パスワード共有の問題点
1.
全権限の譲渡

パスワードを渡すと、写真の閲覧だけでなく、 メールの送信、連絡先の削除、アカウント設定の変更まで すべてが可能になってしまいます。

2.
取り消し不可

一度パスワードを教えてしまうと、パスワード自体を変更しない限り アクセスを取り消せません。変更すると、他の正当なサービスにも 影響が出ます。

3.
漏洩リスク

パスワードを知るサービスが増えるほど、漏洩のリスクが高まります。 一つのサービスが攻撃を受ければ、あなたのアカウントが危険にさらされます。

鍵の例えで理解する

パスワード共有の問題を、マンションの鍵に例えて考えてみましょう。

マスターキーを渡す

# パスワード共有 = マスターキーを渡す

清掃業者に依頼したい

→ マスターキーのコピーを渡す

結果:

- 全部屋に入れる

- 金庫も開けられる

- いつでも出入り自由

- 取り消すには鍵交換が必要

合鍵を作る(OAuth)

# OAuth = 制限付き合鍵を作る

清掃業者に依頼したい

→ リビングだけの合鍵を作る

結果:

- リビングのみアクセス可

- 金庫は開けられない

- 期限付き(有効期限あり)

- いつでも無効化できる

OAuth による解決

OAuth は「パスワードを渡す代わりに、制限付きのトークン(合鍵)を 発行する」という仕組みです。これにより、以下が実現されました。

1.
最小権限の原則

「写真の読み取りのみ」「プロフィール情報のみ」のように、 必要最小限の権限だけを許可できます。

2.
簡単な取り消し

パスワードを変更せずに、特定のアプリのアクセスだけを 取り消すことができます。

3.
パスワード非共有

サードパーティアプリはパスワードを知ることなく、 必要なデータにアクセスできます。

4.
有効期限

トークンには有効期限があり、期限が切れると自動的に アクセスできなくなります。

OAuth の基本的な流れ

# 写真印刷アプリが Google Photos にアクセスする場合

[ユーザー] → 写真印刷アプリを使いたい

[印刷アプリ] → 「Google Photos へのアクセス許可をください」

[ユーザー] → Google のログイン画面で認証

[Google] → 「写真の読み取りを許可しますか?」

[ユーザー] → 「許可する」

[Google] → 印刷アプリにアクセストークンを発行

[印刷アプリ] → トークンを使って写真を取得

# ポイント: ユーザーのパスワードは印刷アプリに渡らない

次のステップ

認証 vs 認可

次へ →