何をしたいか
.well-known/openid-configuration(CmnEndpoints.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_supported。response_modes_supported に query.jwt 等を載せているのに alg が無い |
検討事項
| # |
項目 |
| 9 |
code_challenge_methods_supported に plain が入っている。OAuth 2.1 / FAPI は S256 のみ |
| 10 |
subject_types_supported の uname は独自拡張(登録済みの値は public / pairwise)。#151 と関連 |
| 11 |
request_object_endpoint は独自名。PAR(RFC 9126)へ寄せるなら pushed_authorization_request_endpoint |
| 12 |
service_documentation が "・・・" のまま |
| 13 |
claims_supported に profile / 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 の共通コード)。
何をしたいか
.well-known/openid-configuration(CmnEndpoints.OpenIDConfig)の誤りを直し、実装済みなのに広告していない項目を足す。
https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/CommonLibrary/TokenProviders/CmnEndpoints.cs#L99-L349
なぜ必要か
Discovery は RP が最初に読む唯一の入口であり、
ここが実装とズレていると RP は正しく繋げられない。
不具合
"backchannel_token_delivery_modes_supported "(末尾スペース)mutual_tls_sender_constrained_access_tokens: "true"tls_client_certificate_bound_access_tokens、値は booleanbackchannel_user_code_parameter_supported: "false"backchannel_authentication_request_signing_alg_values_supported: "ES256"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
実装済みなのに広告していない
device_authorization_endpoint(RFC 8628 §4)。/device_authzを公開しているのに載せていないgrant_types_supportedに device_code が無い。Config.EnableDeviceAuthZGrantTypeが Discovery から一度も参照されていないauthorization_signing_alg_values_supported。response_modes_supportedにquery.jwt等を載せているのに alg が無い検討事項
code_challenge_methods_supportedにplainが入っている。OAuth 2.1 / FAPI はS256のみsubject_types_supportedのunameは独自拡張(登録済みの値はpublic/pairwise)。#151 と関連request_object_endpointは独自名。PAR(RFC 9126)へ寄せるならpushed_authorization_request_endpointservice_documentationが"・・・"のままclaims_supportedにprofile/address系のクレームが無い(そもそも未実装。別 Issue)end_session_endpoint/registration_endpoint/authorization_response_iss_parameter_supportedが無い(いずれも未実装。#129 と関連)案
1 〜 8 を本 Issue で直す。9 〜 14 は仕様方針の判断を伴うので、別 Issue に切り出す。
OpenIDConfig()はDictionary<string, object>を組み立てるだけの 250 行のメソッドなので、値の型(boolean / 配列 / 文字列)を仕様に合わせて置き換えるだけで済む。
影響
利用者への影響: 有り。
(特に 1 のキー名)。
device_authorization_endpointが出ることで、Device Flow 対応 RP の自動設定が通るようになる。CommonLibraryの共通コード)。