Skip to content

Fix and complete the discovery document (.well-known/openid-configuration). #189

Description

@OsscJpDevInfra

何をしたいか

.well-known/openid-configurationCmnEndpoints.OpenIDConfig)の
誤りを直し、実装済みなのに広告していない項目を足す。

https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/CommonLibrary/TokenProviders/CmnEndpoints.cs#L99-L349

なぜ必要か

Discovery は RP が最初に読む唯一の入口であり、
ここが実装とズレていると RP は正しく繋げられない。

不具合

# 現状 あるべき姿
1 キー名が "backchannel_token_delivery_modes_supported "末尾スペース スペースを取る。CIBA クライアントがこのキーを見つけられない
2 mutual_tls_sender_constrained_access_tokens: "true" RFC 8705 §3.3 の正式名は tls_client_certificate_bound_access_tokens、値は boolean
3 backchannel_user_code_parameter_supported: "false" boolean
4 backchannel_authentication_request_signing_alg_values_supported: "ES256" 配列
5 id_token_encryption_alg_values_supported のみ id_token_encryption_enc_values_supported も対で必要

該当:
https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/CommonLibrary/TokenProviders/CmnEndpoints.cs#L329

実装済みなのに広告していない

# 項目
6 device_authorization_endpoint(RFC 8628 §4)。/device_authz を公開しているのに載せていない
7 grant_types_supported に device_code が無い。Config.EnableDeviceAuthZGrantType が Discovery から一度も参照されていない
8 JARM の authorization_signing_alg_values_supportedresponse_modes_supportedquery.jwt 等を載せているのに alg が無い

検討事項

# 項目
9 code_challenge_methods_supportedplain が入っている。OAuth 2.1 / FAPI は S256 のみ
10 subject_types_supporteduname は独自拡張(登録済みの値は public / pairwise)。#151 と関連
11 request_object_endpoint は独自名。PAR(RFC 9126)へ寄せるなら pushed_authorization_request_endpoint
12 service_documentation"・・・" のまま
13 claims_supportedprofile / address 系のクレームが無い(そもそも未実装。別 Issue)
14 end_session_endpoint / registration_endpoint / authorization_response_iss_parameter_supported が無い(いずれも未実装。#129 と関連)

1 〜 8 を本 Issue で直す。9 〜 14 は仕様方針の判断を伴うので、別 Issue に切り出す。

OpenIDConfig()Dictionary<string, object> を組み立てるだけの 250 行のメソッドなので、
値の型(boolean / 配列 / 文字列)を仕様に合わせて置き換えるだけで済む。

影響

利用者への影響: 有り。

  • Discovery のキー名と値の型が変わる。現状の誤った形を前提に読んでいる RP は追随が必要
    (特に 1 のキー名)。
  • device_authorization_endpoint が出ることで、Device Flow 対応 RP の自動設定が通るようになる。
  • net48 / net10.0 の両方に効く(CommonLibrary の共通コード)。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions