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

OpenID Connect とは?

💡 「誰であるか」をWebで安全に証明する仕組み
📌 このページのポイント
OpenID Connect = OAuth 2.0 + 認証レイヤー OAuth 2.0(認可レイヤー) アクセストークン リソースへのアクセス許可 スコープ read, write, etc. OpenID Connect(認証レイヤー) IDトークン (JWT) UserInfoエンドポイント ユーザー情報 名前・メール等 拡張 認証(誰であるか) 認可(何ができるか)
OpenID Connect のレイヤー構造イメージ
ひよこ ひよこ

OAuthOpenID Connectの違いは?

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

OAuth 2.0は「認可」のプロトコルで「このアプリにGoogleフォトへのアクセスを許可する」のような権限委譲を行う。OpenID Connectは「認証」のプロトコルで「この人はGoogleアカウントのユーザーXです」というアイデンティティ情報を提供する。OAuthが「鍵」、OIDCが「身分証明書」だよ

ひよこ ひよこ

IDトークンって何?

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

JWTJSON Web Token)形式のトークンで、ユーザーのID、メールアドレス、名前、認証日時などの情報が含まれているよ。デジタル署名付きだから改ざんを検知できる。アプリ側はIDトークンを検証することで、ユーザーが本人であることを確認するんだ

ひよこ ひよこ

SAMLとの違いは?

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

SAMLXMLベースで重厚な企業向けプロトコル(2002年〜)。OpenID ConnectJSON/JWTベースで軽量なモダンプロトコル(2014年〜)。新規開発ならOpenID Connect一択。ただし既存の企業システム(Active Directory等)との連携ではSAMLがまだ現役だよ

ひよこ ひよこ

実装する際の注意点は?

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

①stateパラメータCSRF攻撃を防止、②nonceパラメータでリプレイ攻撃を防止、③IDトークンの署名を必ず検証、④リダイレクトURIの厳密な一致チェック。自前で実装するよりAuth0やFirebase Authenticationなどの認証サービスを使うのが安全で楽だよ

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
OpenID Connect」って出てきたら「OAuth 2.0ベースのモダンな認証プロトコル」と思えればだいたいOK!
📖 おまけ:英語の意味
「OpenID Connect (OIDC)」 = オープンID接続
💬 OpenID Foundation が策定。OAuth 2.0に「誰?」を答える機能を足したものだよ
← 用語集にもどる