跳转到主要内容

OpenID Connect

本文约需 2 分钟阅读

OpenID Connect (OIDC) とは、OAuth 2.0 の認可フレームワークの 上に認証レイヤーを追加したプロトコルです。2014 年に OpenID Foundation によって 策定され、「Google でログイン」「Apple でサインイン」といったソーシャルログインの 技術基盤として広く普及しています。OAuth 2.0 が「何にアクセスできるか (認可)」を 扱うのに対し、OIDC は「誰であるか (認証)」を標準化した点が最大の特徴です。

OAuth 2.0 (認可) と OIDC (認証) の違い

OAuth 2.0 と OIDC は混同されやすいですが、解決する問題が根本的に異なります。 OAuth 2.0 は「このアプリに写真フォルダへのアクセスを許可する」といった認可の仕組みであり、 ユーザーが誰であるかを証明する機能は持っていません。OIDC は OAuth 2.0 のフローに ID トークンという認証情報を追加することで、この欠落を補います。

観点OAuth 2.0OIDC
目的認可 (リソースへのアクセス許可)認証 (ユーザーの本人確認)
発行するトークンアクセストークンID トークン + アクセストークン
ユーザー情報標準化されていないUserInfo エンドポイントで標準化
例えホテルのルームキー (部屋に入れる)パスポート (本人を証明する)

OAuth の権限リスクの記事で、 認可と認証を混同した場合に生じるセキュリティ上の問題を詳しく解説しています。

ID トークン (JWT) の役割

OIDC の核心は ID トークンです。これはJWT (JSON Web Token) 形式で 発行され、ユーザーの識別情報 (サブジェクト)、発行者、有効期限、認証時刻などの クレームを含みます。SP (Relying Party) は ID トークンの署名を検証することで、 トークンが改ざんされていないことと、信頼できる IdP が発行したものであることを確認します。

ID トークンの Payload 例:
{ "iss": "https://accounts.google.com", "sub": "1102847529301", "aud": "my-app-client-id", "exp": 1714700000, "iat": 1714696400, "email": "user@example.com", "name": "Taro Yamada", "nonce": "abc123xyz" }
iss: 発行者 / sub: ユーザー識別子 / aud: 対象アプリ / exp: 有効期限 / nonce: リプレイ攻撃防止

Discovery エンドポイント

OIDC プロバイダーは .well-known/openid-configuration という 標準化された URL で設定情報を公開します。このエンドポイントには、認可エンドポイント、 トークンエンドポイント、公開鍵の取得先 (JWKS URI)、サポートするスコープなどが JSON 形式で記載されています。SP はこの情報を自動取得することで、手動設定なしに IdP と連携できます。

OIDC 認証フロー (Authorization Code Flow)
ユーザーがログインボタンをクリック
IdP の認可エンドポイントへリダイレクト
ユーザーが IdP で認証
認可コードを SP に返却
SP がコードを ID トークンに交換

Google・Apple ログインでの利用

「Google でログイン」や「Apple でサインイン」は OIDC の代表的な実装例です。 ユーザーは Google や Apple のアカウントで認証するだけで、各サービスに 新たなパスワードを作成する必要がありません。Apple の場合は「メールを非公開」 オプションでプライバシーを保護する機能も提供されています。SNS アカウント保護の記事で、 ソーシャルログイン利用時のセキュリティ対策を解説しています。

SAML との比較

SAML は OIDC より前に 策定されたエンタープライズ向けの認証プロトコルです。両者は同じ問題 (フェデレーション認証) を 解決しますが、技術的なアプローチが大きく異なります。

観点OIDCSAML
データ形式JSON / JWTXML
主な用途Web・モバイルアプリエンタープライズ SSO
実装の複雑さ比較的シンプル複雑 (XML 署名処理)
モバイル対応ネイティブ対応ブラウザ依存

よくある誤解

「OIDC は OAuth 2.0 の代替」という誤解がありますが、OIDC は OAuth 2.0 を 置き換えるものではなく、その上に構築された拡張です。OAuth 2.0 のアクセストークンは 引き続きリソースアクセスに使用され、OIDC の ID トークンは認証にのみ使用されます。 両者は補完関係にあり、多くの実装では OAuth 2.0 と OIDC を同時に利用しています。プライバシー設定ガイドで、 OIDC を利用したサービス連携時のプライバシー管理についても確認してください。OAuth と認証の関連書籍 (Amazon)も参考になります。

現場での使用例

「自社 SaaS の認証基盤を独自実装から OIDC に移行しました。Google と Microsoft の IdP に対応したことで、エンタープライズ顧客の導入障壁が 大幅に下がり、トライアルからの契約率が 1.5 倍に向上しました。SSO 対応が B2B SaaS の必須要件になっていることを実感しています。」

相关术语

这篇文章对您有帮助吗?

XHatena