0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【図解】「OAuth 2.0」とは? 難しい用語なしで「合鍵」に例えて解説

Posted at

はじめに

Webサービスを使っていると、「Googleでログイン」「Twitter(X)と連携」 といったボタンをよく見かけませんか?
ボタン一つで連携できて便利ですが、裏側で一体何が起きているのか、不安に思ったことはないでしょうか。

「勝手にパスワードが見られたりしないの?」
「全部の情報が抜き取られたりしない?」

この連携の裏側で動いている仕組みが、OAuth 2.0(オーオース 2.0) です。
この記事では、エンジニアではない方や初学者の方に向けて、OAuth 2.0の仕組みを「ホテルのカードキー」に例えて解説します。

1. なぜOAuthが必要なの?(合鍵問題)

OAuthが登場する前、アプリAがアプリBのデータを使いたい場合、一番手っ取り早い方法は**「IDとパスワードを教えること」**でした。

しかし、これは現実世界で言うと、**「家の掃除を代行業者にお願いするために、家の合鍵(マスターキー)を渡す」**ようなものです。

合鍵(ID/PASS)を渡すリスク

  • 業者が、掃除以外の部屋(見られたくないデータ)に勝手に入るかもしれない。
  • 業者が合鍵をなくしたら、家中のセキュリティが崩壊する。
  • 契約終了後に鍵を返してもらったか確認できない(パスワードを変えるしかない)。

「掃除だけしてほしいのに、家全体の権利を渡すのは怖すぎる」。
そこで必要になったのが、「掃除する部屋だけに入れる、期間限定のカードキー」を渡す仕組みです。これがOAuthの考え方です。

2. 登場人物を「ホテル」で整理する

OAuthの仕組みは少し複雑なので、**「ホテルの宿泊客とルームサービス」**に置き換えるとスッキリ理解できます。

専門用語 この記事での呼び名 ホテルの例え 役割
Resource Owner ユーザー 宿泊客(あなた) データの持ち主。
Client Webアプリ デリバリー業者 あなたの部屋に荷物を届けたい人。
Authorization Server 認可サーバー ホテルのフロント 鍵(権限)を発行する係。
Access Token アクセストークン カードキー 指定された部屋に入れる鍵。

Webアプリ(デリバリー業者)は、あなたのID・パスワードを知りません。持っているのは、フロントから発行された**カードキー(トークン)**だけです。

3. 全体の流れ(図解)

では、実際に「Webアプリ」が「Googleフォトの写真」にアクセスする場面を想像してみましょう。
(「デリバリー業者」が「あなたの部屋」に入室する流れと同じです)

ポイント解説

  1. パスワードはGoogle(フロント)にしか渡さない
    Webアプリ(業者)には、あなたのパスワードは一切知らされません。ここが最も重要です。
  2. 認可コード(引換券)の存在
    いきなり鍵を渡さず、一度「引換券」を挟むことで、セキュリティを高めています(これを認可コードグラントといいます)。
  3. トークン(カードキー)は限定的
    このカードキーは「写真を見るだけ」の権限しかありません。「メールを見る」や「パスワードを変える」ことはできません。

4. よくある間違い:「認証」と「認可」

最後に、よく混同される言葉の違いを整理しておきましょう。

  • 認証 (Authentication): あなたが「誰か」を確認すること。
    • 例:ホテルのチェックイン時に身分証を出すこと。
  • 認可 (Authorization): あなたに「何をする権限を与えるか」を決めること。
    • 例:特定の部屋に入れるカードキーを渡すこと。

OAuth 2.0は、名前の通り**Auhtorization(認可)**の仕組みです。「誰か」を特定するためにも使われますが、本質は「鍵(権限)の貸し借り」にあると覚えておきましょう。

OpenID Connect (OIDC) とは?
OAuth 2.0(鍵の受け渡し)の仕組みを使って、ついでに「この人は誰?」という身分証明(認証)もしちゃおう!という拡張規格です。
「Googleでログイン」の多くは、実際にはこれを使っています。

まとめ

この記事のポイントを振り返ります。

  • OAuth 2.0の本質
    • ID/パスワードを教えずに、アプリに権限だけを貸す仕組み。
  • イメージは「カードキー」
    • 「合鍵(全権限)」ではなく、用途が限定された「ホテルのカードキー(限定権限)」のようなもの。
  • Webアプリの動き
    • Webアプリは、アクセストークンを使ってデータのやり取りを行う。

この仕組みのおかげで、私たちは安全にいろいろなサービスを連携させて使うことができているのです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?