oauth2.0とは?初心者にもわかる基本と仕組みを徹底解説共起語・同意語・対義語も併せて解説!

  • このエントリーをはてなブックマークに追加
oauth2.0とは?初心者にもわかる基本と仕組みを徹底解説共起語・同意語・対義語も併せて解説!
この記事を書いた人

高岡智則

年齢:33歳 性別:男性 職業:Webディレクター(兼ライティング・SNS運用担当) 居住地:東京都杉並区・永福町の1LDKマンション 出身地:神奈川県川崎市 身長:176cm 体系:細身〜普通(最近ちょっとお腹が気になる) 血液型:A型 誕生日:1992年11月20日 最終学歴:明治大学・情報コミュニケーション学部卒 通勤:京王井の頭線で渋谷まで(通勤20分) 家族構成:一人暮らし、実家には両親と2歳下の妹 恋愛事情:独身。彼女は2年いない(本人は「忙しいだけ」と言い張る)


oauth2.0とは

oauth2.0 はインターネット上のアプリ同士が安全に情報をやり取りするための仕組みです。認証ではなく認可の仕組みであり、第三者のアプリがあなたのデータにアクセスする許可を受け取る方法を決める枠組みです。

つまりあなたがどのデータを、どのアプリに、どの範囲まで渡して良いかを、あなた自身の意思でコントロールできるようにします。oauth2.0 を使うと、パスワードを他のアプリと共有する必要がなく、安全にデータをやり取りできる点が特徴です。

主要な登場人物と役割

oauth2.0 にはいくつかの役割があります。以下は代表的な4つです。重要なポイントは太字で示しています。

役割 説明
Resource Owner 実際にデータを持っているユーザー。あなた自身が該当します。
Client データを利用したいアプリ。あなたが使っているスマホアプリやウェブアプリです。
Authorization Server データへのアクセス許可を発行するサーバ。どのデータにアクセスしてよいかを判断します。
Resource Server 実際のデータを提供するサーバ。許可されたデータをアプリに渡します。

主なフローの解説

oauth2.0 にはいくつかの「フロー」と呼ばれるやり取りの流れ方があります。初心者にもわかりやすい代表的なものを簡潔に紹介します。

1. 認可コードフロー:ユーザーが認証サーバのログインページで許可を与え、一時的な認可コードを取得します。アプリはそのコードを使って認可サーバからアクセストークンを受け取り、保護されたデータにアクセスします。セキュリティが高く、ウェブアプリでよく使われます。

2. 暗黙的フロー:ブラウザだけで完結する簡易な流れです。直接アクセストークンを受け取るため、コードの交換が不要ですが、現代ではセキュリティ面から推奨されません。

3. 資格情報フロー:リソースオーナーのパスワードをアプリが直接扱う形です。セキュリティリスクが高く、推奨されません。代わりに他のフローを使うべきです。

4. クライアント資格情報フロー:サーバー間のアプリ同士で利用します。ユーザーの関与がなく、バックエンド同士の連携に適しています。

アクセストークンとリフレッシュトークン

認可サーバから受け取るのは主にアクセストークンです。これはデータへアクセスする際の鍵のようなものですが、パスワードとは異なる第三者用のトークンです。アクセストークンは通常短い有効期限を持ちます。期限が切れると新しいトークンを発行するためのリフレッシュトークンが使われることがあります。

データを守るためのポイントは HTTPSを必ず使うリダイレクトURIを厳しく検証するアクセストークンを安全に保管する、公開クライアントには PKCE を使うなどの対策です。

よくある誤解と注意点

oauth2.0 はあなたの「ログイン」の代替ではありません。あくまで特定のデータへのアクセスを第三者アプリに許可する仕組みです。実際の認証情報(あなたのIDやパスワード)はアプリと共有されません。信頼できるアプリだけにアクセスを許可することが大切です。

実装時には、最小権限の原則を守り、必要なデータだけをアクセス許可するように設計しましょう。最近の動向としては PKCE を組み合わせた認可コードフローが推奨されることが多く、公開クライアントでも安全に使える選択肢です。

実際の利用シーンのイメージ

例えば、あなたが写真(関連記事:写真ACを三ヵ月やったリアルな感想【写真を投稿するだけで簡単副収入】)共有サービスに別のアプリから写真を投稿したい場合を想像してください。oauth2.0を使えばその別アプリはあなたの許可を得て、安全に写真データへアクセスできるようになります。あなた自身のIDとパスワードを共有する必要はありません。


oauth2.0の同意語

oauth2.0
OAuth 2.0を指す略称・表記ゆれ。正式名称はOAuth 2.0。
OAuth 2.0
OAuth 2.0そのもの。Open Authorizationの第2世代の認可プロトコル
OAuth2
ドットなしの表記。ウェブ検索でよく使われる同義表記。
OAuth2.0
OAuth 2.0の別表記。
OAuth 2
短縮表記。カジュアルな表現で使われることが多い。
Open Authorization 2.0
OAuthの正式名称であるOpen Authorizationの第2世代を指す表現。
Open Authorization Protocol 2.0
Open Authorizationプロトコルの第2.0版を指す表現。

oauth2.0の対義語・反対語

パスワード認証のみ
ユーザー名とパスワードだけで本人確認を行い、第三者への権限委任やアクセストークンを使わない認証形態。
基本認証 (HTTP Basic)
HTTPの基本認証で、毎回ユーザー名とパスワードを送信して認証する方法。トークンを使用せず、OAuth 2.0の代替として挙げられることがある。
トークン不要
アクセストークン・リフレッシュトークンなどの token ベースの仕組みを使わない認証/認可設計。
認可サーバー不要
認可サーバーを介さず、直接アプリやサービスが認証と権限を管理する設計。
OAuth 1.0a(署名ベースの認証)
署名を用いてリクエストを検証する認証方式。OAuth 2.0 のトークン方式と対照的な、古い署名ベースの流れ。
SAML認証
組織内のシングルサインオンで使われるSAML認証。OAuth 2.0の委任フローとは別の認証系統。
OpenID Connectを使わない認証設計
OAuth 2.0の上に認証を追加するOIDCを使わず、認証を別の方法で実現する設計。
クライアント資格情報の直接提示
クライアントID・クライアントシークレットをエンドユーザー環境から直接送信して認証する方式。OAuthの委任フローを経ない点が特徴。
ローカル認証中心のアプリ
外部認証サーバーを使わず、アプリ内のデータベースやファイルで認証を完結させる設計。
相互TLS(双方向TLS)認証
クライアント証明書を用いたサーバーとクライアントの相互認証のみで識別・認証を行う方式。OAuth 2.0のトークンを使わない点が特徴。

oauth2.0の共起語

OAuth 2.0
ソースの保護と第三者へのアクセス許可を管理する、現代のウェブAPI認証/認可の基本フレームワーク。RFC 6749で規定。
OpenID Connect
OAuth 2.0をベースにしたアイデンティティ提供層。IDトークンとユーザー情報エンドポイントを提供。
Access Token
リソースサーバーに対するアクセス許可を表す短命のトークン。Authorizationヘッダで送付されることが多い。
Refresh Token
アクセストークンを再発行するための長期有効なトークン。セッション長の管理に使われる。
Bearer Token
トークントークンの一種。HTTPのAuthorizationヘッダに "Bearer " の形式で添付して送る。
Authorization Server
クライアントに対してアクセストークンを発行するサーバ。認可処理とトークン発行を担当。
Resource Server
保護されたリソースを提供するサーバ。受け取ったトークンを検証してアクセスを許可。
Client
OAuthクライアント。アプリケーション側が登録するクライアントID等を持つ。
Authorization Code Grant
認可コードを経由してアクセストークンを取得する、セキュアな認可フロー。
Implicit Grant
認可コードを介さず直接アクセストークンを返すフロー。セキュリティリスクがあるため推奨度が低い。
Device Flow
デバイスが表示するコードを使い、別デバイスで認証するフロー(デバイスコードフロー)。
PKCE
Code VerifierとCode Challengeの組み合わせで、特に公開クライアントのセキュリティを強化する拡張。
Redirect URI
認可サーバが認証結果を返す先のURL。
Scopes
アクセス権限の範囲。どのリソースへ何を許可するかを表す。
JWT
JSON Web Token。署名付きの自己完結型トークン形式。
JWKS
JSON Web Key Set。JWTの署名検証に使う公開鍵の集合。
ID Token
OpenID Connectで提供される、ユーザーを識別する情報を含むトークン。
UserInfo Endpoint
OpenID Connectで追加のユーザー情報を取得するエンドポイント
Issuer (iss)
トークンを発行した認可サーバの識別子を表すクレーム。
Audience (aud)
トークンの想定受信者を示すクレーム。
State parameter
認可リクエストと結果を紐づける値。CSRF対策にも使われる。
Nonce
リプレイ防止のためIDトークンに含める一意の値。
Code Verifier
PKCEで使用するランダム値。Code Challengeの元データ。
Code Challenge
PKCE用にCode Verifierから計算する値。サーバに渡して検証を受ける。
Token Endpoint
アクセストークンを発行するエンドポイント
Authorization Endpoint
認可コードを発行するエンドポイント。
Token Revocation
発行済みトークンを撤回する機能。
Token Introspection
トークンの有効性・状態を照会する機能。
Consent Screen
ユーザーがアプリに与える権限を確認・同意する画面。
Dynamic Client Registration
動的にクライアントを登録する仕組み
Confidential Client
秘密クライアント。サーバーサイドで秘密を安全に保持できるクライアント。
Public Client
公開クライアント。秘密を安全に保持できないクライアント(モバイル等)。
Authorization Header
HTTPリクエストのAuthorizationヘッダで認証情報を送る方式。
SSO
シングルサインオン。1回の認証で複数サービスにアクセス可能。
OAuth 2.1
OAuth 2.0の改良版・整理版。セキュリティの推奨点を統合。
RFC 6749
OAuth 2.0の正式仕様書。基本フロー・用語を定義。
RFC 6750
Bearer Tokenの使い方を規定する仕様。
Password Grant
リソースオーナーのパスワードをクライアントに渡す古い認可フロー。推奨されない。
Authorization Code Flow
認可コードを用いる標準的なフロー。PKCEと組み合わせるのが一般的。
Access Token Lifetime
アクセストークンの有効期限
Refresh Token Rotation
フレッシュトークンの使い回しを避ける回転式運用。

