Keito

© 2024 Keito

技術ブログとポートフォリオ

認証・認可の基礎に戻る

OpenID Connect (OIDC)

OAuth 2.0に「身元確認」機能を追加した現代的な認証標準
シングルサインオン(SSO)を実現し、安全で便利なログイン体験を提供

OIDCとOAuth 2.0の関係

🏗️ OIDCは「OAuth 2.0の拡張版」

OpenID Connect(OIDC)は、OAuth 2.0の上に構築された認証レイヤーです。OAuth 2.0の「権限委譲」機能に加えて、「誰がログインしたか」を確実に知ることができます。

OAuth 2.0

権限の委譲

OIDC

認証 + 認可

OAuth 2.0 vs OIDC

比較項目OAuth 2.0OIDC
目的権限の委譲(認可)身元確認 + 権限の委譲(認証 + 認可)
取得する情報アクセストークンのみIDトークン + アクセストークン
身元確認✗ 「誰か」は分からない✓ 「誰か」が分かる
標準化レベルフレームワーク(実装に幅がある)厳格な仕様(統一された実装)
適用例API連携、権限付与ログイン、SSO、身元確認

OIDCが解決する問題

🏢 会社の統一ID管理

シナリオ:
大企業で、社員が複数のツール(メール、勤怠管理、経費精算など)を使う時、それぞれでログインが必要でした。

OIDCの価値:
OIDCのSSO機能により、一度ログインすれば全てのツールが使えるようになりました。しかも「誰がログインしたか」も確実に分かります。

🎓 大学のポータルサイト

シナリオ:
学生が履修登録、成績確認、図書館予約、食堂決済など、様々なサービスを利用する時、毎回ログインが必要でした。

OIDCの価値:
OIDCにより、一度の学生証認証で全サービスが利用可能。どのサービスを誰が使ったかの記録も正確に残ります。

🏥 医療システム

シナリオ:
病院で、医師・看護師・薬剤師がそれぞれ異なるシステムを使う際、毎回ログインが必要で時間がかかっていました。

OIDCの価値:
OIDCにより、医療従事者の身元を確実に識別しながら、必要なシステムにスムーズにアクセス。患者の安全性も向上。

🛒 Eコマースプラットフォーム

シナリオ:
ユーザーが複数のショップを利用する際、各ショップで会員登録とログインが必要でした。

OIDCの価値:
OIDCにより、一つのアカウントで複数ショップを利用可能。購入履歴の管理も統一され、ユーザー体験が大幅改善。

シングルサインオン(SSO)の価値

📧 オフィス業務

SSOなしの場合

メール、カレンダー、ファイル共有、チャット、プロジェクト管理ツールなど、それぞれでログイン。パスワードを複数覚える必要。

SSOありの場合

一度のログインで全てのツールにアクセス。パスワードは一つだけ覚えればOK。作業効率が大幅アップ。

🎮 ゲーム・エンタメ

SSOなしの場合

ゲーム、動画配信、音楽配信、SNSなど、サービスごとにアカウント作成とログインが必要。

SSOありの場合

一つのアカウントで複数のエンタメサービスを利用。友達とのつながりやプロフィールも統一管理。

🏪 ショッピング

SSOなしの場合

各ECサイトで会員登録、住所・決済情報を毎回入力。購入履歴も分散して管理が大変。

SSOありの場合

一度の登録で複数ショップを利用。配送先・決済情報は自動入力。ポイントも統合管理。

🏥 医療・行政

SSOなしの場合

病院の予約、健康保険の手続き、薬局での薬の受け取りなど、それぞれで本人確認が必要。

SSOありの場合

一度の認証で全ての医療・行政サービスを利用。本人確認の手間が省け、サービスの連携も可能。

IDトークン:「誰か」を証明する情報

🆔 IDトークンとは?

IDトークンは、「ログインしたユーザーが誰か」を証明するデジタル身分証明書です。 OAuth 2.0のアクセストークンが「何ができるか」を示すのに対し、 IDトークンは「誰がログインしたか」を示します。

IDトークンには、以下のようなユーザー情報が含まれています:

sub

248289761001

ユーザーの一意ID

name

山田太郎

ユーザーの名前

email

yamada@example.com

メールアドレス

picture

https://...

プロフィール写真のURL

iss

https://accounts.google.com

トークン発行者

aud

your-app-client-id

トークンの対象アプリ

exp

1640995200

有効期限

💡 実際のIDトークンは暗号化されており、アプリが安全に検証・利用できます

実際のOIDCサービス例

🔍

Google

最も広く使われているOIDCプロバイダー

OIDCの特徴:

Gmail、YouTube、Drive等でのSSO
詳細なユーザープロフィール情報
厳格なセキュリティ基準
豊富な開発者ドキュメント
🏢

Microsoft

企業向けOIDCソリューションの代表格

OIDCの特徴:

Office 365、Teams、OneDrive等の統合
Active Directoryとの連携
エンタープライズ向けセキュリティ
多要素認証の標準サポート
🔐

Auth0

開発者向けOIDC専門サービス

OIDCの特徴:

複数プロバイダーの統合管理
カスタマイズ可能な認証フロー
詳細な認証ログとアナリティクス
開発者フレンドリーなAPI
🏢

Okta

エンタープライズ向けOIDCプラットフォーム

OIDCの特徴:

大規模組織向けSSO
高度なアクセス制御
コンプライアンス対応
ゼロトラストセキュリティ
☁️

Amazon Cognito

AWSクラウドのOIDCサービス

OIDCの特徴:

AWSサービスとの深い統合
スケーラブルな認証基盤
ソーシャルログイン対応
モバイルアプリ最適化
🔥

Firebase Auth

Google提供の開発者向けOIDC

OIDCの特徴:

モバイル・Web両対応
リアルタイムデータベース連携
匿名認証からアップグレード可能
簡単な実装とセットアップ

OIDCのセキュリティポイント

安全に使うための重要なポイント

IDトークンの検証

受け取ったIDトークンが本物か、署名を確認して検証する

HTTPS通信の徹底

全ての通信を暗号化し、トークンの盗聴を防ぐ

適切なスコープ設定

必要最小限の情報のみを要求し、プライバシーを保護

リダイレクトURIの検証

事前に登録したURIのみを許可し、悪意あるリダイレクトを防ぐ

トークンの適切な保存

IDトークンを安全に保存し、不要になったら削除する

定期的なトークン更新

有効期限を適切に設定し、定期的に新しいトークンを取得

信頼できるプロバイダー選択

実績のある信頼できるOIDCプロバイダーを選択する

監査ログの記録

認証・認可の履歴を記録し、セキュリティインシデントに備える

🎯 OIDCが実現する未来

🔐 セキュリティ向上

統一された認証により、パスワードの使い回しや弱いパスワードのリスクを削減

⚡ 利便性向上

一度のログインで複数サービス利用可能。ユーザー体験が大幅に改善

💰 コスト削減

開発・運用コストを削減し、セキュリティ専門知識も集約化

🎯 まとめ

OpenID Connect(OIDC)は、OAuth 2.0に「身元確認」機能を追加した現代的な認証標準です。

シングルサインオン(SSO)により「一度のログインで複数サービス利用」を実現し、
セキュリティと利便性を両立させています。

現在多くのサービスがOIDCを採用しており、
私たちの日常的なデジタル体験を支える重要な技術となっています。