OpenID Connect Core 1.0

OpenID Connect Core 1.0

OAuth 2.0の上に認証レイヤーを追加し、ID Token、UserInfo、標準Claimsによる本人確認を定義します。

STATUSIdentity layer on OAuth 2.0FLOWS3 documentedPrimary specification ↗

この仕様は、
何を解決するのか。

ログイン、SSO、ID Token、UserInfoを正しく実装し、OAuthの認可との違いを理解したい人向けです。

OpenID ConnectはOAuth 2.0の上に本人確認の仕組みを追加する認証仕様です。OAuthのアクセストークンはAPIを利用するための許可証ですが、それだけでは『ログインした人が誰か』をClientが安全に判断できません。

OIDCでは認可リクエストへopenid scopeを追加し、認証結果を署名付きJWTであるID Tokenとして受け取ります。Clientは署名だけでなく、issuer、audience、有効期限、nonceを検証し、自分のために発行された新しい認証結果であることを確認します。

仕様が定める、大切なこと。

01

認証結果を標準化する

ID Tokenのclaimsによって、誰が、どのProviderで、いつ認証されたかをClientへ伝えます。

02

複数サービスでログインを共有する

Clientごとにパスワードを管理せず、信頼するOpenID Providerへ本人確認を集約できます。

03

プロフィール取得を共通化する

UserInfo Endpointと標準claimsにより、sub、name、emailなどの受け渡し方法を統一します。

01ID Token02openid Scope03Nonce04UserInfo05Standard Claims

安全に使うための確認事項。

仕様を実装するときは、正常系の通信だけでなく、値のすり替え、再利用、漏えいが起きた場合も考えます。

  1. 01

    ID Tokenはアクセストークンの代わりにAPIへ送らず、Clientが認証結果を確認するために使います。

  2. 02

    JWKSで署名を検証し、iss、aud、exp、iat、nonceを用途に応じて確認します。

  3. 03

    subをユーザーの安定した識別子として使い、表示名やemailだけでアカウントを結び付けません。

  4. 04

    UserInfoを利用する場合、応答のsubがID Tokenのsubと一致することを確認します。

この仕様に属するフロー

ほかの仕様との関係

OIDC CoreはOAuth 2.0 Authorization Code Flowを利用します。DiscoveryはProviderのEndpointや機能を公開し、Dynamic RegistrationはClient登録を標準化します。CIBAはブラウザリダイレクトを使わないOIDCの追加認証フローです。

OAuth 2.0 (RFC 6749)The OAuth 2.0 Authorization FrameworkOAuth 2.0 Device Authorization (RFC 8628)OAuth 2.0 Device Authorization GrantOAuth 2.1OAuth 2.1 Authorization FrameworkFIDO2 WebAuthn Level 3Web Authentication: Public Key CredentialsFIDO2 CTAP 2.2Client to Authenticator ProtocolFIDO UAF 1.1Universal Authentication FrameworkFIDO U2F 1.2Universal Second FactorOpenID Connect CIBA Core 1.0Client-Initiated Backchannel AuthenticationOAuth 2.0 PKCE (RFC 7636)Proof Key for Code Exchange by OAuth Public ClientsJSON Web Token (RFC 7519)JSON Web Token (JWT)OAuth 2.0 DPoP (RFC 9449)OAuth 2.0 Demonstrating Proof of PossessionSAML 2.0Security Assertion Markup Language 2.0SCIM 2.0 (RFC 7644)System for Cross-domain Identity Management: Protocol