oauth2.0の関連用語

OAuth 2.0
第三者アプリがユーザーの資源へ限定的にアクセスするための認可フレームワーク。認証そのものは行わず、アクセストークンを用いて権限を委譲します。
認可コードフロー
サーバーサイドで安全にアクセストークンを取得する最も一般的なフロー。認可エンドポイントでコードを受け取り、トークンエンドポイントでアクセストークンを交換します。
インプリシットフロー
ブラウザ上で直接アクセストークンを返すフロー。クライアント側のセキュリティリスクが高く、現代の実装では推奨されません。
クライアントクレデンシャルフロー
クライアント自身が資源へアクセスする場合のフロー。ユーザーの介在がなく、バックエンド間通信で用いられます。
リソースオーナーパスワードフロー
ユーザーのユーザー名とパスワードをクライアントが直接取得してアクセストークンを得るフロー。安全性に注意が必要です。
アクセストークン
リソースサーバにアクセスする際に提示する短命なトークン。スコープ情報を含むことが多いです。
リフレッシュトークン
アクセストークンの期限が切れたときに新しいアクセストークンを取得するための長期トークン。
ベアラートークン
アクセストークンの標準的な表現。HTTP ヘッダの Authorization: Bearer ... で送られます。
クライアント
認可サーバとリソースサーバへアクセスするアプリケーション。クライアントIDとクライアントシークレットを持つことがあります。
リソースサーバ
保護された資源を提供するサーバ。アクセストークンの検証を通じてアクセスを許可します。
認可サーバ
アクセストークンを発行・検証するサーバ。認可の判断とトークンの管理を担います。
リダイレクトURI
認可サーバが認可コードやトークンを返す際のリダイレクト先の URL。事前登録が必須です。
スコープ
アクセスできる資源の範囲を意味します。例: read_profile、email、photos など。
ステート
CSRF対策として、認可リクエストとレスポンスを結びつけるランダム値です。
トークンエンドポイント
認可サーバがアクセストークンを発行するエンドポイントです。
認可エンドポイント
ユーザーの認可を受け付けるエンドポイント。認可コードを発行します。
JSON Web Token
署名付きのトークン形式で、ヘッダ・ペイロード・署名の3部構成です。
JWT
JSON Web Token の略。ウェブアプリで広く使われるトークン形式です。
JWK
JSON Web Key。JWT の署名検証に使われる公開鍵の形式です。
JWKS
JSON Web Key Set。複数の JWK をまとめた公開鍵の集合です。
PKCE
Proof Key for Code Exchange。認可コードフローのセキュリティを強化する仕組みです。
コードベリファイア
PKCE でクライアントが生成するランダムな値。Code Verifier の別名として使われることがあります。
コードチャレンジ
PKCE でクライアントが事前に作成する難解な文字列。サーバへ送信して検証します。
トークンイントロスペクション
トークンの有効性や属性を照会するための仕組みです。
イントロスペクションエンドポイント
トークンの状態を検証する API エンドポイント。
OpenID Connect
OAuth 2.0 を拡張して認証機能を提供する層。ユーザーの身元情報を取得できます。
OAuth 2.1
OAuth 2.0 の改良版。セキュリティ推奨事項の強化と古いフローの廃止を含みます。
RFC 6749
OAuth 2.0 の正式仕様。フローやエンドポイントの挙動を定義します。
RFC 6750
Bearer Token の仕様。トークンの運用方法を詳しく定義します。
クライアントID
クライアントを識別する一意の識別子。公開情報として使われることが多いです。
クライアントシークレット
クライアントを認証する秘密鍵。安全に保管する必要があります。
登録済みリダイレクトURI
認可サーバに事前登録したリダイレクト先 URI の集合です。
認可コード
認可サーバが発行する一時的なコード。これをトークンに交換します。
アクセストークン有効期限
アクセストークンには有効期限が設定され、期限切れ後は更新が必要です。
セキュリティベストプラクティス
HTTPS の徹底、PKCE の活用、最小権限のスコープ設定、短い有効期限の設定などの推奨事項。

