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?

セキュリティプロトコルを基本からまとめてみた【OAuth2とOpenID Connect (OIDC)】

Last updated at Posted at 2025-08-21

OAuth2

OAuth2とは?

  • サードパーティアプリに限定的なアクセス権限を与える認可フレームワーク
  • 最新版は2.0でRFCで標準化されている

認証

  • ユーザが誰であるのかを証明すること

認可

  • ユーザができる権限を管理すること

OAuthがない世界

想定リスク

  • ID/Password漏洩リスク
  • 過剰な権限が与えられるリスク
  • 権限管理のリスク

OAuthがある世界

OAuthの特徴

  • ID/Passwordは第三者に教えない
  • 必要な権限のみ与えられる
  • 簡単に権限を剥奪できる

主要なコンポーネント

リソースオーナー

  • リソースの所有者
  • クライアントに対して権限を委譲する

リソースサーバー

  • データ提供するサーバー
  • Web APIを提供し、クライアントにデータを提供する

クライアント

  • リソースオーナーから権限委譲を得てリソースサーバにアクセスするアプリ
  • バックエンドアプリ、スマホアプリなど様々

認可サーバー

  • アクセストークンをクライアントに発行するサーバー
  • リソースオーナーの認証と認可が必要

OAuth2の仕組み

アクセストークン

  • ユーザーが特定の情報やサービスにアクセスする許可証のようなもの

認可グラントタイプ

  • アクセストークンとリフレッシュトークの両方を取得するために用いられ、コンフィデンシャルクライアントに最適化されている

スコープ

  • クライアントが認可サーバー要求するアクセストークンの権限範囲を通知するもの

認可コード

  • クライアントアプリケーションがアクセストークンを取得するための、一時的で使い捨てのパスワードのようなもの

クライアントの種類

コンフィデンシャル(Confidential)

  • クレデンシャル情報を安全に保持することができるクライアント

パブリック(Public)

  • クレデンシャル情報を安全に保持することができないクライアント

インプリシットグラント

  • パブリッククライアントで使われるグラントタイプ
  • 認可コードは使わず、リダイレクトを通じて直接アクセストークンを受け渡す

認可コードグラント

  • アクセストークンとリフレッシュトークの両方を取得するために用いられ、コンフィデンシャルクライアントに最適化されている
  • パブリッククライアントでも『認可コードグラント』は利用可能だが、PKCEを併用することが推奨される

リフレッシュトークン

  • 新しいアクセストークンを取得するために使用されるトークン
  • 発行は任意で、オプションであり、認可サーバーの判断に委ねられる

OpenID Connect(OIDC)

OpenID Connectとは?

  • インターネット上でユーザーのログインと認証をシンプルにする仕組み
  • OAuth2.0の拡張仕様であり、OpenID Foundationによって作成されている

OAuth2とOpenID Connectの違い

OAuth2.0 OpenIDConnect
目的 認可 認証
トークンタイプ アクセストークン IDトークン
アクセストークン
ユーザ認証 No Yes
主な用途 サードパーティの
ユーザデータアクセス権の委譲
シングルサインオン(SSO)
ユーザログイン
その他 - OAuth2.0と同時に実施可能
OAuth2.0 OpenIDConnect
リソースオーナー エンドユーザー
クライアント リライングパーティー
認可サーバー OpenIDプロバイダー
リソースサーバー UserInfoエンドポイント

アクセストークンとIDトークンの違い

  • アクセストークン: 手に入れたら誰でも使える鍵
  • IDトークン: 誰であるかを特定できる身分証明書
アクセストークン IDトークン
目的 リソースへのアクセスを許可 ユーザーのアイデンティティを提供
発行元 認可サーバー OpenIDプロバイダ
使用先 リソースサーバー リライングパーティー
形式 特に決まりなし Json Web Token(JWT)
検証 リソースサーバーが実施 リライングパーティーが実施
クライアントとの紐付け なし  あり(aud項目)

IDトークンのデータ構造

参考サイト

手を動かして理解する!OAuth2 / OpenID Connect の基礎と活用

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?