「Googleでログイン」などのシングルサインオンを支える最新の認証プロトコル「OpenID Connect (OIDC)」の仕組みと、OAuth 2.0との違いを初学者向けに解説します。
OpenID Connect (OIDC) とは?
OpenID Connect(オープンアイディ・コネクト、通称 OIDC)とは、現代のWebアプリケーションやモバイルアプリにおいて、「ユーザーの認証(ログイン)」と「ユーザー情報(属性情報)の受け渡し」を安全に行うための国際標準プロトコル(通信規格) です。
私たちが日常的に利用している「Googleでログイン」「Appleでログイン」「LINEでログイン」といった便利な機能(ソーシャルログインやシングルサインオン)の裏側では、ほとんどの場合このOIDCが動いています。
OAuth 2.0 の「欠点」を補うために誕生
OIDCを理解する上で欠かせないのが、その土台となっている「OAuth 2.0(オーオース)」という規格です。
OAuth 2.0は本来、「認可(Authorization)」、つまり「あるアプリに自分のデータへのアクセス権限を与える」ための規格でした。しかし、その利便性の高さから、過去にはOAuth 2.0の仕組みを無理やり「認証(ログイン)」に転用するケースが多発しました。これを「疑似認証」と呼びますが、本来ログイン用に作られていない規格を使ったため、セキュリティ上の脆弱性(アカウント乗っ取りリスクなど)を引き起こす原因となっていました。
そこで、**「OAuth 2.0の便利な仕組みをベースにしつつ、安全に『認証』を行えるように拡張しよう」**として策定されたのが、OpenID Connect (OIDC) です。簡単に言えば、OIDC = OAuth 2.0 + IDトークン(認証情報) という構成になっています。
OIDCの革新的な仕組み:IDトークン
OIDCの最大の特徴であり、OAuth 2.0との決定的な違いは、**「IDトークン(ID Token)」**と呼ばれるデータを扱う点にあります。
OAuth 2.0では、データにアクセスするための「アクセストークン(Access Token)」のみが発行されていました(例えるなら、部屋に入るための鍵)。 一方OIDCでは、アクセストークンに加えて「IDトークン」が発行されます。IDトークンは例えるなら**「身分証明書」**です。
IDトークンの中身は JWT (JSON Web Token) というフォーマットで書かれており、以下のような情報が安全に格納されています。
- iss: 誰が発行したか(例:Googleの認証サーバー)
- sub: ユーザーの一意な識別子(ユーザーID)
- aud: 誰に向けて発行されたか(アプリのID)
- exp: この証明書の有効期限
- iat: いつ認証が行われたか
アプリ側(サービス提供者)は、受け取ったIDトークンの「デジタル署名」を検証することで、「間違いなくGoogleが認証した本物のユーザーだ」と判断し、ログインを許可することができます。
OIDCのメリットと普及
OIDCが現在デファクトスタンダード(事実上の標準)として広く普及している理由は以下の通りです。
- 開発の容易さ(REST/JSONベース): 企業システムで主流だった「SAML」という古い規格はXMLベースで複雑でしたが、OIDCはWeb開発者に馴染み深いJSONやREST APIをベースにしているため、実装が非常に容易です。
- モバイルアプリへの親和性: スマートフォンアプリやシングルページアプリケーション(SPA)といったモダンなアーキテクチャに最適化されています。
- セキュリティと標準化: OAuth 2.0の脆弱性を塞ぐ標準的なルールが整備されており、OpenID Foundationによって厳格に管理されています。
OIDCは、現代のアイデンティティインフラにおいて最も重要なプロトコルであり、開発者やセキュリティ担当者にとって必須の知識と言えます。
この記事を書いた人:19kl42 編集部
デジタルアイデンティティ、eKYC、プライバシー保護などの複雑な仕組みを「共通言語」へと翻訳して発信しています。誰もが「デジタルな自分」を正しく扱い、信頼をデザインできる社会を目指しています。
