Logo Logo
GitHub Designed by Logto

OpenID Connect (OIDC) ディスカバリーとは何ですか?

OpenID Connect (OIDC) ディスカバリーは、 OpenID Connect Discovery 1.0 で定義されており、 クライアント が OpenID プロバイダのエンドポイントと設定を自動的に発見することを可能にするメカニズムです。これは、クライアントと OpenID プロバイダ 間の通信を簡素化するための現代的なアプローチです。

OIDC ディスカバリーには2つの主要なコンポーネントがあります:

  • OpenID プロバイダ issuer (イシューア) ディスカバリー: クライアントは WebFinger やアウトオブバンド文書を介して issuer (イシューア) の場所(URL)を発見できます。
  • OpenID プロバイダ メタデータ: クライアントはメタデータ文書を取得して、OpenID プロバイダの機能とエンドポイントについて学ぶことができます。

OIDC ディスカバリーはどのように機能しますか?

OpenID プロバイダ issuer (イシューア) ディスカバリー

OpenID プロバイダの issuer (イシューア) はクライアントが OpenID プロバイダの設定を発見するために使用できる一意の識別子です(通常その URL と同じです)。ただし、クライアントはメタデータ文書を取得する前に issuer (イシューア) の場所を知っている必要があります。

もし issuer (イシューア) の場所が既にわかっている場合、クライアントは次のステップに進むことができます。それ以外の場合、クライアントは WebFinger を使用して issuer (イシューア) の場所を発見できます。OIDC issuer (イシューア) ディスカバリーに必要な情報は次のとおりです:

  • host: WebFinger サービスがホストされている場所。
  • resource: OpenID プロバイダのメールアドレスまたは URL。
  • rel: 関係タイプで、http://openid.net/specs/connect/1.0/issuer に設定する必要があります。

例えば、メールアドレスが [email protected] のユーザーが example.com 上の issuer (イシューア) の場所を発見しようとしている場合、WebFinger リクエストは次のようになります:

GET /.well-known/webfinger?resource=acct%3Afoo%40bar.com&
  rel=http%3A%2F%2Fopenid.net%2Fspecs%2Fconnect%2F1.0%2Fissuer HTTP/1.1
Host: example.com

デコードされた resource パラメータは acct:[email protected] で、rel パラメータは http://openid.net/specs/connect/1.0/issuer です。

OpenID プロバイダ メタデータ

クライアントが issuer (イシューア) の場所を知っていると、well-known エンドポイントからメタデータ文書を取得できます。メタデータ文書へのパスは、issuer (イシューア) の URL に相対的な /.well-known/openid-configuration です。

例えば、issuer (イシューア) の URL が https://oidc.example.com の場合、クライアントは https://oidc.example.com/.well-known/openid-configuration からメタデータ文書を取得できます。以下はメタデータ応答の非規範的な例です:

{
  "issuer": "https://oidc.example.com",
  "authorization_endpoint": "https://oidc.example.com/authorize",
  "token_endpoint": "https://oidc.example.com/token",
  //...
}

メタデータ文書には OpenID プロバイダに関する多くの有用な情報が含まれています。いくつかの主要なフィールドを挙げてみましょう:

メタデータフィールドの完全なリストについては、 OpenID Connect Discovery 1.0 仕様を参照してください。

関連項目