OpenID Connect(OIDC) は、OAuth 2.0 の上に「認証(ログインしているのは誰か)」のレイヤーを追加した標準仕様です。2014 年に OpenID Foundation により策定され、いまや Google・Microsoft・Apple をはじめ、ほぼすべての「◯◯でログイン」の裏側で使われています。
OAuth 2.0 と OpenID Connect の違い
混同されがちですが、役割が異なります。
| OAuth 2.0 | OpenID Connect | |
|---|---|---|
| 目的 | 認可(リソースへのアクセス許可) | 認証(ユーザー本人の確認) |
| 主な発行物 | アクセストークン | IDトークン(+アクセストークン) |
| 例 | 「あなたの写真フォルダへのアクセスを許可」 | 「あなたが田中さんであることを証明」 |
OAuth 2.0 は「鍵を渡す」仕組み、OpenID Connect は「身分証を見せる」仕組み、と考えるとわかりやすいでしょう。
IDトークンとは
OIDC の中心は IDトークンです。これは JWT(JSON Web Token) 形式で署名された、ユーザーに関する主張(クレーム)の集合です。
代表的なクレーム:
iss— トークンの発行者(IdP)sub— ユーザーの一意な識別子aud— このトークンの受け手(アプリ)exp— 有効期限email/name— ユーザー情報(スコープ次第)
アプリは IdP の公開鍵で署名を検証することで、「この情報は確かにあの IdP が発行したものだ」と信頼できます。
主要なフロー
- Authorization Code Flow — 最も推奨される標準フロー。Webアプリ・モバイルで使う。PKCE と組み合わせるのが現在のベストプラクティス。
- Implicit Flow — 旧来の SPA 向けフロー。セキュリティ上の理由から非推奨になりつつある。
- Client Credentials — ユーザーが介在しないサーバー間通信(厳密には OAuth 側)。
主要なエンドポイント
OIDC の IdP(OpenID Provider)は、おおむね次のエンドポイントを公開します。/.well-known/openid-configuration(Discovery)から自動取得できます。
| エンドポイント | 役割 |
|---|---|
| Authorization | 認可リクエストの受け口(ログイン画面へ) |
| Token | 認可コードをトークンに交換 |
| UserInfo | アクセストークンでユーザー属性を取得 |
| JWKS | IDトークン署名検証用の公開鍵を配布 |
| Discovery | 上記の所在やサポート機能を JSON で公開 |
スコープとクレーム
スコープで「取得する情報の範囲」を指定します。openid は必須で、これがあると OIDC として扱われます。
openid— 必須。IDトークンの発行を要求profile— 氏名・表示名などemail— メールアドレスと検証状態offline_access— リフレッシュトークンを要求
必要最小限のスコープに絞るのが原則です(過剰取得は避ける)。
なぜ OIDC が標準になったのか
- JSON / REST ベースで実装が容易(XML の SAML に比べ軽量)
- モバイル・SPA・サーバーサイドのすべてに対応
- ソーシャルログインからエンタープライズ SSO まで同じ仕組みで賄える
- Discovery / JWKS により鍵更新や設定変更に追従しやすい
よくある誤解
- 「OAuth でログインできるから OAuth は認証だ」 → OAuth は認可。ユーザー識別の保証は OIDC(IDトークン)が担う。
- 「アクセストークンでユーザーを識別すればよい」 → アクセストークンは API 用。本人確認には IDトークンを使う。
- 「IDトークンを API のアクセスに使う」 → 用途が逆。IDトークンはクライアントが本人確認に使うもの。
エンタープライズ利用の勘所
- IdP(Entra ID・Okta ほか)が OIDC をサポートしていれば、SaaS 連携も自社アプリも同じ仕組みで統一できる
- 高セキュリティ用途では FAPI プロファイルや mTLS を併用する
- セッション失効の横展開には Shared Signals(CAEP/RISC) が利用できる
実装の具体例は GoでOpenID Connectログインを実装する、検証の注意は JWT検証の落とし穴 を参照してください。次は、エンタープライズで根強く使われる SAML との比較 を見てみましょう。全体設計は 企業SSO完全ガイド にまとめています。