【おーぷんあいでぃーこねくと】

OpenID Connect(オープンアイディーコネクト) とは?

💡 身分証明書を持ち歩かなくても、信頼できる人が「この人は本人です」と証明してくれる仕組み
📌 このページのポイント
OpenID Connect ログインの流れ ユーザー ログインしたい Webサービス (リライングパーティ) IDプロバイダー Google, GitHub等 (IdP) 1 2 3 認証画面 4 認可コード 5 交換 6 IDトークン 7 完了! IDトークン(JWT形式) ユーザーID・メール・認証時刻 + 電子署名で改ざん防止
OpenID Connectのイメージ
ひよこ ひよこ

Googleでログイン」ってボタンをよく見るけど、あれってどういう仕組みなの?

ペンギン先生 ペンギン先生

あれはOpenID Connect(OIDC)という仕組みを使っているよ。Googleが「この人はたしかにGoogleアカウントの持ち主です」と証明してくれて、それを使って別のサービスにログインできるんだ

ひよこ ひよこ

つまりGoogleが身分証明をしてくれるってことなんだね!

ペンギン先生 ペンギン先生

そうそう。OIDCではGoogleのような認証を行う側を「IDプロバイダー(IdP)」と呼ぶよ。ユーザーはIdPにログインするだけで、対応している色んなサービスに追加のパスワードなしでログインできるんだ

ひよこ ひよこ

OAuthっていうのも聞いたことあるけど、何が違うの?

ペンギン先生 ペンギン先生

いい質問だね。OAuthは「認可」の仕組みで、「このアプリにGoogleドライブへのアクセスを許可しますか?」のように権限を委譲するものなんだ。でもOAuthだけだと「この人は誰か」という認証はできない。OIDCはOAuth 2.0の上にIDトークンという仕組みを追加して、認証もできるようにしたものだよ

ひよこ ひよこ

IDトークンって何なの?

ペンギン先生 ペンギン先生

IDトークンJWTJSON Web Token)という形式のデータで、ユーザーのIDやメールアドレス、認証した時刻などが入っているよ。電子署名付きだから改ざんもできない。サービス側はこのトークンを受け取るだけでユーザーを特定できるんだ

ひよこ ひよこ

サービスを作る側にとってもメリットがあるの?

ペンギン先生 ペンギン先生

大きいよ。自前でパスワードを管理しなくていいから、パスワード漏洩のリスクがなくなる。ユーザー登録のハードルも下がるし、MFAのような高度なセキュリティもIdP側に任せられるんだ

ひよこ ひよこ

便利だけど、Google側に依存しすぎない?

ペンギン先生 ペンギン先生

鋭い指摘だね。実際、IdPが障害を起こすとログインできなくなるリスクはある。だから本格的なサービスでは複数のIdPに対応したり、メールアドレスとパスワードでのログインも残しておくのが一般的だよ。ちなみにOIDCの仕様には「Discovery」という仕組みがあって、IdPの設定情報を自動取得できるから、複数IdP対応も比較的簡単にできるんだ

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「OpenID Connect」って出てきたら「OAuth 2.0ベースの"この人は誰か"を証明する仕組み」と思えればだいたいOK!
📖 おまけ:英語の意味
「OpenID Connect」 = オープンID接続
💬 OpenIDは「誰でもオープンに使えるID認証」という意味で、ConnectはOAuth 2.0と「接続」して認証を実現することを表しているよ。略称はOIDCだよ
← 用語集にもどる