oauth2.0のおすすめ参考サイト


インターネット・コンピュータの人気記事

awstatsとは?初心者でもわかる使い方と基本解説共起語・同意語・対義語も併せて解説!
14189viws
bing・とは?初心者のための基本ガイド:検索エンジンの仕組みと使い方共起語・同意語・対義語も併せて解説!
2021viws
着信転送とは?初心者向けガイドで分かる使い方と設定のコツ共起語・同意語・対義語も併せて解説!
933viws
リマインドメールとは?初心者にもわかる基本ガイドと使い方のコツ共起語・同意語・対義語も併せて解説!
633viws
com端子・とは?初心者にも分かる基礎ガイド|シリアルポートの使い方と歴史を解説共起語・同意語・対義語も併せて解説!
600viws
充電アダプターとは何かを徹底解説|初心者でも分かる基本と選び方のコツ共起語・同意語・対義語も併せて解説!
583viws
pinロックとは?初心者が知っておくべき基本と使い方ガイド共起語・同意語・対義語も併せて解説!
543viws
asp・とは?初心者向けに徹底解説する基本と使い方ガイド共起語・同意語・対義語も併せて解説!
478viws
16進数カラーコード・とは?初心者でもつまずかない基礎と使い方ガイド共起語・同意語・対義語も併せて解説!
461viws
ローカルポート・とは?初心者にも分かる基本と使い方ガイド共起語・同意語・対義語も併せて解説!
440viws
7zファイル・とは?初心者でもわかる使い方と特徴を解説共起語・同意語・対義語も併せて解説!
413viws
全角文字とは?初心者向け解説|全角と半角の違いをやさしく学ぶ共起語・同意語・対義語も併せて解説!
372viws
差し込み印刷・とは?初心者でもすぐわかる使い方と仕組みガイド共起語・同意語・対義語も併せて解説!
372viws
ワンタイムコード・とは?初心者でも分かる基本と使い方ガイド共起語・同意語・対義語も併せて解説!
334viws
none とは?初心者にもやさしく解説する意味と使い方ガイド共起語・同意語・対義語も併せて解説!
325viws
select句・とは?初心者でも分かるSQLの基本と使い方共起語・同意語・対義語も併せて解説!
323viws
csvダウンロードとは?初心者が今すぐ使える基本ガイド共起語・同意語・対義語も併せて解説!
317viws
ダイレクトチャットとは?初心者向けガイドで使い方と注意点を徹底解説共起語・同意語・対義語も併せて解説!
305viws
解像度スケールとは?初心者でも分かる解像度スケールの基礎と使い方共起語・同意語・対義語も併せて解説!
276viws
sha256とは?初心者が知るべき暗号ハッシュの基礎と使い道共起語・同意語・対義語も併せて解説!
251viws

新着記事

インターネット・コンピュータの関連記事