rodauth-ciba 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (88) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +34 -0
  3. data/LICENSE +21 -0
  4. data/README.md +106 -0
  5. data/docs/adr/0003-follow-rodauth-hook-conventions.md +9 -0
  6. data/docs/adr/0004-retain-atomic-issuance-and-stage-alignment.md +16 -0
  7. data/docs/alignment-closeout.md +136 -0
  8. data/docs/alignment-roadmap.md +160 -0
  9. data/docs/api.md +337 -0
  10. data/docs/authentication-claims.md +80 -0
  11. data/docs/authorization-details.md +50 -0
  12. data/docs/claims.md +46 -0
  13. data/docs/failure-contract.md +34 -0
  14. data/docs/id-token-encryption.md +288 -0
  15. data/docs/id-token-hint.md +174 -0
  16. data/docs/login-hint-token.md +35 -0
  17. data/docs/max-age.md +65 -0
  18. data/docs/node-alignment.md +336 -0
  19. data/docs/operations.md +130 -0
  20. data/docs/outbound-http.md +52 -0
  21. data/docs/pairwise.md +76 -0
  22. data/docs/ping.md +118 -0
  23. data/docs/protocol-coverage.md +114 -0
  24. data/docs/refresh-tokens.md +151 -0
  25. data/docs/release-readiness.md +75 -0
  26. data/docs/release-validation.md +498 -0
  27. data/docs/request-context.md +51 -0
  28. data/docs/requirements-audit-current.json +3221 -0
  29. data/docs/requirements-audit-current.md +424 -0
  30. data/docs/requirements-audit.json +3190 -0
  31. data/docs/requirements-audit.md +175 -0
  32. data/docs/research/access-token-revocation-reference.md +81 -0
  33. data/docs/research/alignment-partial-triage.md +50 -0
  34. data/docs/research/claims-reference-contract.md +33 -0
  35. data/docs/research/client-assertion-algorithm-contract.md +177 -0
  36. data/docs/research/completion-error-boundaries.md +56 -0
  37. data/docs/research/consent-api-evolution.md +59 -0
  38. data/docs/research/dpop-reference-contract.md +423 -0
  39. data/docs/research/id-token-hint-reference-contract.md +254 -0
  40. data/docs/research/mtls-reference-contract.md +449 -0
  41. data/docs/research/node-ciba-lifecycle.md +30 -0
  42. data/docs/research/node-oidc-provider-comparison.md +45 -0
  43. data/docs/research/pairwise-reference-contract.md +264 -0
  44. data/docs/research/ping-reference-contract.md +165 -0
  45. data/docs/research/rar-reference-contract.md +55 -0
  46. data/docs/research/refresh-reference-contract.md +85 -0
  47. data/docs/research/registration-reference-contract.md +567 -0
  48. data/docs/research/request-parameter-inventory.md +42 -0
  49. data/docs/research/required-parameter-inventory.md +39 -0
  50. data/docs/research/resource-reference-contract.md +40 -0
  51. data/docs/research/signed-request-reference-contract.md +113 -0
  52. data/docs/resources.md +55 -0
  53. data/docs/security-review.md +294 -0
  54. data/docs/signed-requests.md +162 -0
  55. data/docs/user-code.md +73 -0
  56. data/docs/validation/node-alignment-tests.txt +10 -0
  57. data/examples/client.rb +39 -0
  58. data/examples/demo_app.rb +121 -0
  59. data/examples/dpop_smoke.rb +169 -0
  60. data/examples/ecdh_id_token_smoke.rb +84 -0
  61. data/examples/edwards_id_token_smoke.rb +48 -0
  62. data/examples/edwards_smoke.rb +87 -0
  63. data/examples/edwards_tls_smoke.rb +73 -0
  64. data/examples/encrypted_id_token_smoke.rb +73 -0
  65. data/examples/encryption_tls_smoke.rb +123 -0
  66. data/examples/extensions_smoke.rb +226 -0
  67. data/examples/fixtures/edwards-requests.json +30 -0
  68. data/examples/hmac_id_token_smoke.rb +72 -0
  69. data/examples/migration.rb +18 -0
  70. data/examples/mtls_smoke.rb +395 -0
  71. data/examples/ping_smoke.rb +226 -0
  72. data/examples/registration_smoke.rb +73 -0
  73. data/examples/server.rb +14 -0
  74. data/examples/smoke.rb +46 -0
  75. data/examples/symmetric_id_token_smoke.rb +83 -0
  76. data/lib/rodauth/ciba/authorization_details.rb +60 -0
  77. data/lib/rodauth/ciba/dpop.rb +250 -0
  78. data/lib/rodauth/ciba/http.rb +69 -0
  79. data/lib/rodauth/ciba/id_token_encryption.rb +175 -0
  80. data/lib/rodauth/ciba/jwks_cache.rb +149 -0
  81. data/lib/rodauth/ciba/mtls.rb +174 -0
  82. data/lib/rodauth/ciba/pairwise.rb +105 -0
  83. data/lib/rodauth/ciba/registration.rb +489 -0
  84. data/lib/rodauth/ciba/schema.rb +182 -0
  85. data/lib/rodauth/ciba/version.rb +6 -0
  86. data/lib/rodauth/ciba.rb +4 -0
  87. data/lib/rodauth/features/ciba.rb +2185 -0
  88. metadata +231 -0
@@ -0,0 +1,3190 @@
1
+ {
2
+ "title": "CIBA Core 1.0 requirement audit",
3
+ "as_of": "2026-09-29",
4
+ "scope_note": "159 catalog rows are an authored decomposition, not an official total. Historical 2026-09-29 initial poll/login_hint-scope snapshot, predating later optional extensions. Judged against primary CIBA Core text and repository implementation at that time; Jev scores are not treated as ground truth.",
5
+ "status_legend": {
6
+ "verified": "visible implementation and direct test evidence (not full certification)",
7
+ "gap": "in-scope mandatory requirement with an identified unverified/absent control",
8
+ "app_contract": "アプリまたは運用を含む契約。gem単体で合否判定しない",
9
+ "client_only": "CIBA client duty outside this OP gem",
10
+ "optional_excluded": "optional capability or intentionally excluded first-version feature",
11
+ "code_review_only": "コード確認のみ。テストで要件全体を証明していない",
12
+ "evidence_gap": "実装根拠または直接証拠が不足"
13
+ },
14
+ "items": [
15
+ {
16
+ "id": "CIBA-001",
17
+ "section": "4",
18
+ "label": "CIBA grant識別子",
19
+ "requirement": "Use urn:openid:params:grant-type:ciba as the CIBA extension grant identifier.",
20
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.4",
21
+ "normative_strength": "Specification definition (fixed grant value; no MUST/REQUIRED keyword)",
22
+ "conditional": false,
23
+ "first_version": "in scope",
24
+ "responsibility": "gem",
25
+ "audit_status": "verified",
26
+ "evidence": "直接テストでこの挙動を確認: test/ciba_protocol_test.rb#test_discovery_describes_poll_and_keeps_existing_oidc_metadata, test/ciba_configuration_test.rb#test_upstream_jwt_authentication_coexists_with_ciba_and_discovery. 実装根拠はJSONのcode_refs。",
27
+ "code_refs": [
28
+ "ciba_metadata",
29
+ "oauth_grant_types_supported",
30
+ "ciba_client_eligible?",
31
+ "post_configure"
32
+ ],
33
+ "test_refs": [
34
+ "test/ciba_protocol_test.rb#test_discovery_describes_poll_and_keeps_existing_oidc_metadata",
35
+ "test/ciba_configuration_test.rb#test_upstream_jwt_authentication_coexists_with_ciba_and_discovery"
36
+ ],
37
+ "normative_basis": "§4 / CIBA grant識別子: Specification definition (fixed grant value; no MUST/REQUIRED keyword)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
38
+ "source_clause_locator": "CIBA Core section 4; catalog label: CIBA grant識別子; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.4"
39
+ },
40
+ {
41
+ "id": "CIBA-002",
42
+ "section": "4",
43
+ "label": "Discoveryの対応モード",
44
+ "requirement": "Publish required backchannel_token_delivery_modes_supported as an array of actually supported poll/ping/push modes.",
45
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.4",
46
+ "normative_strength": "必須(MUST / REQUIRED)",
47
+ "conditional": false,
48
+ "first_version": "in scope",
49
+ "responsibility": "gem",
50
+ "audit_status": "verified",
51
+ "evidence": "直接テストでこの挙動を確認: test/ciba_protocol_test.rb#test_discovery_describes_poll_and_keeps_existing_oidc_metadata. 実装根拠はJSONのcode_refs。",
52
+ "code_refs": [
53
+ "ciba_metadata",
54
+ "oauth_grant_types_supported",
55
+ "ciba_client_eligible?",
56
+ "post_configure"
57
+ ],
58
+ "test_refs": [
59
+ "test/ciba_protocol_test.rb#test_discovery_describes_poll_and_keeps_existing_oidc_metadata"
60
+ ],
61
+ "normative_basis": "§4 / Discoveryの対応モード: 必須(MUST / REQUIRED)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
62
+ "source_clause_locator": "CIBA Core section 4; catalog label: Discoveryの対応モード; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.4"
63
+ },
64
+ {
65
+ "id": "CIBA-003",
66
+ "section": "4",
67
+ "label": "Discoveryの開始URL",
68
+ "requirement": "Publish required backchannel_authentication_endpoint as the actual Backchannel Endpoint URL.",
69
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.4",
70
+ "normative_strength": "必須(MUST / REQUIRED)",
71
+ "conditional": false,
72
+ "first_version": "in scope",
73
+ "responsibility": "gem",
74
+ "audit_status": "verified",
75
+ "evidence": "直接テストでこの挙動を確認: test/ciba_protocol_test.rb#test_discovery_describes_poll_and_keeps_existing_oidc_metadata. 実装根拠はJSONのcode_refs。",
76
+ "code_refs": [
77
+ "ciba_metadata",
78
+ "oauth_grant_types_supported",
79
+ "ciba_client_eligible?",
80
+ "post_configure"
81
+ ],
82
+ "test_refs": [
83
+ "test/ciba_protocol_test.rb#test_discovery_describes_poll_and_keeps_existing_oidc_metadata"
84
+ ],
85
+ "normative_basis": "§4 / Discoveryの開始URL: 必須(MUST / REQUIRED)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
86
+ "source_clause_locator": "CIBA Core section 4; catalog label: Discoveryの開始URL; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.4"
87
+ },
88
+ {
89
+ "id": "CIBA-004",
90
+ "section": "4",
91
+ "label": "署名要求の対応表明",
92
+ "requirement": "Only advertise backchannel_authentication_request_signing_alg_values_supported when signed requests are supported; omission means unsupported.",
93
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.4",
94
+ "normative_strength": "任意(OP may omit; absence says unsupported)",
95
+ "conditional": true,
96
+ "first_version": "in scope",
97
+ "responsibility": "gem",
98
+ "audit_status": "verified",
99
+ "evidence": "直接テストでこの挙動を確認: test/ciba_protocol_test.rb#test_discovery_describes_poll_and_keeps_existing_oidc_metadata. 実装根拠はJSONのcode_refs。",
100
+ "code_refs": [
101
+ "ciba_metadata",
102
+ "oauth_grant_types_supported",
103
+ "ciba_client_eligible?",
104
+ "post_configure"
105
+ ],
106
+ "test_refs": [
107
+ "test/ciba_protocol_test.rb#test_discovery_describes_poll_and_keeps_existing_oidc_metadata"
108
+ ],
109
+ "normative_basis": "§4 / 署名要求の対応表明: 任意(OP may omit; absence says unsupported)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
110
+ "source_clause_locator": "CIBA Core section 4; catalog label: 署名要求の対応表明; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.4"
111
+ },
112
+ {
113
+ "id": "CIBA-005",
114
+ "section": "4",
115
+ "label": "user_codeの対応表明",
116
+ "requirement": "Publish user_code support truthfully; absent backchannel_user_code_parameter_supported defaults to false.",
117
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.4",
118
+ "normative_strength": "任意(OP may omit; omitted means false)",
119
+ "conditional": false,
120
+ "first_version": "in scope",
121
+ "responsibility": "gem",
122
+ "audit_status": "verified",
123
+ "evidence": "直接テストでこの挙動を確認: test/ciba_protocol_test.rb#test_discovery_describes_poll_and_keeps_existing_oidc_metadata. 実装根拠はJSONのcode_refs。",
124
+ "code_refs": [
125
+ "ciba_metadata",
126
+ "oauth_grant_types_supported",
127
+ "ciba_client_eligible?",
128
+ "post_configure"
129
+ ],
130
+ "test_refs": [
131
+ "test/ciba_protocol_test.rb#test_discovery_describes_poll_and_keeps_existing_oidc_metadata"
132
+ ],
133
+ "normative_basis": "§4 / user_codeの対応表明: 任意(OP may omit; omitted means false)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
134
+ "source_clause_locator": "CIBA Core section 4; catalog label: user_codeの対応表明; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.4"
135
+ },
136
+ {
137
+ "id": "CIBA-006",
138
+ "section": "4",
139
+ "label": "Discoveryのgrant_types",
140
+ "requirement": "Include the CIBA grant in grant_types_supported when supporting poll or ping.",
141
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.4",
142
+ "normative_strength": "仕様定義(poll/pingのgrant_types_supported。MUSTという語ではない)",
143
+ "conditional": true,
144
+ "first_version": "in scope",
145
+ "responsibility": "gem",
146
+ "audit_status": "verified",
147
+ "evidence": "直接テストでこの挙動を確認: test/ciba_protocol_test.rb#test_discovery_describes_poll_and_keeps_existing_oidc_metadata. 実装根拠はJSONのcode_refs。",
148
+ "code_refs": [
149
+ "ciba_metadata",
150
+ "oauth_grant_types_supported",
151
+ "ciba_client_eligible?",
152
+ "post_configure"
153
+ ],
154
+ "test_refs": [
155
+ "test/ciba_protocol_test.rb#test_discovery_describes_poll_and_keeps_existing_oidc_metadata"
156
+ ],
157
+ "normative_basis": "§4 / Discoveryのgrant_types: 仕様定義(poll/pingのgrant_types_supported。MUSTという語ではない)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
158
+ "source_clause_locator": "CIBA Core section 4; catalog label: Discoveryのgrant_types; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.4"
159
+ },
160
+ {
161
+ "id": "CIBA-007",
162
+ "section": "4",
163
+ "label": "認証方式メタデータの共有",
164
+ "requirement": "Backchannel authentication methods match token_endpoint_auth_methods_supported.",
165
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.4",
166
+ "normative_strength": "Specification definition (metadata consistency; no MUST/REQUIRED keyword)",
167
+ "conditional": false,
168
+ "first_version": "in scope",
169
+ "responsibility": "gem + upstream",
170
+ "audit_status": "verified",
171
+ "evidence": "Direct test verifies OAuth/OIDC Discovery auth method metadata equality and successful requests for the tested RS256 configuration; this does not establish coverage of every upstream auth method.",
172
+ "code_refs": [
173
+ "ciba_metadata",
174
+ "oauth_grant_types_supported",
175
+ "ciba_client_eligible?",
176
+ "post_configure"
177
+ ],
178
+ "test_refs": [
179
+ "test/ciba_security_test.rb#test_discovery_preserves_upstream_authentication_algorithms_for_both_endpoints"
180
+ ],
181
+ "normative_basis": "§4 / 認証方式メタデータの共有: Specification definition (metadata consistency; no MUST/REQUIRED keyword)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
182
+ "source_clause_locator": "CIBA Core section 4; catalog label: 認証方式メタデータの共有; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.4"
183
+ },
184
+ {
185
+ "id": "CIBA-008",
186
+ "section": "4",
187
+ "label": "認証署名アルゴリズムの共有",
188
+ "requirement": "When applicable Backchannel authentication signing algorithms match token_endpoint_auth_signing_alg_values_supported.",
189
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.4",
190
+ "normative_strength": "Conditional specification definition (metadata consistency; no MUST/REQUIRED keyword)",
191
+ "conditional": true,
192
+ "first_version": "in scope",
193
+ "responsibility": "gem + upstream",
194
+ "audit_status": "verified",
195
+ "evidence": "Direct test verifies metadata equality and tested RS256 configuration only; do not generalize to every algorithm.",
196
+ "code_refs": [
197
+ "ciba_metadata",
198
+ "oauth_grant_types_supported",
199
+ "ciba_client_eligible?",
200
+ "post_configure"
201
+ ],
202
+ "test_refs": [
203
+ "test/ciba_security_test.rb#test_discovery_preserves_upstream_authentication_algorithms_for_both_endpoints"
204
+ ],
205
+ "normative_basis": "§4 / 認証署名アルゴリズムの共有: Conditional specification definition (metadata consistency; no MUST/REQUIRED keyword)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
206
+ "source_clause_locator": "CIBA Core section 4; catalog label: 認証署名アルゴリズムの共有; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.4"
207
+ },
208
+ {
209
+ "id": "CIBA-009",
210
+ "section": "4",
211
+ "label": "登録済み配送モード",
212
+ "requirement": "Require a registered single backchannel_token_delivery_mode from poll/ping/push for a CIBA client.",
213
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.4",
214
+ "normative_strength": "必須(MUST / REQUIRED)",
215
+ "conditional": false,
216
+ "first_version": "in scope",
217
+ "responsibility": "gem",
218
+ "audit_status": "verified",
219
+ "evidence": "直接テストでこの挙動を確認: test/ciba_configuration_test.rb#test_unavailable_or_unsupported_client_metadata_is_rejected. 実装根拠はJSONのcode_refs。",
220
+ "code_refs": [
221
+ "ciba_metadata",
222
+ "oauth_grant_types_supported",
223
+ "ciba_client_eligible?",
224
+ "post_configure"
225
+ ],
226
+ "test_refs": [
227
+ "test/ciba_configuration_test.rb#test_unavailable_or_unsupported_client_metadata_is_rejected"
228
+ ],
229
+ "normative_basis": "§4 / 登録済み配送モード: 必須(MUST / REQUIRED)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
230
+ "source_clause_locator": "CIBA Core section 4; catalog label: 登録済み配送モード; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.4"
231
+ },
232
+ {
233
+ "id": "CIBA-010",
234
+ "section": "4",
235
+ "label": "CIBA grantのクライアント登録",
236
+ "requirement": "Poll/ping clients register the CIBA grant in grant_types; enforce eligibility before accepting their requests.",
237
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.4",
238
+ "normative_strength": "必須(MUST / REQUIRED)",
239
+ "conditional": false,
240
+ "first_version": "in scope",
241
+ "responsibility": "gem",
242
+ "audit_status": "verified",
243
+ "evidence": "直接テストでこの挙動を確認: test/ciba_configuration_test.rb#test_dcr_rejects_ciba_but_preserves_other_grant_validation, test/ciba_configuration_test.rb#test_unavailable_or_unsupported_client_metadata_is_rejected. 実装根拠はJSONのcode_refs。",
244
+ "code_refs": [
245
+ "ciba_metadata",
246
+ "oauth_grant_types_supported",
247
+ "ciba_client_eligible?",
248
+ "post_configure"
249
+ ],
250
+ "test_refs": [
251
+ "test/ciba_configuration_test.rb#test_dcr_rejects_ciba_but_preserves_other_grant_validation",
252
+ "test/ciba_configuration_test.rb#test_unavailable_or_unsupported_client_metadata_is_rejected"
253
+ ],
254
+ "normative_basis": "§4 / CIBA grantのクライアント登録: 必須(MUST / REQUIRED)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
255
+ "source_clause_locator": "CIBA Core section 4; catalog label: CIBA grantのクライアント登録; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.4"
256
+ },
257
+ {
258
+ "id": "CIBA-011",
259
+ "section": "4",
260
+ "label": "通知URL登録",
261
+ "requirement": "Ping/push clients register an HTTPS backchannel_client_notification_endpoint.",
262
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.4",
263
+ "normative_strength": "条件付き必須(該当機能/条件時 MUST)",
264
+ "conditional": true,
265
+ "first_version": "excluded",
266
+ "responsibility": "app",
267
+ "audit_status": "optional_excluded",
268
+ "evidence": "適用条件となる機能を初版では提供しない。非対応の表明・入口拒否は別の適用内要件で確認する。",
269
+ "code_refs": [],
270
+ "test_refs": [],
271
+ "normative_basis": "§4 / 通知URL登録: 条件付き必須(該当機能/条件時 MUST)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
272
+ "source_clause_locator": "CIBA Core section 4; catalog label: 通知URL登録; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.4"
273
+ },
274
+ {
275
+ "id": "CIBA-012",
276
+ "section": "4",
277
+ "label": "署名要求アルゴリズム登録",
278
+ "requirement": "Clients intending signed authentication requests register the signature algorithm; omission means unsigned requests.",
279
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.4",
280
+ "normative_strength": "条件付き必須(該当機能/条件時 MUST)",
281
+ "conditional": true,
282
+ "first_version": "excluded",
283
+ "responsibility": "gem (excluded capability)",
284
+ "audit_status": "optional_excluded",
285
+ "evidence": "適用条件となる機能を初版では提供しない。非対応の表明・入口拒否は別の適用内要件で確認する。",
286
+ "code_refs": [],
287
+ "test_refs": [],
288
+ "normative_basis": "§4 / 署名要求アルゴリズム登録: 条件付き必須(該当機能/条件時 MUST)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
289
+ "source_clause_locator": "CIBA Core section 4; catalog label: 署名要求アルゴリズム登録; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.4"
290
+ },
291
+ {
292
+ "id": "CIBA-013",
293
+ "section": "4",
294
+ "label": "user_codeクライアント設定",
295
+ "requirement": "Respect backchannel_user_code_parameter only when OP user_code support is enabled; omitted value defaults false.",
296
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.4",
297
+ "normative_strength": "Optional client metadata (OPTIONAL; only applies when OP support is true)",
298
+ "conditional": true,
299
+ "first_version": "excluded",
300
+ "responsibility": "gem (excluded capability)",
301
+ "audit_status": "optional_excluded",
302
+ "evidence": "適用条件となる機能を初版では提供しない。非対応の表明・入口拒否は別の適用内要件で確認する。",
303
+ "code_refs": [],
304
+ "test_refs": [],
305
+ "normative_basis": "§4 / user_codeクライアント設定: Optional client metadata (OPTIONAL; only applies when OP support is true)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
306
+ "source_clause_locator": "CIBA Core section 4; catalog label: user_codeクライアント設定; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.4"
307
+ },
308
+ {
309
+ "id": "CIBA-014",
310
+ "section": "4",
311
+ "label": "登録された認証方式",
312
+ "requirement": "Use each client's registered token_endpoint_auth_method for both Backchannel and Token endpoints.",
313
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.4",
314
+ "normative_strength": "Specification definition (registered method; no MUST/REQUIRED keyword)",
315
+ "conditional": false,
316
+ "first_version": "in scope",
317
+ "responsibility": "gem + upstream",
318
+ "audit_status": "verified",
319
+ "evidence": "直接テストでこの挙動を確認: test/ciba_configuration_test.rb#test_upstream_jwt_authentication_coexists_with_ciba_and_discovery, test/ciba_protocol_test.rb#test_post_client_authentication. 実装根拠はJSONのcode_refs。",
320
+ "code_refs": [
321
+ "ciba_metadata",
322
+ "oauth_grant_types_supported",
323
+ "ciba_client_eligible?",
324
+ "post_configure"
325
+ ],
326
+ "test_refs": [
327
+ "test/ciba_configuration_test.rb#test_upstream_jwt_authentication_coexists_with_ciba_and_discovery",
328
+ "test/ciba_protocol_test.rb#test_post_client_authentication"
329
+ ],
330
+ "normative_basis": "§4 / 登録された認証方式: Specification definition (registered method; no MUST/REQUIRED keyword)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
331
+ "source_clause_locator": "CIBA Core section 4; catalog label: 登録された認証方式; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.4"
332
+ },
333
+ {
334
+ "id": "CIBA-015",
335
+ "section": "4",
336
+ "label": "pairwise sector算出",
337
+ "requirement": "For poll/ping pairwise subjects use jwks_uri or sector_identifier_uri instead of redirect_uri to determine sector.",
338
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.4",
339
+ "normative_strength": "条件付き必須(該当機能/条件時 MUST)",
340
+ "conditional": true,
341
+ "first_version": "excluded",
342
+ "responsibility": "gem (excluded capability)",
343
+ "audit_status": "optional_excluded",
344
+ "evidence": "適用条件となる機能を初版では提供しない。非対応の表明・入口拒否は別の適用内要件で確認する。",
345
+ "code_refs": [],
346
+ "test_refs": [],
347
+ "normative_basis": "§4 / pairwise sector算出: 条件付き必須(該当機能/条件時 MUST)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
348
+ "source_clause_locator": "CIBA Core section 4; catalog label: pairwise sector算出; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.4"
349
+ },
350
+ {
351
+ "id": "CIBA-016",
352
+ "section": "4",
353
+ "label": "pairwise DCR検証",
354
+ "requirement": "For pairwise poll/ping dynamic registration validate jwks_uri and its inclusion in an explicit sector_identifier_uri document.",
355
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.4",
356
+ "normative_strength": "条件付き必須(該当機能/条件時 MUST)",
357
+ "conditional": true,
358
+ "first_version": "excluded",
359
+ "responsibility": "gem (excluded capability)",
360
+ "audit_status": "optional_excluded",
361
+ "evidence": "適用条件となる機能を初版では提供しない。非対応の表明・入口拒否は別の適用内要件で確認する。",
362
+ "code_refs": [],
363
+ "test_refs": [],
364
+ "normative_basis": "§4 / pairwise DCR検証: 条件付き必須(該当機能/条件時 MUST)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
365
+ "source_clause_locator": "CIBA Core section 4; catalog label: pairwise DCR検証; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.4"
366
+ },
367
+ {
368
+ "id": "CIBA-017",
369
+ "section": "4",
370
+ "label": "pairwise鍵所有証明",
371
+ "requirement": "For pairwise poll/ping require proof of possession of key material associated with jwks_uri through signed requests or the specified asymmetric client authentication.",
372
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.4",
373
+ "normative_strength": "条件付き必須(該当機能/条件時 MUST)",
374
+ "conditional": true,
375
+ "first_version": "excluded",
376
+ "responsibility": "gem (excluded capability)",
377
+ "audit_status": "optional_excluded",
378
+ "evidence": "適用条件となる機能を初版では提供しない。非対応の表明・入口拒否は別の適用内要件で確認する。",
379
+ "code_refs": [],
380
+ "test_refs": [],
381
+ "normative_basis": "§4 / pairwise鍵所有証明: 条件付き必須(該当機能/条件時 MUST)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
382
+ "source_clause_locator": "CIBA Core section 4; catalog label: pairwise鍵所有証明; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.4"
383
+ },
384
+ {
385
+ "id": "CIBA-018",
386
+ "section": "4",
387
+ "label": "push pairwise sector",
388
+ "requirement": "Use notification endpoint host for push pairwise sector and check membership when explicit sector_identifier_uri is supplied.",
389
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.4",
390
+ "normative_strength": "条件付き必須(該当機能/条件時 MUST)",
391
+ "conditional": true,
392
+ "first_version": "excluded",
393
+ "responsibility": "gem (excluded capability)",
394
+ "audit_status": "optional_excluded",
395
+ "evidence": "適用条件となる機能を初版では提供しない。非対応の表明・入口拒否は別の適用内要件で確認する。",
396
+ "code_refs": [],
397
+ "test_refs": [],
398
+ "normative_basis": "§4 / push pairwise sector: 条件付き必須(該当機能/条件時 MUST)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
399
+ "source_clause_locator": "CIBA Core section 4; catalog label: push pairwise sector; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.4"
400
+ },
401
+ {
402
+ "id": "CIBA-019",
403
+ "section": "5",
404
+ "label": "poll配送",
405
+ "requirement": "Make authentication results available through the token endpoint in poll mode.",
406
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.5",
407
+ "normative_strength": "記述的要件(該当節にMUST/SHOULD/MAYの規範語なし)",
408
+ "conditional": false,
409
+ "first_version": "in scope",
410
+ "responsibility": "gem",
411
+ "audit_status": "verified",
412
+ "evidence": "直接テストでこの挙動を確認: test/ciba_protocol_test.rb#test_discovery_describes_poll_and_keeps_existing_oidc_metadata, test/ciba_integration_test.rb#test_approved_request_issues_customer_id_token_once. 実装根拠はJSONのcode_refs。",
413
+ "code_refs": [
414
+ "ciba_metadata",
415
+ "create_token"
416
+ ],
417
+ "test_refs": [
418
+ "test/ciba_protocol_test.rb#test_discovery_describes_poll_and_keeps_existing_oidc_metadata",
419
+ "test/ciba_integration_test.rb#test_approved_request_issues_customer_id_token_once"
420
+ ],
421
+ "normative_basis": "§5 / poll配送: 記述的要件(該当節にMUST/SHOULD/MAYの規範語なし)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
422
+ "source_clause_locator": "CIBA Core section 5; catalog label: poll配送; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.5"
423
+ },
424
+ {
425
+ "id": "CIBA-020",
426
+ "section": "5",
427
+ "label": "ping配送",
428
+ "requirement": "Notify the client then make the result available at the token endpoint in ping mode.",
429
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.5",
430
+ "normative_strength": "記述的要件(該当節にMUST/SHOULD/MAYの規範語なし)",
431
+ "conditional": true,
432
+ "first_version": "excluded",
433
+ "responsibility": "gem (excluded capability)",
434
+ "audit_status": "optional_excluded",
435
+ "evidence": "適用条件となる機能を初版では提供しない。非対応の表明・入口拒否は別の適用内要件で確認する。",
436
+ "code_refs": [],
437
+ "test_refs": [],
438
+ "normative_basis": "§5 / ping配送: 記述的要件(該当節にMUST/SHOULD/MAYの規範語なし)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
439
+ "source_clause_locator": "CIBA Core section 5; catalog label: ping配送; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.5"
440
+ },
441
+ {
442
+ "id": "CIBA-021",
443
+ "section": "5",
444
+ "label": "push配送",
445
+ "requirement": "Deliver the complete authentication result directly to the notification endpoint in push mode.",
446
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.5",
447
+ "normative_strength": "記述的要件(該当節にMUST/SHOULD/MAYの規範語なし)",
448
+ "conditional": true,
449
+ "first_version": "excluded",
450
+ "responsibility": "gem (excluded capability)",
451
+ "audit_status": "optional_excluded",
452
+ "evidence": "適用条件となる機能を初版では提供しない。非対応の表明・入口拒否は別の適用内要件で確認する。",
453
+ "code_refs": [],
454
+ "test_refs": [],
455
+ "normative_basis": "§5 / push配送: 記述的要件(該当節にMUST/SHOULD/MAYの規範語なし)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
456
+ "source_clause_locator": "CIBA Core section 5; catalog label: push配送; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.5"
457
+ },
458
+ {
459
+ "id": "CIBA-022",
460
+ "section": "5",
461
+ "label": "push sender-constrained token",
462
+ "requirement": "If supporting sender-constrained tokens in push, record Backchannel key material and bind issued tokens to it.",
463
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.5",
464
+ "normative_strength": "任意能力に対する設計指針(lowercase should)",
465
+ "conditional": true,
466
+ "first_version": "excluded",
467
+ "responsibility": "gem (excluded capability)",
468
+ "audit_status": "optional_excluded",
469
+ "evidence": "適用条件となる機能を初版では提供しない。非対応の表明・入口拒否は別の適用内要件で確認する。",
470
+ "code_refs": [],
471
+ "test_refs": [],
472
+ "normative_basis": "§5 / push sender-constrained token: 任意能力に対する設計指針(lowercase should)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
473
+ "source_clause_locator": "CIBA Core section 5; catalog label: push sender-constrained token; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.5"
474
+ },
475
+ {
476
+ "id": "CIBA-023",
477
+ "section": "7",
478
+ "label": "開始APIのTLS",
479
+ "requirement": "Require TLS for Backchannel Authentication Endpoint communication.",
480
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.7",
481
+ "normative_strength": "必須(MUST / REQUIRED)",
482
+ "conditional": false,
483
+ "first_version": "in scope",
484
+ "responsibility": "gem",
485
+ "audit_status": "verified",
486
+ "evidence": "直接テストでこの挙動を確認: test/ciba_protocol_test.rb#test_non_tls_and_json_requests_are_rejected. 実装根拠はJSONのcode_refs。",
487
+ "code_refs": [
488
+ "validate_ciba_transport!",
489
+ "validate_ciba_request!",
490
+ "backchannel_authentication route"
491
+ ],
492
+ "test_refs": [
493
+ "test/ciba_protocol_test.rb#test_non_tls_and_json_requests_are_rejected"
494
+ ],
495
+ "normative_basis": "§7 / 開始APIのTLS: 必須(MUST / REQUIRED)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
496
+ "source_clause_locator": "CIBA Core section 7; catalog label: 開始APIのTLS; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.7"
497
+ },
498
+ {
499
+ "id": "CIBA-024",
500
+ "section": "7.1",
501
+ "label": "開始APIのPOSTとform",
502
+ "requirement": "Accept authentication requests as HTTP POST application/x-www-form-urlencoded UTF-8 bodies.",
503
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.7.1",
504
+ "normative_strength": "必須(MUST / REQUIRED)",
505
+ "conditional": false,
506
+ "first_version": "in scope",
507
+ "responsibility": "gem",
508
+ "audit_status": "verified",
509
+ "evidence": "直接テストでこの挙動を確認: test/ciba_protocol_test.rb#test_non_tls_and_json_requests_are_rejected, test/ciba_protocol_test.rb#test_rack_inputs_without_rewind_work_on_both_endpoints. 実装根拠はJSONのcode_refs。",
510
+ "code_refs": [
511
+ "validate_ciba_transport!",
512
+ "validate_ciba_request!",
513
+ "resolve_ciba_login_hint",
514
+ "ciba_error"
515
+ ],
516
+ "test_refs": [
517
+ "test/ciba_protocol_test.rb#test_non_tls_and_json_requests_are_rejected",
518
+ "test/ciba_protocol_test.rb#test_rack_inputs_without_rewind_work_on_both_endpoints"
519
+ ],
520
+ "normative_basis": "§7.1 / 開始APIのPOSTとform: 必須(MUST / REQUIRED)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
521
+ "source_clause_locator": "CIBA Core section 7.1; catalog label: 開始APIのPOSTとform; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.7.1"
522
+ },
523
+ {
524
+ "id": "CIBA-025",
525
+ "section": "7.1",
526
+ "label": "開始APIのクライアント認証",
527
+ "requirement": "Authenticate the client at Backchannel using its registered authentication method.",
528
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.7.1",
529
+ "normative_strength": "必須(MUST / REQUIRED)",
530
+ "conditional": false,
531
+ "first_version": "in scope",
532
+ "responsibility": "gem + upstream",
533
+ "audit_status": "verified",
534
+ "evidence": "`Schema.create_client_assertions` とCIBA用 assertion validation/one-use trackingを実装。direct regressions: test/ciba_security_test.rb. 既存のCIBA endpoint audience acceptance: test/ciba_configuration_test.rb#test_upstream_jwt_authentication_coexists_with_ciba_and_discovery.",
535
+ "code_refs": [
536
+ "CibaSupport::ClientAuthentication#require_oauth_application",
537
+ "CibaSupport::ClientAuthentication#jwt_assertion",
538
+ "require_oauth_application (upstream)"
539
+ ],
540
+ "test_refs": [
541
+ "test/ciba_security_test.rb#test_jwt_client_assertion_requires_issuer_expiry_and_jti",
542
+ "test/ciba_security_test.rb#test_jwt_client_assertion_is_single_use",
543
+ "test/ciba_security_test.rb#test_malformed_assertions_are_authentication_errors_at_both_ciba_endpoints",
544
+ "test/ciba_security_test.rb#test_backchannel_ignores_other_grant_parameters_without_bypassing_client_authentication",
545
+ "test/ciba_security_test.rb#test_assertion_subject_cannot_override_explicit_client_id"
546
+ ],
547
+ "normative_basis": "§7.1 / 開始APIのクライアント認証: 必須(MUST / REQUIRED)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
548
+ "source_clause_locator": "CIBA Core section 7.1; catalog label: 開始APIのクライアント認証; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.7.1"
549
+ },
550
+ {
551
+ "id": "CIBA-026",
552
+ "section": "7.1",
553
+ "label": "JWT audienceのissuer受理",
554
+ "requirement": "At Backchannel accept OP issuer identifier as the audience of JWT client assertions.",
555
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.7.1",
556
+ "normative_strength": "必須(MUST / REQUIRED)",
557
+ "conditional": false,
558
+ "first_version": "in scope",
559
+ "responsibility": "gem + upstream",
560
+ "audit_status": "verified",
561
+ "evidence": "`Schema.create_client_assertions` とCIBA用 assertion validation/one-use trackingを実装。direct regressions: test/ciba_security_test.rb. 既存のCIBA endpoint audience acceptance: test/ciba_configuration_test.rb#test_upstream_jwt_authentication_coexists_with_ciba_and_discovery.",
562
+ "code_refs": [
563
+ "CibaSupport::ClientAuthentication#require_oauth_application",
564
+ "CibaSupport::ClientAuthentication#jwt_assertion",
565
+ "require_oauth_application (upstream)"
566
+ ],
567
+ "test_refs": [
568
+ "test/ciba_configuration_test.rb#test_upstream_jwt_authentication_coexists_with_ciba_and_discovery",
569
+ "test/ciba_security_test.rb#test_assertion_subject_cannot_override_explicit_client_id"
570
+ ],
571
+ "normative_basis": "§7.1 / JWT audienceのissuer受理: 必須(MUST / REQUIRED)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
572
+ "source_clause_locator": "CIBA Core section 7.1; catalog label: JWT audienceのissuer受理; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.7.1"
573
+ },
574
+ {
575
+ "id": "CIBA-027",
576
+ "section": "7.1",
577
+ "label": "JWT audienceのToken URL受理",
578
+ "requirement": "At Backchannel accept Token Endpoint URL as the audience of JWT client assertions.",
579
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.7.1",
580
+ "normative_strength": "必須(MUST / REQUIRED)",
581
+ "conditional": false,
582
+ "first_version": "in scope",
583
+ "responsibility": "gem + upstream",
584
+ "audit_status": "verified",
585
+ "evidence": "`Schema.create_client_assertions` とCIBA用 assertion validation/one-use trackingを実装。direct regressions: test/ciba_security_test.rb. 既存のCIBA endpoint audience acceptance: test/ciba_configuration_test.rb#test_upstream_jwt_authentication_coexists_with_ciba_and_discovery.",
586
+ "code_refs": [
587
+ "CibaSupport::ClientAuthentication#require_oauth_application",
588
+ "CibaSupport::ClientAuthentication#jwt_assertion",
589
+ "require_oauth_application (upstream)"
590
+ ],
591
+ "test_refs": [
592
+ "test/ciba_configuration_test.rb#test_upstream_jwt_authentication_coexists_with_ciba_and_discovery",
593
+ "test/ciba_security_test.rb#test_assertion_subject_cannot_override_explicit_client_id"
594
+ ],
595
+ "normative_basis": "§7.1 / JWT audienceのToken URL受理: 必須(MUST / REQUIRED)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
596
+ "source_clause_locator": "CIBA Core section 7.1; catalog label: JWT audienceのToken URL受理; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.7.1"
597
+ },
598
+ {
599
+ "id": "CIBA-028",
600
+ "section": "7.1",
601
+ "label": "JWT audienceのBackchannel URL受理",
602
+ "requirement": "At Backchannel accept Backchannel Endpoint URL as the audience of JWT client assertions.",
603
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.7.1",
604
+ "normative_strength": "必須(MUST / REQUIRED)",
605
+ "conditional": false,
606
+ "first_version": "in scope",
607
+ "responsibility": "gem + upstream",
608
+ "audit_status": "verified",
609
+ "evidence": "`Schema.create_client_assertions` とCIBA用 assertion validation/one-use trackingを実装。direct regressions: test/ciba_security_test.rb. 既存のCIBA endpoint audience acceptance: test/ciba_configuration_test.rb#test_upstream_jwt_authentication_coexists_with_ciba_and_discovery.",
610
+ "code_refs": [
611
+ "CibaSupport::ClientAuthentication#require_oauth_application",
612
+ "CibaSupport::ClientAuthentication#jwt_assertion",
613
+ "require_oauth_application (upstream)"
614
+ ],
615
+ "test_refs": [
616
+ "test/ciba_configuration_test.rb#test_upstream_jwt_authentication_coexists_with_ciba_and_discovery",
617
+ "test/ciba_security_test.rb#test_assertion_subject_cannot_override_explicit_client_id"
618
+ ],
619
+ "normative_basis": "§7.1 / JWT audienceのBackchannel URL受理: 必須(MUST / REQUIRED)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
620
+ "source_clause_locator": "CIBA Core section 7.1; catalog label: JWT audienceのBackchannel URL受理; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.7.1"
621
+ },
622
+ {
623
+ "id": "CIBA-029",
624
+ "section": "7.1",
625
+ "label": "JWT audienceのissuer推奨",
626
+ "requirement": "Client should use the OP issuer identifier for JWT assertion audience at Backchannel.",
627
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.7.1",
628
+ "normative_strength": "推奨(SHOULD use OP Issuer as JWT aud)",
629
+ "conditional": false,
630
+ "first_version": "client obligation",
631
+ "responsibility": "client",
632
+ "audit_status": "client_only",
633
+ "evidence": "CIBA Clientに対する要求。OP gemの実装率・合否には算入しない。",
634
+ "code_refs": [],
635
+ "test_refs": [],
636
+ "normative_basis": "§7.1 / JWT audienceのissuer推奨: 推奨(SHOULD use OP Issuer as JWT aud)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
637
+ "source_clause_locator": "CIBA Core section 7.1; catalog label: JWT audienceのissuer推奨; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.7.1"
638
+ },
639
+ {
640
+ "id": "CIBA-030",
641
+ "section": "7.1",
642
+ "label": "scope必須",
643
+ "requirement": "Require scope in a CIBA authentication request.",
644
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.7.1",
645
+ "normative_strength": "必須(MUST / REQUIRED)",
646
+ "conditional": false,
647
+ "first_version": "in scope",
648
+ "responsibility": "gem",
649
+ "audit_status": "verified",
650
+ "evidence": "直接テストでこの挙動を確認: test/ciba_protocol_test.rb#test_request_validation_and_unknown_parameters, test/ciba_requirements_test.rb#test_scope_syntax_errors_are_invalid_scope. 実装根拠はJSONのcode_refs。",
651
+ "code_refs": [
652
+ "validate_ciba_transport!",
653
+ "validate_ciba_request!",
654
+ "resolve_ciba_login_hint",
655
+ "ciba_error"
656
+ ],
657
+ "test_refs": [
658
+ "test/ciba_protocol_test.rb#test_request_validation_and_unknown_parameters",
659
+ "test/ciba_requirements_test.rb#test_scope_syntax_errors_are_invalid_scope"
660
+ ],
661
+ "normative_basis": "§7.1 / scope必須: 必須(MUST / REQUIRED)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
662
+ "source_clause_locator": "CIBA Core section 7.1; catalog label: scope必須; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.7.1"
663
+ },
664
+ {
665
+ "id": "CIBA-031",
666
+ "section": "7.1",
667
+ "label": "openid scope",
668
+ "requirement": "Require the openid scope for the OpenID CIBA flow.",
669
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.7.1",
670
+ "normative_strength": "必須(MUST / REQUIRED)",
671
+ "conditional": false,
672
+ "first_version": "in scope",
673
+ "responsibility": "gem",
674
+ "audit_status": "verified",
675
+ "evidence": "直接テストでこの挙動を確認: test/ciba_protocol_test.rb#test_request_validation_and_unknown_parameters. 実装根拠はJSONのcode_refs。",
676
+ "code_refs": [
677
+ "validate_ciba_transport!",
678
+ "validate_ciba_request!",
679
+ "resolve_ciba_login_hint",
680
+ "ciba_error"
681
+ ],
682
+ "test_refs": [
683
+ "test/ciba_protocol_test.rb#test_request_validation_and_unknown_parameters"
684
+ ],
685
+ "normative_basis": "§7.1 / openid scope: 必須(MUST / REQUIRED)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
686
+ "source_clause_locator": "CIBA Core section 7.1; catalog label: openid scope; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.7.1"
687
+ },
688
+ {
689
+ "id": "CIBA-032",
690
+ "section": "7.1",
691
+ "label": "追加scope",
692
+ "requirement": "Allow authorized additional scopes such as profile/email/address/phone without treating openid as the only possible scope.",
693
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.7.1",
694
+ "normative_strength": "任意(other scopes MAY be present)",
695
+ "conditional": false,
696
+ "first_version": "in scope",
697
+ "responsibility": "gem",
698
+ "audit_status": "verified",
699
+ "evidence": "直接テストでこの挙動を確認: test/ciba_protocol_test.rb#test_expiry_binding_context_and_offline_access. 実装根拠はJSONのcode_refs。",
700
+ "code_refs": [
701
+ "validate_ciba_transport!",
702
+ "validate_ciba_request!",
703
+ "resolve_ciba_login_hint",
704
+ "ciba_error"
705
+ ],
706
+ "test_refs": [
707
+ "test/ciba_security_test.rb#test_additional_authorized_scopes_survive_acceptance_and_token_issuance"
708
+ ],
709
+ "normative_basis": "§7.1 / 追加scope: 任意(other scopes MAY be present)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
710
+ "source_clause_locator": "CIBA Core section 7.1; catalog label: 追加scope; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.7.1"
711
+ },
712
+ {
713
+ "id": "CIBA-033",
714
+ "section": "7.1",
715
+ "label": "通知トークン必須条件",
716
+ "requirement": "Require client_notification_token for ping/push.",
717
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.7.1",
718
+ "normative_strength": "条件付き必須(ping/push登録ならREQUIRED)",
719
+ "conditional": true,
720
+ "first_version": "excluded",
721
+ "responsibility": "gem (excluded capability)",
722
+ "audit_status": "optional_excluded",
723
+ "evidence": "適用条件となる機能を初版では提供しない。非対応の表明・入口拒否は別の適用内要件で確認する。",
724
+ "code_refs": [],
725
+ "test_refs": [],
726
+ "normative_basis": "§7.1 / 通知トークン必須条件: 条件付き必須(ping/push登録ならREQUIRED)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
727
+ "source_clause_locator": "CIBA Core section 7.1; catalog label: 通知トークン必須条件; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.7.1"
728
+ },
729
+ {
730
+ "id": "CIBA-034",
731
+ "section": "7.1",
732
+ "label": "通知トークンの長さと構文",
733
+ "requirement": "Validate client_notification_token max 1024 characters and bearer credential syntax.",
734
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.7.1",
735
+ "normative_strength": "条件付き必須(ping/push時; MUST NOT exceed 1024 / bearer syntax)",
736
+ "conditional": true,
737
+ "first_version": "excluded",
738
+ "responsibility": "gem (excluded capability)",
739
+ "audit_status": "optional_excluded",
740
+ "evidence": "適用条件となる機能を初版では提供しない。非対応の表明・入口拒否は別の適用内要件で確認する。",
741
+ "code_refs": [],
742
+ "test_refs": [],
743
+ "normative_basis": "§7.1 / 通知トークンの長さと構文: 条件付き必須(ping/push時; MUST NOT exceed 1024 / bearer syntax)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
744
+ "source_clause_locator": "CIBA Core section 7.1; catalog label: 通知トークンの長さと構文; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.7.1"
745
+ },
746
+ {
747
+ "id": "CIBA-035",
748
+ "section": "7.1",
749
+ "label": "通知トークンentropy",
750
+ "requirement": "Client ensures at least 128 bits entropy for client_notification_token, with 160 recommended.",
751
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.7.1",
752
+ "normative_strength": "必須(client MUST ensure entropy; 160 bits is recommended)",
753
+ "conditional": true,
754
+ "first_version": "excluded",
755
+ "responsibility": "client",
756
+ "audit_status": "optional_excluded",
757
+ "evidence": "適用条件となる機能を初版では提供しない。非対応の表明・入口拒否は別の適用内要件で確認する。",
758
+ "code_refs": [],
759
+ "test_refs": [],
760
+ "normative_basis": "§7.1 / 通知トークンentropy: 必須(client MUST ensure entropy; 160 bits is recommended)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
761
+ "source_clause_locator": "CIBA Core section 7.1; catalog label: 通知トークンentropy; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.7.1"
762
+ },
763
+ {
764
+ "id": "CIBA-036",
765
+ "section": "7.1",
766
+ "label": "acr_values受理",
767
+ "requirement": "Accept requested space-separated acr_values and preserve preference order for authentication selection.",
768
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.7.1",
769
+ "normative_strength": "任意(OPTIONAL acr_values; order is preference; OP discretion)",
770
+ "conditional": false,
771
+ "first_version": "in scope with app contract",
772
+ "responsibility": "gem + app",
773
+ "audit_status": "verified",
774
+ "evidence": "gemはacr_valuesを順序を保って保存することをテスト。認証方式の選択・実施はアプリの責務。",
775
+ "code_refs": [
776
+ "validate_ciba_transport!",
777
+ "validate_ciba_request!",
778
+ "resolve_ciba_login_hint",
779
+ "ciba_error"
780
+ ],
781
+ "test_refs": [
782
+ "test/ciba_protocol_test.rb#test_expiry_binding_context_and_offline_access"
783
+ ],
784
+ "normative_basis": "§7.1 / acr_values受理: 任意(OPTIONAL acr_values; order is preference; OP discretion)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
785
+ "source_clause_locator": "CIBA Core section 7.1; catalog label: acr_values受理; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.7.1"
786
+ },
787
+ {
788
+ "id": "CIBA-037",
789
+ "section": "7.1",
790
+ "label": "達成したacrの返却",
791
+ "requirement": "Report the authentication context actually achieved as acr in the ID Token; acr is highly recommended when acr_values was requested.",
792
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.7.1",
793
+ "normative_strength": "強く推奨(highly RECOMMENDED acr claim when requested)",
794
+ "conditional": true,
795
+ "first_version": "in scope with app contract",
796
+ "responsibility": "gem + upstream + app",
797
+ "audit_status": "verified",
798
+ "evidence": "アプリが渡したacrを署名済みID Tokenに載せる経路をテスト。実際に達成した認証強度であることはアプリが保証する。",
799
+ "code_refs": [
800
+ "validate_ciba_transport!",
801
+ "validate_ciba_request!",
802
+ "resolve_ciba_login_hint",
803
+ "ciba_error"
804
+ ],
805
+ "test_refs": [
806
+ "test/ciba_integration_test.rb#test_approved_request_issues_customer_id_token_once"
807
+ ],
808
+ "normative_basis": "§7.1 / 達成したacrの返却: 強く推奨(highly RECOMMENDED acr claim when requested)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
809
+ "source_clause_locator": "CIBA Core section 7.1; catalog label: 達成したacrの返却; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.7.1"
810
+ },
811
+ {
812
+ "id": "CIBA-038",
813
+ "section": "7.1",
814
+ "label": "login_hint_token",
815
+ "requirement": "Support user identification via login_hint_token according to deployment-specific token format and validation policy.",
816
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.7.1",
817
+ "normative_strength": "Optional parameter (OPTIONAL)",
818
+ "conditional": true,
819
+ "first_version": "excluded",
820
+ "responsibility": "gem (excluded capability)",
821
+ "audit_status": "optional_excluded",
822
+ "evidence": "適用条件となる機能を初版では提供しない。非対応の表明・入口拒否は別の適用内要件で確認する。",
823
+ "code_refs": [],
824
+ "test_refs": [],
825
+ "normative_basis": "§7.1 / login_hint_token: Optional parameter (OPTIONAL)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
826
+ "source_clause_locator": "CIBA Core section 7.1; catalog label: login_hint_token; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.7.1"
827
+ },
828
+ {
829
+ "id": "CIBA-039",
830
+ "section": "7.1",
831
+ "label": "id_token_hint",
832
+ "requirement": "Support user identification using an ID Token previously issued by the OP.",
833
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.7.1",
834
+ "normative_strength": "Optional parameter (OPTIONAL)",
835
+ "conditional": true,
836
+ "first_version": "excluded",
837
+ "responsibility": "gem (excluded capability)",
838
+ "audit_status": "optional_excluded",
839
+ "evidence": "適用条件となる機能を初版では提供しない。非対応の表明・入口拒否は別の適用内要件で確認する。",
840
+ "code_refs": [],
841
+ "test_refs": [],
842
+ "normative_basis": "§7.1 / id_token_hint: Optional parameter (OPTIONAL)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
843
+ "source_clause_locator": "CIBA Core section 7.1; catalog label: id_token_hint; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.7.1"
844
+ },
845
+ {
846
+ "id": "CIBA-040",
847
+ "section": "7.1",
848
+ "label": "暗号化id_token_hintの復号",
849
+ "requirement": "Client decrypts an asymmetrically encrypted ID Token before supplying it as id_token_hint.",
850
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.7.1",
851
+ "normative_strength": "条件付き必須(暗号化ID Tokenをhintに使うclientはMUST decrypt)",
852
+ "conditional": true,
853
+ "first_version": "excluded",
854
+ "responsibility": "client",
855
+ "audit_status": "optional_excluded",
856
+ "evidence": "適用条件となる機能を初版では提供しない。非対応の表明・入口拒否は別の適用内要件で確認する。",
857
+ "code_refs": [],
858
+ "test_refs": [],
859
+ "normative_basis": "§7.1 / 暗号化id_token_hintの復号: 条件付き必須(暗号化ID Tokenをhintに使うclientはMUST decrypt)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
860
+ "source_clause_locator": "CIBA Core section 7.1; catalog label: 暗号化id_token_hintの復号; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.7.1"
861
+ },
862
+ {
863
+ "id": "CIBA-041",
864
+ "section": "7.1",
865
+ "label": "login_hint",
866
+ "requirement": "Support a login_hint string as a user identifier without requiring it to be an email address.",
867
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.7.1",
868
+ "normative_strength": "任意(OPTIONAL login_hint)",
869
+ "conditional": false,
870
+ "first_version": "in scope with app contract",
871
+ "responsibility": "gem + app",
872
+ "audit_status": "verified",
873
+ "evidence": "gemのstring検証・resolver呼出し・解決不能時の拒否をテスト。識別子の意味とアカウント対応付けはアプリ契約であり、メール形式をgemでは要求しない。",
874
+ "code_refs": [
875
+ "validate_ciba_transport!",
876
+ "validate_ciba_request!",
877
+ "resolve_ciba_login_hint",
878
+ "ciba_error"
879
+ ],
880
+ "test_refs": [
881
+ "test/ciba_protocol_test.rb#test_request_validation_and_unknown_parameters"
882
+ ],
883
+ "normative_basis": "§7.1 / login_hint: 任意(OPTIONAL login_hint)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
884
+ "source_clause_locator": "CIBA Core section 7.1; catalog label: login_hint; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.7.1"
885
+ },
886
+ {
887
+ "id": "CIBA-042",
888
+ "section": "7.1",
889
+ "label": "binding_messageの受理と引継ぎ",
890
+ "requirement": "Accept binding_message and make it available for display on both consumption and authentication devices.",
891
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.7.1",
892
+ "normative_strength": "Optional parameter (OPTIONAL)",
893
+ "conditional": false,
894
+ "first_version": "in scope with app contract",
895
+ "responsibility": "gem + app",
896
+ "audit_status": "verified",
897
+ "evidence": "直接テストでこの挙動を確認: test/ciba_protocol_test.rb#test_expiry_binding_context_and_offline_access, test/demo_test.rb#test_browser_approval_checks_csrf_and_finishes_request. 実装根拠はJSONのcode_refs。",
898
+ "code_refs": [
899
+ "validate_ciba_transport!",
900
+ "validate_ciba_request!",
901
+ "resolve_ciba_login_hint",
902
+ "ciba_error"
903
+ ],
904
+ "test_refs": [
905
+ "test/ciba_protocol_test.rb#test_expiry_binding_context_and_offline_access",
906
+ "test/demo_test.rb#test_browser_approval_checks_csrf_and_finishes_request"
907
+ ],
908
+ "normative_basis": "§7.1 / binding_messageの受理と引継ぎ: Optional parameter (OPTIONAL)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
909
+ "source_clause_locator": "CIBA Core section 7.1; catalog label: binding_messageの受理と引継ぎ; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.7.1"
910
+ },
911
+ {
912
+ "id": "CIBA-043",
913
+ "section": "7.1",
914
+ "label": "binding_messageの関連付け",
915
+ "requirement": "Client chooses binding_message that lets the end-user correlate the initiating action and authentication device interaction.",
916
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.7.1",
917
+ "normative_strength": "Recommendation (SHOULD)",
918
+ "conditional": false,
919
+ "first_version": "client obligation",
920
+ "responsibility": "client",
921
+ "audit_status": "client_only",
922
+ "evidence": "CIBA Clientに対する要求。OP gemの実装率・合否には算入しない。",
923
+ "code_refs": [],
924
+ "test_refs": [],
925
+ "normative_basis": "§7.1 / binding_messageの関連付け: Recommendation (SHOULD)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
926
+ "source_clause_locator": "CIBA Core section 7.1; catalog label: binding_messageの関連付け; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.7.1"
927
+ },
928
+ {
929
+ "id": "CIBA-044",
930
+ "section": "7.1",
931
+ "label": "binding_messageの表示適性",
932
+ "requirement": "Keep binding_message relatively short with a limited set of plain-text characters suitable for display.",
933
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.7.1",
934
+ "normative_strength": "Recommendation (SHOULD)",
935
+ "conditional": false,
936
+ "first_version": "in scope with app contract",
937
+ "responsibility": "gem + app",
938
+ "audit_status": "verified",
939
+ "evidence": "直接テストでこの挙動を確認: test/ciba_protocol_test.rb#test_expiry_binding_context_and_offline_access. 実装根拠はJSONのcode_refs。",
940
+ "code_refs": [
941
+ "validate_ciba_transport!",
942
+ "validate_ciba_request!",
943
+ "resolve_ciba_login_hint",
944
+ "ciba_error"
945
+ ],
946
+ "test_refs": [
947
+ "test/ciba_protocol_test.rb#test_expiry_binding_context_and_offline_access"
948
+ ],
949
+ "normative_basis": "§7.1 / binding_messageの表示適性: Recommendation (SHOULD)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
950
+ "source_clause_locator": "CIBA Core section 7.1; catalog label: binding_messageの表示適性; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.7.1"
951
+ },
952
+ {
953
+ "id": "CIBA-045",
954
+ "section": "7.1",
955
+ "label": "user_code",
956
+ "requirement": "Support optional user_code validation when the OP/client has enabled it.",
957
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.7.1",
958
+ "normative_strength": "任意(OPTIONAL user_code; lowercase “should only” condition is non-RFC2119)",
959
+ "conditional": true,
960
+ "first_version": "excluded",
961
+ "responsibility": "gem (excluded capability)",
962
+ "audit_status": "optional_excluded",
963
+ "evidence": "適用条件となる機能を初版では提供しない。非対応の表明・入口拒否は別の適用内要件で確認する。",
964
+ "code_refs": [],
965
+ "test_refs": [],
966
+ "normative_basis": "§7.1 / user_code: 任意(OPTIONAL user_code; lowercase “should only” condition is non-RFC2119)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
967
+ "source_clause_locator": "CIBA Core section 7.1; catalog label: user_code; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.7.1"
968
+ },
969
+ {
970
+ "id": "CIBA-046",
971
+ "section": "7.1",
972
+ "label": "requested_expiry構文",
973
+ "requirement": "Accept optional requested_expiry as a positive integer.",
974
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.7.1",
975
+ "normative_strength": "任意(OPTIONAL requested_expiry with positive-integer value)",
976
+ "conditional": false,
977
+ "first_version": "in scope",
978
+ "responsibility": "gem",
979
+ "audit_status": "verified",
980
+ "evidence": "直接テストでこの挙動を確認: test/ciba_protocol_test.rb#test_expiry_binding_context_and_offline_access. 実装根拠はJSONのcode_refs。",
981
+ "code_refs": [
982
+ "validate_ciba_transport!",
983
+ "validate_ciba_request!",
984
+ "resolve_ciba_login_hint",
985
+ "ciba_error"
986
+ ],
987
+ "test_refs": [
988
+ "test/ciba_protocol_test.rb#test_expiry_binding_context_and_offline_access"
989
+ ],
990
+ "normative_basis": "§7.1 / requested_expiry構文: 任意(OPTIONAL requested_expiry with positive-integer value)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
991
+ "source_clause_locator": "CIBA Core section 7.1; catalog label: requested_expiry構文; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.7.1"
992
+ },
993
+ {
994
+ "id": "CIBA-047",
995
+ "section": "7.1",
996
+ "label": "requested_expiryの採用",
997
+ "requirement": "OP may use requested_expiry to influence the request lifetime; evaluate the implementation of this optional capability, not a mandatory obligation to honor it exactly.",
998
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.7.1",
999
+ "normative_strength": "任意(server MAY honor; encouraged where useful)",
1000
+ "conditional": false,
1001
+ "first_version": "in scope",
1002
+ "responsibility": "gem",
1003
+ "audit_status": "verified",
1004
+ "evidence": "直接テストでこの挙動を確認: test/ciba_protocol_test.rb#test_expiry_binding_context_and_offline_access. 実装根拠はJSONのcode_refs。",
1005
+ "code_refs": [
1006
+ "validate_ciba_transport!",
1007
+ "validate_ciba_request!",
1008
+ "resolve_ciba_login_hint",
1009
+ "ciba_error"
1010
+ ],
1011
+ "test_refs": [
1012
+ "test/ciba_protocol_test.rb#test_expiry_binding_context_and_offline_access"
1013
+ ],
1014
+ "normative_basis": "§7.1 / requested_expiryの採用: 任意(server MAY honor; encouraged where useful)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
1015
+ "source_clause_locator": "CIBA Core section 7.1; catalog label: requested_expiryの採用; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.7.1"
1016
+ },
1017
+ {
1018
+ "id": "CIBA-048",
1019
+ "section": "7.1",
1020
+ "label": "hintはちょうど一つ",
1021
+ "requirement": "Require exactly one of login_hint, login_hint_token, id_token_hint in an authentication request.",
1022
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.7.1",
1023
+ "normative_strength": "必須(MUST / REQUIRED)",
1024
+ "conditional": false,
1025
+ "first_version": "in scope",
1026
+ "responsibility": "gem",
1027
+ "audit_status": "verified",
1028
+ "evidence": "直接テストでこの挙動を確認: test/ciba_protocol_test.rb#test_request_validation_and_unknown_parameters. 実装根拠はJSONのcode_refs。",
1029
+ "code_refs": [
1030
+ "validate_ciba_transport!",
1031
+ "validate_ciba_request!",
1032
+ "resolve_ciba_login_hint",
1033
+ "ciba_error"
1034
+ ],
1035
+ "test_refs": [
1036
+ "test/ciba_protocol_test.rb#test_request_validation_and_unknown_parameters"
1037
+ ],
1038
+ "normative_basis": "§7.1 / hintはちょうど一つ: 必須(MUST / REQUIRED)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
1039
+ "source_clause_locator": "CIBA Core section 7.1; catalog label: hintはちょうど一つ; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.7.1"
1040
+ },
1041
+ {
1042
+ "id": "CIBA-049",
1043
+ "section": "7.1.1",
1044
+ "label": "署名要求のJWT形式",
1045
+ "requirement": "Support signed authentication requests carried in the request parameter as a signed JWT containing all authentication parameters.",
1046
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.7.1.1",
1047
+ "normative_strength": "条件付き必須(署名付き認証要求を実装する場合)",
1048
+ "conditional": true,
1049
+ "first_version": "excluded",
1050
+ "responsibility": "gem (excluded capability)",
1051
+ "audit_status": "optional_excluded",
1052
+ "evidence": "適用条件となる機能を初版では提供しない。非対応の表明・入口拒否は別の適用内要件で確認する。",
1053
+ "code_refs": [],
1054
+ "test_refs": [],
1055
+ "normative_basis": "§7.1.1 / 署名要求のJWT形式: 条件付き必須(署名付き認証要求を実装する場合)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
1056
+ "source_clause_locator": "CIBA Core section 7.1.1; catalog label: 署名要求のJWT形式; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.7.1.1"
1057
+ },
1058
+ {
1059
+ "id": "CIBA-050",
1060
+ "section": "7.1.1",
1061
+ "label": "署名要求の非対称署名",
1062
+ "requirement": "Validate asymmetric signature for signed authentication requests.",
1063
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.7.1.1",
1064
+ "normative_strength": "条件付き必須(署名付き認証要求を実装する場合)",
1065
+ "conditional": true,
1066
+ "first_version": "excluded",
1067
+ "responsibility": "gem (excluded capability)",
1068
+ "audit_status": "optional_excluded",
1069
+ "evidence": "適用条件となる機能を初版では提供しない。非対応の表明・入口拒否は別の適用内要件で確認する。",
1070
+ "code_refs": [],
1071
+ "test_refs": [],
1072
+ "normative_basis": "§7.1.1 / 署名要求の非対称署名: 条件付き必須(署名付き認証要求を実装する場合)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
1073
+ "source_clause_locator": "CIBA Core section 7.1.1; catalog label: 署名要求の非対称署名; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.7.1.1"
1074
+ },
1075
+ {
1076
+ "id": "CIBA-051",
1077
+ "section": "7.1.1",
1078
+ "label": "署名要求のaud",
1079
+ "requirement": "Validate signed request aud as the OP issuer.",
1080
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.7.1.1",
1081
+ "normative_strength": "条件付き必須(署名付き認証要求を実装する場合)",
1082
+ "conditional": true,
1083
+ "first_version": "excluded",
1084
+ "responsibility": "gem (excluded capability)",
1085
+ "audit_status": "optional_excluded",
1086
+ "evidence": "適用条件となる機能を初版では提供しない。非対応の表明・入口拒否は別の適用内要件で確認する。",
1087
+ "code_refs": [],
1088
+ "test_refs": [],
1089
+ "normative_basis": "§7.1.1 / 署名要求のaud: 条件付き必須(署名付き認証要求を実装する場合)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
1090
+ "source_clause_locator": "CIBA Core section 7.1.1; catalog label: 署名要求のaud; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.7.1.1"
1091
+ },
1092
+ {
1093
+ "id": "CIBA-052",
1094
+ "section": "7.1.1",
1095
+ "label": "署名要求のiss",
1096
+ "requirement": "Validate signed request iss as the client_id.",
1097
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.7.1.1",
1098
+ "normative_strength": "条件付き必須(署名付き認証要求を実装する場合)",
1099
+ "conditional": true,
1100
+ "first_version": "excluded",
1101
+ "responsibility": "gem (excluded capability)",
1102
+ "audit_status": "optional_excluded",
1103
+ "evidence": "適用条件となる機能を初版では提供しない。非対応の表明・入口拒否は別の適用内要件で確認する。",
1104
+ "code_refs": [],
1105
+ "test_refs": [],
1106
+ "normative_basis": "§7.1.1 / 署名要求のiss: 条件付き必須(署名付き認証要求を実装する場合)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
1107
+ "source_clause_locator": "CIBA Core section 7.1.1; catalog label: 署名要求のiss; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.7.1.1"
1108
+ },
1109
+ {
1110
+ "id": "CIBA-053",
1111
+ "section": "7.1.1",
1112
+ "label": "署名要求のexp",
1113
+ "requirement": "Require and validate exp on signed authentication requests.",
1114
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.7.1.1",
1115
+ "normative_strength": "条件付き必須(署名付き認証要求を実装する場合)",
1116
+ "conditional": true,
1117
+ "first_version": "excluded",
1118
+ "responsibility": "gem (excluded capability)",
1119
+ "audit_status": "optional_excluded",
1120
+ "evidence": "適用条件となる機能を初版では提供しない。非対応の表明・入口拒否は別の適用内要件で確認する。",
1121
+ "code_refs": [],
1122
+ "test_refs": [],
1123
+ "normative_basis": "§7.1.1 / 署名要求のexp: 条件付き必須(署名付き認証要求を実装する場合)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
1124
+ "source_clause_locator": "CIBA Core section 7.1.1; catalog label: 署名要求のexp; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.7.1.1"
1125
+ },
1126
+ {
1127
+ "id": "CIBA-054",
1128
+ "section": "7.1.1",
1129
+ "label": "署名要求のiat",
1130
+ "requirement": "Require and validate iat on signed authentication requests.",
1131
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.7.1.1",
1132
+ "normative_strength": "条件付き必須(署名付き認証要求を実装する場合)",
1133
+ "conditional": true,
1134
+ "first_version": "excluded",
1135
+ "responsibility": "gem (excluded capability)",
1136
+ "audit_status": "optional_excluded",
1137
+ "evidence": "適用条件となる機能を初版では提供しない。非対応の表明・入口拒否は別の適用内要件で確認する。",
1138
+ "code_refs": [],
1139
+ "test_refs": [],
1140
+ "normative_basis": "§7.1.1 / 署名要求のiat: 条件付き必須(署名付き認証要求を実装する場合)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
1141
+ "source_clause_locator": "CIBA Core section 7.1.1; catalog label: 署名要求のiat; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.7.1.1"
1142
+ },
1143
+ {
1144
+ "id": "CIBA-055",
1145
+ "section": "7.1.1",
1146
+ "label": "署名要求のnbf",
1147
+ "requirement": "Require and validate nbf on signed authentication requests.",
1148
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.7.1.1",
1149
+ "normative_strength": "条件付き必須(署名付き認証要求を実装する場合)",
1150
+ "conditional": true,
1151
+ "first_version": "excluded",
1152
+ "responsibility": "gem (excluded capability)",
1153
+ "audit_status": "optional_excluded",
1154
+ "evidence": "適用条件となる機能を初版では提供しない。非対応の表明・入口拒否は別の適用内要件で確認する。",
1155
+ "code_refs": [],
1156
+ "test_refs": [],
1157
+ "normative_basis": "§7.1.1 / 署名要求のnbf: 条件付き必須(署名付き認証要求を実装する場合)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
1158
+ "source_clause_locator": "CIBA Core section 7.1.1; catalog label: 署名要求のnbf; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.7.1.1"
1159
+ },
1160
+ {
1161
+ "id": "CIBA-056",
1162
+ "section": "7.1.1",
1163
+ "label": "署名要求のjti",
1164
+ "requirement": "Require a unique jti on signed authentication requests.",
1165
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.7.1.1",
1166
+ "normative_strength": "条件付き必須(署名付き認証要求を実装する場合)",
1167
+ "conditional": true,
1168
+ "first_version": "excluded",
1169
+ "responsibility": "gem (excluded capability)",
1170
+ "audit_status": "optional_excluded",
1171
+ "evidence": "適用条件となる機能を初版では提供しない。非対応の表明・入口拒否は別の適用内要件で確認する。",
1172
+ "code_refs": [],
1173
+ "test_refs": [],
1174
+ "normative_basis": "§7.1.1 / 署名要求のjti: 条件付き必須(署名付き認証要求を実装する場合)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
1175
+ "source_clause_locator": "CIBA Core section 7.1.1; catalog label: 署名要求のjti; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.7.1.1"
1176
+ },
1177
+ {
1178
+ "id": "CIBA-057",
1179
+ "section": "7.1.1",
1180
+ "label": "署名要求のrequested_expiry型",
1181
+ "requirement": "Accept requested_expiry as either JSON string or number inside signed authentication requests.",
1182
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.7.1.1",
1183
+ "normative_strength": "記述的要件(OP must accept either type; source uses lowercase “must”)",
1184
+ "conditional": true,
1185
+ "first_version": "excluded",
1186
+ "responsibility": "gem (excluded capability)",
1187
+ "audit_status": "optional_excluded",
1188
+ "evidence": "適用条件となる機能を初版では提供しない。非対応の表明・入口拒否は別の適用内要件で確認する。",
1189
+ "code_refs": [],
1190
+ "test_refs": [],
1191
+ "normative_basis": "§7.1.1 / 署名要求のrequested_expiry型: 記述的要件(OP must accept either type; source uses lowercase “must”)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
1192
+ "source_clause_locator": "CIBA Core section 7.1.1; catalog label: 署名要求のrequested_expiry型; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.7.1.1"
1193
+ },
1194
+ {
1195
+ "id": "CIBA-058",
1196
+ "section": "7.1.1",
1197
+ "label": "署名要求の内外混在禁止",
1198
+ "requirement": "Do not allow authentication request parameters outside a signed request JWT; separate client authentication parameters remain outside.",
1199
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.7.1.1",
1200
+ "normative_strength": "条件付き必須(署名付き認証要求を実装する場合)",
1201
+ "conditional": true,
1202
+ "first_version": "excluded",
1203
+ "responsibility": "gem (excluded capability)",
1204
+ "audit_status": "optional_excluded",
1205
+ "evidence": "適用条件となる機能を初版では提供しない。非対応の表明・入口拒否は別の適用内要件で確認する。",
1206
+ "code_refs": [],
1207
+ "test_refs": [],
1208
+ "normative_basis": "§7.1.1 / 署名要求の内外混在禁止: 条件付き必須(署名付き認証要求を実装する場合)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
1209
+ "source_clause_locator": "CIBA Core section 7.1.1; catalog label: 署名要求の内外混在禁止; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.7.1.1"
1210
+ },
1211
+ {
1212
+ "id": "CIBA-059",
1213
+ "section": "7.1.1",
1214
+ "label": "暗号化要求非対応",
1215
+ "requirement": "Do not treat encrypted JWT authentication requests as a supported signed-request format.",
1216
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.7.1.1",
1217
+ "normative_strength": "記述的要件(7.1.1 does not state the catalog prohibition as an RFC2119 rule)",
1218
+ "conditional": true,
1219
+ "first_version": "excluded",
1220
+ "responsibility": "gem (excluded capability)",
1221
+ "audit_status": "optional_excluded",
1222
+ "evidence": "適用条件となる機能を初版では提供しない。非対応の表明・入口拒否は別の適用内要件で確認する。",
1223
+ "code_refs": [],
1224
+ "test_refs": [],
1225
+ "normative_basis": "§7.1.1 / 暗号化要求非対応: 記述的要件(7.1.1 does not state the catalog prohibition as an RFC2119 rule)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
1226
+ "source_clause_locator": "CIBA Core section 7.1.1; catalog label: 暗号化要求非対応; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.7.1.1"
1227
+ },
1228
+ {
1229
+ "id": "CIBA-060",
1230
+ "section": "7.1.2",
1231
+ "label": "user_codeはOPパスワードと別",
1232
+ "requirement": "If user_code is supported, use a code distinct from the user's OP password.",
1233
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.7.1.2",
1234
+ "normative_strength": "仕様定義(user_codeの秘密値はOPのパスワードとは別)",
1235
+ "conditional": true,
1236
+ "first_version": "excluded",
1237
+ "responsibility": "gem + app (excluded capability)",
1238
+ "audit_status": "optional_excluded",
1239
+ "evidence": "適用条件となる機能を初版では提供しない。非対応の表明・入口拒否は別の適用内要件で確認する。",
1240
+ "code_refs": [],
1241
+ "test_refs": [],
1242
+ "normative_basis": "§7.1.2 / user_codeはOPパスワードと別: 仕様定義(user_codeの秘密値はOPのパスワードとは別)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
1243
+ "source_clause_locator": "CIBA Core section 7.1.2; catalog label: user_codeはOPパスワードと別; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.7.1.2"
1244
+ },
1245
+ {
1246
+ "id": "CIBA-061",
1247
+ "section": "7.1.2",
1248
+ "label": "user_codeの例外ポリシー",
1249
+ "requirement": "If user_code is supported, allow policy for clients/users without it as permitted by the specification.",
1250
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.7.1.2",
1251
+ "normative_strength": "任意のポリシー(user_code対応時、例外を許容できる。lowercase may)",
1252
+ "conditional": true,
1253
+ "first_version": "excluded",
1254
+ "responsibility": "gem + app (excluded capability)",
1255
+ "audit_status": "optional_excluded",
1256
+ "evidence": "適用条件となる機能を初版では提供しない。非対応の表明・入口拒否は別の適用内要件で確認する。",
1257
+ "code_refs": [],
1258
+ "test_refs": [],
1259
+ "normative_basis": "§7.1.2 / user_codeの例外ポリシー: 任意のポリシー(user_code対応時、例外を許容できる。lowercase may)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
1260
+ "source_clause_locator": "CIBA Core section 7.1.2; catalog label: user_codeの例外ポリシー; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.7.1.2"
1261
+ },
1262
+ {
1263
+ "id": "CIBA-062",
1264
+ "section": "7.1.2",
1265
+ "label": "user_codeの都度入力",
1266
+ "requirement": "Client must not store user_code and requests it for each CIBA flow.",
1267
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.7.1.2",
1268
+ "normative_strength": "必須(client MUST NOT store user_code)",
1269
+ "conditional": true,
1270
+ "first_version": "excluded",
1271
+ "responsibility": "client",
1272
+ "audit_status": "optional_excluded",
1273
+ "evidence": "適用条件となる機能を初版では提供しない。非対応の表明・入口拒否は別の適用内要件で確認する。",
1274
+ "code_refs": [],
1275
+ "test_refs": [],
1276
+ "normative_basis": "§7.1.2 / user_codeの都度入力: 必須(client MUST NOT store user_code)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
1277
+ "source_clause_locator": "CIBA Core section 7.1.2; catalog label: user_codeの都度入力; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.7.1.2"
1278
+ },
1279
+ {
1280
+ "id": "CIBA-063",
1281
+ "section": "7.1.2",
1282
+ "label": "user_code変更手段",
1283
+ "requirement": "If user_code is supported, OP should provide a way for users to change it.",
1284
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.7.1.2",
1285
+ "normative_strength": "設計指針(user_code変更手段、lowercase should)",
1286
+ "conditional": true,
1287
+ "first_version": "excluded",
1288
+ "responsibility": "app",
1289
+ "audit_status": "optional_excluded",
1290
+ "evidence": "適用条件となる機能を初版では提供しない。非対応の表明・入口拒否は別の適用内要件で確認する。",
1291
+ "code_refs": [],
1292
+ "test_refs": [],
1293
+ "normative_basis": "§7.1.2 / user_code変更手段: 設計指針(user_code変更手段、lowercase should)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
1294
+ "source_clause_locator": "CIBA Core section 7.1.2; catalog label: user_code変更手段; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.7.1.2"
1295
+ },
1296
+ {
1297
+ "id": "CIBA-064",
1298
+ "section": "7.2",
1299
+ "label": "登録方式による認証検証",
1300
+ "requirement": "Validate client authentication using the registered/configured method before accepting an authentication request.",
1301
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.7.2",
1302
+ "normative_strength": "必須(MUST / REQUIRED)",
1303
+ "conditional": false,
1304
+ "first_version": "in scope",
1305
+ "responsibility": "gem + upstream",
1306
+ "audit_status": "verified",
1307
+ "evidence": "直接テストでこの挙動を確認: test/ciba_protocol_test.rb#test_post_client_authentication, test/ciba_security_test.rb#test_jwt_client_assertion_requires_issuer_expiry_and_jti. 実装根拠はJSONのcode_refs。",
1308
+ "code_refs": [
1309
+ "CibaSupport::ClientAuthentication#require_oauth_application",
1310
+ "CibaSupport::ClientAuthentication#jwt_assertion",
1311
+ "require_oauth_application (upstream)"
1312
+ ],
1313
+ "test_refs": [
1314
+ "test/ciba_protocol_test.rb#test_post_client_authentication",
1315
+ "test/ciba_security_test.rb#test_jwt_client_assertion_requires_issuer_expiry_and_jti"
1316
+ ],
1317
+ "normative_basis": "§7.2 / 登録方式による認証検証: 必須(MUST / REQUIRED)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
1318
+ "source_clause_locator": "CIBA Core section 7.2; catalog label: 登録方式による認証検証; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.7.2"
1319
+ },
1320
+ {
1321
+ "id": "CIBA-065",
1322
+ "section": "7.2",
1323
+ "label": "公開鍵認証の推奨",
1324
+ "requirement": "Support the recommended public-key client authentication alternative to sending shared secrets in requests.",
1325
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.7.2",
1326
+ "normative_strength": "推奨(RECOMMENDED、Clientによる公開鍵認証の利用)",
1327
+ "conditional": false,
1328
+ "first_version": "client obligation",
1329
+ "responsibility": "client",
1330
+ "audit_status": "client_only",
1331
+ "evidence": "CIBA Clientに対する要求。OP gemの実装率・合否には算入しない。",
1332
+ "code_refs": [],
1333
+ "test_refs": [],
1334
+ "normative_basis": "§7.2 / 公開鍵認証の推奨: 推奨(RECOMMENDED、Clientによる公開鍵認証の利用)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
1335
+ "source_clause_locator": "CIBA Core section 7.2; catalog label: 公開鍵認証の推奨; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.7.2"
1336
+ },
1337
+ {
1338
+ "id": "CIBA-066",
1339
+ "section": "7.2",
1340
+ "label": "署名要求検証",
1341
+ "requirement": "If signed requests are supported, validate JWT signature and all other applicable JWT validity constraints.",
1342
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.7.2",
1343
+ "normative_strength": "条件付き必須(署名付き要求がある場合。§7.2のMUST validateに含まれる)",
1344
+ "conditional": true,
1345
+ "first_version": "excluded",
1346
+ "responsibility": "gem",
1347
+ "audit_status": "optional_excluded",
1348
+ "evidence": "適用条件となる機能を初版では提供しない。非対応の表明・入口拒否は別の適用内要件で確認する。",
1349
+ "code_refs": [],
1350
+ "test_refs": [],
1351
+ "normative_basis": "§7.2 / 署名要求検証: 条件付き必須(署名付き要求がある場合。§7.2のMUST validateに含まれる)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
1352
+ "source_clause_locator": "CIBA Core section 7.2; catalog label: 署名要求検証; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.7.2"
1353
+ },
1354
+ {
1355
+ "id": "CIBA-067",
1356
+ "section": "7.2",
1357
+ "label": "認証要求パラメータ検証",
1358
+ "requirement": "Validate all authentication request parameters within the supported feature scope.",
1359
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.7.2",
1360
+ "normative_strength": "必須(MUST / REQUIRED)",
1361
+ "conditional": false,
1362
+ "first_version": "in scope",
1363
+ "responsibility": "gem",
1364
+ "audit_status": "verified",
1365
+ "evidence": "直接テストでこの挙動を確認: test/ciba_protocol_test.rb#test_request_validation_and_unknown_parameters, test/ciba_protocol_test.rb#test_expiry_binding_context_and_offline_access, test/ciba_requirements_test.rb#test_scope_syntax_errors_are_invalid_scope. 実装根拠はJSONのcode_refs。",
1366
+ "code_refs": [
1367
+ "backchannel_authentication route",
1368
+ "ciba_request_accepted"
1369
+ ],
1370
+ "test_refs": [
1371
+ "test/ciba_protocol_test.rb#test_request_validation_and_unknown_parameters",
1372
+ "test/ciba_protocol_test.rb#test_expiry_binding_context_and_offline_access",
1373
+ "test/ciba_requirements_test.rb#test_scope_syntax_errors_are_invalid_scope"
1374
+ ],
1375
+ "normative_basis": "§7.2 / 認証要求パラメータ検証: 必須(MUST / REQUIRED)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
1376
+ "source_clause_locator": "CIBA Core section 7.2; catalog label: 認証要求パラメータ検証; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.7.2"
1377
+ },
1378
+ {
1379
+ "id": "CIBA-068",
1380
+ "section": "7.2",
1381
+ "label": "複数hintのエラー",
1382
+ "requirement": "Return invalid_request when multiple hints are provided.",
1383
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.7.2",
1384
+ "normative_strength": "必須(MUST / REQUIRED)",
1385
+ "conditional": true,
1386
+ "first_version": "in scope",
1387
+ "responsibility": "gem",
1388
+ "audit_status": "verified",
1389
+ "evidence": "直接テストでこの挙動を確認: test/ciba_protocol_test.rb#test_request_validation_and_unknown_parameters. 実装根拠はJSONのcode_refs。",
1390
+ "code_refs": [
1391
+ "backchannel_authentication route",
1392
+ "ciba_request_accepted"
1393
+ ],
1394
+ "test_refs": [
1395
+ "test/ciba_protocol_test.rb#test_request_validation_and_unknown_parameters"
1396
+ ],
1397
+ "normative_basis": "§7.2 / 複数hintのエラー: 必須(MUST / REQUIRED)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
1398
+ "source_clause_locator": "CIBA Core section 7.2; catalog label: 複数hintのエラー; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.7.2"
1399
+ },
1400
+ {
1401
+ "id": "CIBA-069",
1402
+ "section": "7.2",
1403
+ "label": "hintとユーザーの検証",
1404
+ "requirement": "Process a supported hint to establish its validity and identify an eligible user before request acceptance.",
1405
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.7.2",
1406
+ "normative_strength": "必須(MUST / REQUIRED)",
1407
+ "conditional": false,
1408
+ "first_version": "in scope",
1409
+ "responsibility": "gem + app",
1410
+ "audit_status": "verified",
1411
+ "evidence": "無効・未解決hintは拒否し、resolverが返すアカウントの利用可能性を検証する。外部の本人識別方式はアプリ契約。",
1412
+ "code_refs": [
1413
+ "validate_ciba_request!",
1414
+ "resolve_ciba_login_hint",
1415
+ "ciba_account_eligible?"
1416
+ ],
1417
+ "test_refs": [
1418
+ "test/ciba_protocol_test.rb#test_request_validation_and_unknown_parameters"
1419
+ ],
1420
+ "normative_basis": "§7.2 / hintとユーザーの検証: 必須(MUST / REQUIRED)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
1421
+ "source_clause_locator": "CIBA Core section 7.2; catalog label: hintとユーザーの検証; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.7.2"
1422
+ },
1423
+ {
1424
+ "id": "CIBA-070",
1425
+ "section": "7.2",
1426
+ "label": "hintポリシーの伝達",
1427
+ "requirement": "Communicate accepted hint types and where applicable issuer/max-age policy to clients.",
1428
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.7.2",
1429
+ "normative_strength": "記述的要件(hint policy “should be communicated”; validation/information explicitly out of scope)",
1430
+ "conditional": false,
1431
+ "first_version": "in scope with app contract",
1432
+ "responsibility": "gem + app",
1433
+ "audit_status": "app_contract",
1434
+ "evidence": "仕様がOP/client/appの選択・ユーザー提示・業務判断を含む。gemのフックや保存値は契約の境界であり、アプリ動作全体の証拠ではない。",
1435
+ "code_refs": [
1436
+ "backchannel_authentication route",
1437
+ "ciba_request_accepted"
1438
+ ],
1439
+ "test_refs": [],
1440
+ "normative_basis": "§7.2 / hintポリシーの伝達: 記述的要件(hint policy “should be communicated”; validation/information explicitly out of scope)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
1441
+ "source_clause_locator": "CIBA Core section 7.2; catalog label: hintポリシーの伝達; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.7.2"
1442
+ },
1443
+ {
1444
+ "id": "CIBA-071",
1445
+ "section": "7.2",
1446
+ "label": "不正または不明hintのエラー",
1447
+ "requirement": "Return an appropriate Authentication Error Response for an invalid hint or unidentified user.",
1448
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.7.2",
1449
+ "normative_strength": "設計指針(lowercase should。応答コードの意味は§13参照)",
1450
+ "conditional": false,
1451
+ "first_version": "in scope",
1452
+ "responsibility": "gem",
1453
+ "audit_status": "verified",
1454
+ "evidence": "直接テストでこの挙動を確認: test/ciba_protocol_test.rb#test_request_validation_and_unknown_parameters. 実装根拠はJSONのcode_refs。",
1455
+ "code_refs": [
1456
+ "backchannel_authentication route",
1457
+ "ciba_request_accepted"
1458
+ ],
1459
+ "test_refs": [
1460
+ "test/ciba_protocol_test.rb#test_request_validation_and_unknown_parameters"
1461
+ ],
1462
+ "normative_basis": "§7.2 / 不正または不明hintのエラー: 設計指針(lowercase should。応答コードの意味は§13参照)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
1463
+ "source_clause_locator": "CIBA Core section 7.2; catalog label: 不正または不明hintのエラー; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.7.2"
1464
+ },
1465
+ {
1466
+ "id": "CIBA-072",
1467
+ "section": "7.2",
1468
+ "label": "必須パラメータ検証",
1469
+ "requirement": "Verify required parameters are present and used according to their requirements.",
1470
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.7.2",
1471
+ "normative_strength": "必須(MUST / REQUIRED)",
1472
+ "conditional": false,
1473
+ "first_version": "in scope",
1474
+ "responsibility": "gem",
1475
+ "audit_status": "verified",
1476
+ "evidence": "直接テストでこの挙動を確認: test/ciba_protocol_test.rb#test_request_validation_and_unknown_parameters. 実装根拠はJSONのcode_refs。",
1477
+ "code_refs": [
1478
+ "backchannel_authentication route",
1479
+ "ciba_request_accepted"
1480
+ ],
1481
+ "test_refs": [
1482
+ "test/ciba_protocol_test.rb#test_request_validation_and_unknown_parameters"
1483
+ ],
1484
+ "normative_basis": "§7.2 / 必須パラメータ検証: 必須(MUST / REQUIRED)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
1485
+ "source_clause_locator": "CIBA Core section 7.2; catalog label: 必須パラメータ検証; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.7.2"
1486
+ },
1487
+ {
1488
+ "id": "CIBA-073",
1489
+ "section": "7.2",
1490
+ "label": "未知パラメータの無視",
1491
+ "requirement": "Ignore unrecognized authentication request parameters.",
1492
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.7.2",
1493
+ "normative_strength": "必須(MUST / REQUIRED)",
1494
+ "conditional": false,
1495
+ "first_version": "in scope",
1496
+ "responsibility": "gem",
1497
+ "audit_status": "verified",
1498
+ "evidence": "直接テストでこの挙動を確認: test/ciba_protocol_test.rb#test_request_validation_and_unknown_parameters. 実装根拠はJSONのcode_refs。",
1499
+ "code_refs": [
1500
+ "backchannel_authentication route",
1501
+ "ciba_request_accepted"
1502
+ ],
1503
+ "test_refs": [
1504
+ "test/ciba_protocol_test.rb#test_request_validation_and_unknown_parameters"
1505
+ ],
1506
+ "normative_basis": "§7.2 / 未知パラメータの無視: 必須(MUST / REQUIRED)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
1507
+ "source_clause_locator": "CIBA Core section 7.2; catalog label: 未知パラメータの無視; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.7.2"
1508
+ },
1509
+ {
1510
+ "id": "CIBA-074",
1511
+ "section": "7.2",
1512
+ "label": "開始エラーの形式",
1513
+ "requirement": "Return Authentication Error Responses per section 13 when authentication request validation fails.",
1514
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.7.2",
1515
+ "normative_strength": "必須(MUST / REQUIRED)",
1516
+ "conditional": true,
1517
+ "first_version": "in scope",
1518
+ "responsibility": "gem",
1519
+ "audit_status": "verified",
1520
+ "evidence": "直接テストでこの挙動を確認: test/ciba_protocol_test.rb#test_request_validation_and_unknown_parameters. 実装根拠はJSONのcode_refs。",
1521
+ "code_refs": [
1522
+ "backchannel_authentication route",
1523
+ "ciba_request_accepted"
1524
+ ],
1525
+ "test_refs": [
1526
+ "test/ciba_protocol_test.rb#test_request_validation_and_unknown_parameters"
1527
+ ],
1528
+ "normative_basis": "§7.2 / 開始エラーの形式: 必須(MUST / REQUIRED)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
1529
+ "source_clause_locator": "CIBA Core section 7.2; catalog label: 開始エラーの形式; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.7.2"
1530
+ },
1531
+ {
1532
+ "id": "CIBA-075",
1533
+ "section": "7.3",
1534
+ "label": "受付成功HTTP 200",
1535
+ "requirement": "Return HTTP 200 acknowledgement after validating and accepting an authentication request.",
1536
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.7.3",
1537
+ "normative_strength": "応答定義(成功時HTTP 200、MUSTという語ではない)",
1538
+ "conditional": false,
1539
+ "first_version": "in scope",
1540
+ "responsibility": "gem",
1541
+ "audit_status": "verified",
1542
+ "evidence": "直接テストでこの挙動を確認: test/ciba_protocol_test.rb#test_request_validation_and_unknown_parameters. 実装根拠はJSONのcode_refs。",
1543
+ "code_refs": [
1544
+ "json_response_success (upstream)",
1545
+ "ciba_error"
1546
+ ],
1547
+ "test_refs": [
1548
+ "test/ciba_protocol_test.rb#test_request_validation_and_unknown_parameters"
1549
+ ],
1550
+ "normative_basis": "§7.3 / 受付成功HTTP 200: 応答定義(成功時HTTP 200、MUSTという語ではない)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
1551
+ "source_clause_locator": "CIBA Core section 7.3; catalog label: 受付成功HTTP 200; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.7.3"
1552
+ },
1553
+ {
1554
+ "id": "CIBA-076",
1555
+ "section": "7.3",
1556
+ "label": "auth_req_id必須と一意性",
1557
+ "requirement": "Return a unique auth_req_id in the acknowledgement.",
1558
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.7.3",
1559
+ "normative_strength": "必須(MUST / REQUIRED)",
1560
+ "conditional": false,
1561
+ "first_version": "in scope",
1562
+ "responsibility": "gem",
1563
+ "audit_status": "verified",
1564
+ "evidence": "直接テストでこの挙動を確認: test/ciba_requirements_test.rb#test_auth_req_id_has_required_entropy_and_restricted_characters. 実装根拠はJSONのcode_refs。",
1565
+ "code_refs": [
1566
+ "backchannel_authentication route",
1567
+ "validate_ciba_request!"
1568
+ ],
1569
+ "test_refs": [
1570
+ "test/ciba_requirements_test.rb#test_auth_req_id_has_required_entropy_and_restricted_characters"
1571
+ ],
1572
+ "normative_basis": "§7.3 / auth_req_id必須と一意性: 必須(MUST / REQUIRED)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
1573
+ "source_clause_locator": "CIBA Core section 7.3; catalog label: auth_req_id必須と一意性; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.7.3"
1574
+ },
1575
+ {
1576
+ "id": "CIBA-077",
1577
+ "section": "7.3",
1578
+ "label": "auth_req_id entropy",
1579
+ "requirement": "Generate auth_req_id with at least 128 bits entropy, preferably at least 160 bits.",
1580
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.7.3",
1581
+ "normative_strength": "必須(MUST / REQUIRED)",
1582
+ "conditional": false,
1583
+ "first_version": "in scope",
1584
+ "responsibility": "gem",
1585
+ "audit_status": "code_review_only",
1586
+ "evidence": "乱数生成はSecureRandomの32bytesに依存するため256bitの入力。テストは長さ・文字集合・少数サンプルの相違のみで、entropyそのものの統計的証明ではない。",
1587
+ "code_refs": [
1588
+ "SecureRandom.urlsafe_base64(32) in backchannel_authentication route"
1589
+ ],
1590
+ "test_refs": [
1591
+ "test/ciba_requirements_test.rb#test_auth_req_id_has_required_entropy_and_restricted_characters"
1592
+ ],
1593
+ "normative_basis": "§7.3 / auth_req_id entropy: 必須(MUST / REQUIRED)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
1594
+ "source_clause_locator": "CIBA Core section 7.3; catalog label: auth_req_id entropy; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.7.3"
1595
+ },
1596
+ {
1597
+ "id": "CIBA-078",
1598
+ "section": "7.3",
1599
+ "label": "auth_req_id文字集合",
1600
+ "requirement": "Restrict auth_req_id to A-Z a-z 0-9 dot hyphen underscore.",
1601
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.7.3",
1602
+ "normative_strength": "必須(MUST / REQUIRED)",
1603
+ "conditional": false,
1604
+ "first_version": "in scope",
1605
+ "responsibility": "gem",
1606
+ "audit_status": "verified",
1607
+ "evidence": "直接テストでこの挙動を確認: test/ciba_requirements_test.rb#test_auth_req_id_has_required_entropy_and_restricted_characters. 実装根拠はJSONのcode_refs。",
1608
+ "code_refs": [
1609
+ "backchannel_authentication route",
1610
+ "validate_ciba_request!"
1611
+ ],
1612
+ "test_refs": [
1613
+ "test/ciba_requirements_test.rb#test_auth_req_id_has_required_entropy_and_restricted_characters"
1614
+ ],
1615
+ "normative_basis": "§7.3 / auth_req_id文字集合: 必須(MUST / REQUIRED)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
1616
+ "source_clause_locator": "CIBA Core section 7.3; catalog label: auth_req_id文字集合; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.7.3"
1617
+ },
1618
+ {
1619
+ "id": "CIBA-079",
1620
+ "section": "7.3",
1621
+ "label": "auth_req_idのopaque扱い",
1622
+ "requirement": "Client treats auth_req_id as opaque.",
1623
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.7.3",
1624
+ "normative_strength": "必須(Client MUST treat auth_req_id as opaque)",
1625
+ "conditional": false,
1626
+ "first_version": "client obligation",
1627
+ "responsibility": "client",
1628
+ "audit_status": "client_only",
1629
+ "evidence": "CIBA Clientに対する要求。OP gemの実装率・合否には算入しない。",
1630
+ "code_refs": [],
1631
+ "test_refs": [],
1632
+ "normative_basis": "§7.3 / auth_req_idのopaque扱い: 必須(Client MUST treat auth_req_id as opaque)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
1633
+ "source_clause_locator": "CIBA Core section 7.3; catalog label: auth_req_idのopaque扱い; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.7.3"
1634
+ },
1635
+ {
1636
+ "id": "CIBA-080",
1637
+ "section": "7.3",
1638
+ "label": "expires_in",
1639
+ "requirement": "Return expires_in as a positive integer JSON number measuring request lifetime in seconds from receipt.",
1640
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.7.3",
1641
+ "normative_strength": "必須(MUST / REQUIRED)",
1642
+ "conditional": false,
1643
+ "first_version": "in scope",
1644
+ "responsibility": "gem",
1645
+ "audit_status": "verified",
1646
+ "evidence": "直接テストでこの挙動を確認: test/ciba_requirements_test.rb#test_requested_expiry_expires_at_the_exact_boundary. 実装根拠はJSONのcode_refs。",
1647
+ "code_refs": [
1648
+ "backchannel_authentication route",
1649
+ "validate_ciba_request!"
1650
+ ],
1651
+ "test_refs": [
1652
+ "test/ciba_requirements_test.rb#test_requested_expiry_expires_at_the_exact_boundary"
1653
+ ],
1654
+ "normative_basis": "§7.3 / expires_in: 必須(MUST / REQUIRED)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
1655
+ "source_clause_locator": "CIBA Core section 7.3; catalog label: expires_in; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.7.3"
1656
+ },
1657
+ {
1658
+ "id": "CIBA-081",
1659
+ "section": "7.3",
1660
+ "label": "interval",
1661
+ "requirement": "If provided for poll/ping, return interval as a positive integer JSON number in seconds.",
1662
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.7.3",
1663
+ "normative_strength": "任意(interval is OPTIONAL; if supplied, positive integer; client MUST wait; default rule separate ID 82)",
1664
+ "conditional": true,
1665
+ "first_version": "in scope",
1666
+ "responsibility": "gem",
1667
+ "audit_status": "verified",
1668
+ "evidence": "原仕様の義務主体はCIBA Client。OP gemにクライアント実装は含まれず、合否対象にしない。",
1669
+ "code_refs": [
1670
+ "backchannel_authentication route",
1671
+ "validate_ciba_request!"
1672
+ ],
1673
+ "test_refs": [
1674
+ "test/ciba_security_test.rb#test_additional_authorized_scopes_survive_acceptance_and_token_issuance"
1675
+ ],
1676
+ "normative_basis": "§7.3 / interval: 任意(interval is OPTIONAL; if supplied, positive integer; client MUST wait; default rule separate ID 82)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
1677
+ "source_clause_locator": "CIBA Core section 7.3; catalog label: interval; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.7.3"
1678
+ },
1679
+ {
1680
+ "id": "CIBA-082",
1681
+ "section": "7.3",
1682
+ "label": "interval既定値",
1683
+ "requirement": "Client uses five seconds when interval is omitted.",
1684
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.7.3",
1685
+ "normative_strength": "必須(client MUST use 5-second default when interval omitted)",
1686
+ "conditional": true,
1687
+ "first_version": "client obligation",
1688
+ "responsibility": "client",
1689
+ "audit_status": "client_only",
1690
+ "evidence": "CIBA Clientに対する要求。OP gemの実装率・合否には算入しない。",
1691
+ "code_refs": [],
1692
+ "test_refs": [],
1693
+ "normative_basis": "§7.3 / interval既定値: 必須(client MUST use 5-second default when interval omitted)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
1694
+ "source_clause_locator": "CIBA Core section 7.3; catalog label: interval既定値; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.7.3"
1695
+ },
1696
+ {
1697
+ "id": "CIBA-083",
1698
+ "section": "7.3",
1699
+ "label": "未知応答パラメータ",
1700
+ "requirement": "Client ignores unrecognized acknowledgement response parameters.",
1701
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.7.3",
1702
+ "normative_strength": "必須(MUST / REQUIRED)",
1703
+ "conditional": false,
1704
+ "first_version": "client obligation",
1705
+ "responsibility": "client",
1706
+ "audit_status": "client_only",
1707
+ "evidence": "CIBA Clientに対する要求。OP gemの実装率・合否には算入しない。",
1708
+ "code_refs": [],
1709
+ "test_refs": [],
1710
+ "normative_basis": "§7.3 / 未知応答パラメータ: 必須(MUST / REQUIRED)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
1711
+ "source_clause_locator": "CIBA Core section 7.3; catalog label: 未知応答パラメータ; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.7.3"
1712
+ },
1713
+ {
1714
+ "id": "CIBA-084",
1715
+ "section": "7.4",
1716
+ "label": "受付応答の必須項目確認",
1717
+ "requirement": "Client validates required acknowledgement parameters on HTTP 200.",
1718
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.7.4",
1719
+ "normative_strength": "必須(MUST / REQUIRED)",
1720
+ "conditional": false,
1721
+ "first_version": "client obligation",
1722
+ "responsibility": "client",
1723
+ "audit_status": "client_only",
1724
+ "evidence": "CIBA Clientに対する要求。OP gemの実装率・合否には算入しない。",
1725
+ "code_refs": [],
1726
+ "test_refs": [],
1727
+ "normative_basis": "§7.4 / 受付応答の必須項目確認: 必須(MUST / REQUIRED)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
1728
+ "source_clause_locator": "CIBA Core section 7.4; catalog label: 受付応答の必須項目確認; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.7.4"
1729
+ },
1730
+ {
1731
+ "id": "CIBA-085",
1732
+ "section": "7.4",
1733
+ "label": "auth_req_id保持",
1734
+ "requirement": "Client retains auth_req_id for subsequent polling or callback validation.",
1735
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.7.4",
1736
+ "normative_strength": "必須(MUST / REQUIRED)",
1737
+ "conditional": false,
1738
+ "first_version": "client obligation",
1739
+ "responsibility": "client",
1740
+ "audit_status": "client_only",
1741
+ "evidence": "CIBA Clientに対する要求。OP gemの実装率・合否には算入しない。",
1742
+ "code_refs": [],
1743
+ "test_refs": [],
1744
+ "normative_basis": "§7.4 / auth_req_id保持: 必須(MUST / REQUIRED)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
1745
+ "source_clause_locator": "CIBA Core section 7.4; catalog label: auth_req_id保持; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.7.4"
1746
+ },
1747
+ {
1748
+ "id": "CIBA-086",
1749
+ "section": "7.4",
1750
+ "label": "クライアント期限管理",
1751
+ "requirement": "Client should retain expiry for cleanup of requests awaiting callback.",
1752
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.7.4",
1753
+ "normative_strength": "設計指針(期限保存、lowercase should)",
1754
+ "conditional": false,
1755
+ "first_version": "client obligation",
1756
+ "responsibility": "client",
1757
+ "audit_status": "client_only",
1758
+ "evidence": "CIBA Clientに対する要求。OP gemの実装率・合否には算入しない。",
1759
+ "code_refs": [],
1760
+ "test_refs": [],
1761
+ "normative_basis": "§7.4 / クライアント期限管理: 設計指針(期限保存、lowercase should)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
1762
+ "source_clause_locator": "CIBA Core section 7.4; catalog label: クライアント期限管理; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.7.4"
1763
+ },
1764
+ {
1765
+ "id": "CIBA-087",
1766
+ "section": "8",
1767
+ "label": "認証チャネルとacrの選択",
1768
+ "requirement": "OP identifies user and chooses an authentication channel considering acr_values; evaluate gem/application responsibility separately.",
1769
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.8",
1770
+ "normative_strength": "記述的要件(§8 places user/channel/acr selection in OP process; catalog added an evaluation abstraction)",
1771
+ "conditional": false,
1772
+ "first_version": "in scope with app contract",
1773
+ "responsibility": "gem + app",
1774
+ "audit_status": "app_contract",
1775
+ "evidence": "仕様がOP/client/appの選択・ユーザー提示・業務判断を含む。gemのフックや保存値は契約の境界であり、アプリ動作全体の証拠ではない。",
1776
+ "code_refs": [
1777
+ "create_token",
1778
+ "id_token_claims"
1779
+ ],
1780
+ "test_refs": [],
1781
+ "normative_basis": "§8 / 認証チャネルとacrの選択: 記述的要件(§8 places user/channel/acr selection in OP process; catalog added an evaluation abstraction)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
1782
+ "source_clause_locator": "CIBA Core section 8; catalog label: 認証チャネルとacrの選択; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.8"
1783
+ },
1784
+ {
1785
+ "id": "CIBA-088",
1786
+ "section": "8",
1787
+ "label": "認証後の承認取得",
1788
+ "requirement": "Before successful token issuance, obtain the authenticated end-user's authorization decision per OIDC Core 3.1.2.4.",
1789
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.8",
1790
+ "normative_strength": "必須(MUST / REQUIRED)",
1791
+ "conditional": false,
1792
+ "first_version": "in scope with app contract",
1793
+ "responsibility": "gem + app",
1794
+ "audit_status": "app_contract",
1795
+ "evidence": "gemはRuby APIの承認済み状態を発行条件にする。本人確認・承認権限・意思決定の真正性はアプリが保証するため、gemのテストだけではこの要求の達成を主張しない。",
1796
+ "code_refs": [
1797
+ "approve_ciba_request",
1798
+ "ciba_complete",
1799
+ "create_token"
1800
+ ],
1801
+ "test_refs": [],
1802
+ "normative_basis": "§8 / 認証後の承認取得: 必須(MUST / REQUIRED)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
1803
+ "source_clause_locator": "CIBA Core section 8; catalog label: 認証後の承認取得; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.8"
1804
+ },
1805
+ {
1806
+ "id": "CIBA-089",
1807
+ "section": "10",
1808
+ "label": "登録モード以外へ配送しない",
1809
+ "requirement": "Deliver authentication result only through the client's single registered delivery mode.",
1810
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.10",
1811
+ "normative_strength": "必須(MUST / REQUIRED)",
1812
+ "conditional": false,
1813
+ "first_version": "in scope",
1814
+ "responsibility": "gem",
1815
+ "audit_status": "verified",
1816
+ "evidence": "直接テストでこの挙動を確認: test/ciba_configuration_test.rb#test_unavailable_or_unsupported_client_metadata_is_rejected. 実装根拠はJSONのcode_refs。",
1817
+ "code_refs": [
1818
+ "create_token",
1819
+ "validate_token_params"
1820
+ ],
1821
+ "test_refs": [
1822
+ "test/ciba_configuration_test.rb#test_unavailable_or_unsupported_client_metadata_is_rejected"
1823
+ ],
1824
+ "normative_basis": "§10 / 登録モード以外へ配送しない: 必須(MUST / REQUIRED)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
1825
+ "source_clause_locator": "CIBA Core section 10; catalog label: 登録モード以外へ配送しない; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.10"
1826
+ },
1827
+ {
1828
+ "id": "CIBA-090",
1829
+ "section": "10.1",
1830
+ "label": "Token Endpoint認証",
1831
+ "requirement": "Require registered client authentication for CIBA token requests.",
1832
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.10.1",
1833
+ "normative_strength": "必須(MUST / REQUIRED)",
1834
+ "conditional": false,
1835
+ "first_version": "in scope",
1836
+ "responsibility": "gem + upstream",
1837
+ "audit_status": "verified",
1838
+ "evidence": "直接テストでこの挙動を確認: test/ciba_integration_test.rb#test_client_authentication_is_required_at_both_endpoints. 実装根拠はJSONのcode_refs。",
1839
+ "code_refs": [
1840
+ "CibaSupport::ClientAuthentication#require_oauth_application",
1841
+ "CibaSupport::ClientAuthentication#jwt_assertion",
1842
+ "require_oauth_application (upstream)"
1843
+ ],
1844
+ "test_refs": [
1845
+ "test/ciba_integration_test.rb#test_client_authentication_is_required_at_both_endpoints"
1846
+ ],
1847
+ "normative_basis": "§10.1 / Token Endpoint認証: 必須(MUST / REQUIRED)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
1848
+ "source_clause_locator": "CIBA Core section 10.1; catalog label: Token Endpoint認証; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.10.1"
1849
+ },
1850
+ {
1851
+ "id": "CIBA-091",
1852
+ "section": "10.1",
1853
+ "label": "クライアントpoll間隔",
1854
+ "requirement": "Client must not poll more frequently than the OP's minimum interval.",
1855
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.10.1",
1856
+ "normative_strength": "必須(MUST / REQUIRED)",
1857
+ "conditional": false,
1858
+ "first_version": "client obligation",
1859
+ "responsibility": "client",
1860
+ "audit_status": "client_only",
1861
+ "evidence": "CIBA Clientに対する要求。OP gemの実装率・合否には算入しない。",
1862
+ "code_refs": [],
1863
+ "test_refs": [],
1864
+ "normative_basis": "§10.1 / クライアントpoll間隔: 必須(MUST / REQUIRED)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
1865
+ "source_clause_locator": "CIBA Core section 10.1; catalog label: クライアントpoll間隔; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.10.1"
1866
+ },
1867
+ {
1868
+ "id": "CIBA-092",
1869
+ "section": "10.1",
1870
+ "label": "long polling",
1871
+ "requirement": "Optionally support long polling with a recommended timeout of 30 seconds.",
1872
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.10.1",
1873
+ "normative_strength": "任意(long polling、lowercase may。30秒は参照仕様の推奨)",
1874
+ "conditional": true,
1875
+ "first_version": "excluded",
1876
+ "responsibility": "gem",
1877
+ "audit_status": "optional_excluded",
1878
+ "evidence": "適用条件となる機能を初版では提供しない。非対応の表明・入口拒否は別の適用内要件で確認する。",
1879
+ "code_refs": [],
1880
+ "test_refs": [],
1881
+ "normative_basis": "§10.1 / long polling: 任意(long polling、lowercase may。30秒は参照仕様の推奨)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
1882
+ "source_clause_locator": "CIBA Core section 10.1; catalog label: long polling; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.10.1"
1883
+ },
1884
+ {
1885
+ "id": "CIBA-093",
1886
+ "section": "10.1",
1887
+ "label": "OP応答時間",
1888
+ "requirement": "OP should not take more than 30 seconds to respond to polling requests.",
1889
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.10.1",
1890
+ "normative_strength": "推奨(OP should not take more than 30 seconds; source lowercase should)",
1891
+ "conditional": false,
1892
+ "first_version": "in scope with app contract",
1893
+ "responsibility": "gem + deployment",
1894
+ "audit_status": "app_contract",
1895
+ "evidence": "HTTPサーバー・DB・アプリフックを含む応答時間は運用設定に依存する。gemは30秒の全経路deadlineを実装していない。",
1896
+ "code_refs": [
1897
+ "ciba_http"
1898
+ ],
1899
+ "test_refs": [],
1900
+ "normative_basis": "§10.1 / OP応答時間: 推奨(OP should not take more than 30 seconds; source lowercase should)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
1901
+ "source_clause_locator": "CIBA Core section 10.1; catalog label: OP応答時間; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.10.1"
1902
+ },
1903
+ {
1904
+ "id": "CIBA-094",
1905
+ "section": "10.1",
1906
+ "label": "重複poll禁止",
1907
+ "requirement": "Client must not send overlapping requests using the same auth_req_id.",
1908
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.10.1",
1909
+ "normative_strength": "必須(MUST / REQUIRED)",
1910
+ "conditional": false,
1911
+ "first_version": "client obligation",
1912
+ "responsibility": "client",
1913
+ "audit_status": "client_only",
1914
+ "evidence": "CIBA Clientに対する要求。OP gemの実装率・合否には算入しない。",
1915
+ "code_refs": [],
1916
+ "test_refs": [],
1917
+ "normative_basis": "§10.1 / 重複poll禁止: 必須(MUST / REQUIRED)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
1918
+ "source_clause_locator": "CIBA Core section 10.1; catalog label: 重複poll禁止; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.10.1"
1919
+ },
1920
+ {
1921
+ "id": "CIBA-095",
1922
+ "section": "10.1",
1923
+ "label": "503とRetry-After",
1924
+ "requirement": "OP may return HTTP 503 with Retry-After under load; evaluate this optional behavior.",
1925
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.10.1",
1926
+ "normative_strength": "任意(OP MAY return 503 / Retry-After under stated condition)",
1927
+ "conditional": false,
1928
+ "first_version": "in scope",
1929
+ "responsibility": "gem",
1930
+ "audit_status": "verified",
1931
+ "evidence": "DBロックタイムアウトを503/Retry-Afterへ変換しrollbackする経路を検証。汎用の負荷制限・長時間負荷試験を意味しない。",
1932
+ "code_refs": [
1933
+ "ciba_http"
1934
+ ],
1935
+ "test_refs": [
1936
+ "test/ciba_security_test.rb#test_lock_timeout_returns_503_with_retry_after_and_rolls_back"
1937
+ ],
1938
+ "normative_basis": "§10.1 / 503とRetry-After: 任意(OP MAY return 503 / Retry-After under stated condition)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
1939
+ "source_clause_locator": "CIBA Core section 10.1; catalog label: 503とRetry-After; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.10.1"
1940
+ },
1941
+ {
1942
+ "id": "CIBA-096",
1943
+ "section": "10.1",
1944
+ "label": "Retry-After遵守",
1945
+ "requirement": "Client should respect Retry-After before retrying a token request.",
1946
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.10.1",
1947
+ "normative_strength": "推奨(client should respect Retry-After; lowercase should)",
1948
+ "conditional": false,
1949
+ "first_version": "client obligation",
1950
+ "responsibility": "client",
1951
+ "audit_status": "client_only",
1952
+ "evidence": "CIBA Clientに対する要求。OP gemの実装率・合否には算入しない。",
1953
+ "code_refs": [],
1954
+ "test_refs": [],
1955
+ "normative_basis": "§10.1 / Retry-After遵守: 推奨(client should respect Retry-After; lowercase should)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
1956
+ "source_clause_locator": "CIBA Core section 10.1; catalog label: Retry-After遵守; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.10.1"
1957
+ },
1958
+ {
1959
+ "id": "CIBA-097",
1960
+ "section": "10.1",
1961
+ "label": "pingクライアントのpoll許容",
1962
+ "requirement": "Treat a ping client that polls the token endpoint as a poll client.",
1963
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.10.1",
1964
+ "normative_strength": "条件付き必須(§10.1、ping clientがpollした場合はMUST treat as poll)",
1965
+ "conditional": true,
1966
+ "first_version": "excluded",
1967
+ "responsibility": "gem",
1968
+ "audit_status": "optional_excluded",
1969
+ "evidence": "適用条件となる機能を初版では提供しない。非対応の表明・入口拒否は別の適用内要件で確認する。",
1970
+ "code_refs": [],
1971
+ "test_refs": [],
1972
+ "normative_basis": "§10.1 / pingクライアントのpoll許容: 条件付き必須(§10.1、ping clientがpollした場合はMUST treat as poll)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
1973
+ "source_clause_locator": "CIBA Core section 10.1; catalog label: pingクライアントのpoll許容; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.10.1"
1974
+ },
1975
+ {
1976
+ "id": "CIBA-098",
1977
+ "section": "10.1",
1978
+ "label": "Token POST form",
1979
+ "requirement": "Accept CIBA token requests as HTTP POST form-urlencoded UTF-8 bodies.",
1980
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.10.1",
1981
+ "normative_strength": "必須(MUST / REQUIRED)",
1982
+ "conditional": false,
1983
+ "first_version": "in scope",
1984
+ "responsibility": "gem + upstream",
1985
+ "audit_status": "verified",
1986
+ "evidence": "直接テストでこの挙動を確認: test/ciba_protocol_test.rb#test_rack_inputs_without_rewind_work_on_both_endpoints. 実装根拠はJSONのcode_refs。",
1987
+ "code_refs": [
1988
+ "validate_token_params",
1989
+ "create_token"
1990
+ ],
1991
+ "test_refs": [
1992
+ "test/ciba_protocol_test.rb#test_rack_inputs_without_rewind_work_on_both_endpoints"
1993
+ ],
1994
+ "normative_basis": "§10.1 / Token POST form: 必須(MUST / REQUIRED)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
1995
+ "source_clause_locator": "CIBA Core section 10.1; catalog label: Token POST form; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.10.1"
1996
+ },
1997
+ {
1998
+ "id": "CIBA-099",
1999
+ "section": "10.1",
2000
+ "label": "Token grant_type必須",
2001
+ "requirement": "Require exact CIBA grant_type in token requests.",
2002
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.10.1",
2003
+ "normative_strength": "必須(MUST / REQUIRED)",
2004
+ "conditional": false,
2005
+ "first_version": "in scope",
2006
+ "responsibility": "gem + upstream",
2007
+ "audit_status": "verified",
2008
+ "evidence": "Direct test verifies missing/empty required token fields return JSON invalid_request with no-store headers and no error_uri. See code_refs for validation/response implementation.",
2009
+ "code_refs": [
2010
+ "validate_token_params",
2011
+ "create_token"
2012
+ ],
2013
+ "test_refs": [
2014
+ "test/ciba_security_test.rb#test_ciba_token_required_parameters_and_error_response_contract"
2015
+ ],
2016
+ "normative_basis": "§10.1 / Token grant_type必須: 必須(MUST / REQUIRED)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
2017
+ "source_clause_locator": "CIBA Core section 10.1; catalog label: Token grant_type必須; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.10.1"
2018
+ },
2019
+ {
2020
+ "id": "CIBA-100",
2021
+ "section": "10.1",
2022
+ "label": "Token auth_req_id必須",
2023
+ "requirement": "Require auth_req_id in token requests.",
2024
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.10.1",
2025
+ "normative_strength": "必須(MUST / REQUIRED)",
2026
+ "conditional": false,
2027
+ "first_version": "in scope",
2028
+ "responsibility": "gem",
2029
+ "audit_status": "verified",
2030
+ "evidence": "Direct test verifies missing/empty required token fields return JSON invalid_request with no-store headers and no error_uri. See code_refs for validation/response implementation.",
2031
+ "code_refs": [
2032
+ "validate_token_params",
2033
+ "create_token"
2034
+ ],
2035
+ "test_refs": [
2036
+ "test/ciba_security_test.rb#test_ciba_token_required_parameters_and_error_response_contract"
2037
+ ],
2038
+ "normative_basis": "§10.1 / Token auth_req_id必須: 必須(MUST / REQUIRED)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
2039
+ "source_clause_locator": "CIBA Core section 10.1; catalog label: Token auth_req_id必須; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.10.1"
2040
+ },
2041
+ {
2042
+ "id": "CIBA-101",
2043
+ "section": "10.1",
2044
+ "label": "auth_req_idのクライアント束縛",
2045
+ "requirement": "Verify auth_req_id was issued to the authenticated requesting client; reject mismatch.",
2046
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.10.1",
2047
+ "normative_strength": "必須(MUST / REQUIRED)",
2048
+ "conditional": false,
2049
+ "first_version": "in scope",
2050
+ "responsibility": "gem",
2051
+ "audit_status": "verified",
2052
+ "evidence": "直接テストでこの挙動を確認: test/ciba_integration_test.rb#test_other_identity_client_and_expiry_cannot_issue. 実装根拠はJSONのcode_refs。",
2053
+ "code_refs": [
2054
+ "validate_token_params",
2055
+ "create_token"
2056
+ ],
2057
+ "test_refs": [
2058
+ "test/ciba_integration_test.rb#test_other_identity_client_and_expiry_cannot_issue"
2059
+ ],
2060
+ "normative_basis": "§10.1 / auth_req_idのクライアント束縛: 必須(MUST / REQUIRED)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
2061
+ "source_clause_locator": "CIBA Core section 10.1; catalog label: auth_req_idのクライアント束縛; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.10.1"
2062
+ },
2063
+ {
2064
+ "id": "CIBA-102",
2065
+ "section": "10.1.1",
2066
+ "label": "成功Token応答",
2067
+ "requirement": "After customer authentication and authorization, return the successful token response specified by OIDC Core 3.1.3.3 (access_token, token_type, id_token and applicable lifetime fields).",
2068
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.10.1.1",
2069
+ "normative_strength": "応答定義(成功応答はOIDC Core §3.1.3.3を参照)",
2070
+ "conditional": false,
2071
+ "first_version": "in scope",
2072
+ "responsibility": "gem + upstream",
2073
+ "audit_status": "verified",
2074
+ "evidence": "直接テストでこの挙動を確認: test/ciba_integration_test.rb#test_approved_request_issues_customer_id_token_once. 実装根拠はJSONのcode_refs。",
2075
+ "code_refs": [
2076
+ "create_token",
2077
+ "id_token_claims"
2078
+ ],
2079
+ "test_refs": [
2080
+ "test/ciba_integration_test.rb#test_approved_request_issues_customer_id_token_once"
2081
+ ],
2082
+ "normative_basis": "§10.1.1 / 成功Token応答: 応答定義(成功応答はOIDC Core §3.1.3.3を参照)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
2083
+ "source_clause_locator": "CIBA Core section 10.1.1; catalog label: 成功Token応答; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.10.1.1"
2084
+ },
2085
+ {
2086
+ "id": "CIBA-103",
2087
+ "section": "10.1.1",
2088
+ "label": "成功後の一回限り消費",
2089
+ "requirement": "Invalidate auth_req_id after a successful redemption, including concurrent requests.",
2090
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.10.1.1",
2091
+ "normative_strength": "応答定義(成功引換え後はauth_req_idが無効。MUSTという語ではない)",
2092
+ "conditional": false,
2093
+ "first_version": "in scope",
2094
+ "responsibility": "gem",
2095
+ "audit_status": "verified",
2096
+ "evidence": "直接テストでこの挙動を確認: test/ciba_integration_test.rb#test_approved_request_issues_customer_id_token_once, test/ciba_integration_test.rb#test_concurrent_polls_issue_one_grant. 実装根拠はJSONのcode_refs。",
2097
+ "code_refs": [
2098
+ "create_token",
2099
+ "id_token_claims"
2100
+ ],
2101
+ "test_refs": [
2102
+ "test/ciba_integration_test.rb#test_approved_request_issues_customer_id_token_once",
2103
+ "test/ciba_integration_test.rb#test_concurrent_polls_issue_one_grant"
2104
+ ],
2105
+ "normative_basis": "§10.1.1 / 成功後の一回限り消費: 応答定義(成功引換え後はauth_req_idが無効。MUSTという語ではない)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
2106
+ "source_clause_locator": "CIBA Core section 10.1.1; catalog label: 成功後の一回限り消費; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.10.1.1"
2107
+ },
2108
+ {
2109
+ "id": "CIBA-104",
2110
+ "section": "10.1.1",
2111
+ "label": "認証承認前のToken禁止",
2112
+ "requirement": "Return a token error instead of tokens when customer authentication/authorization has not succeeded.",
2113
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.10.1.1",
2114
+ "normative_strength": "応答定義(未認証・未承認時はerror、lowercase must)",
2115
+ "conditional": true,
2116
+ "first_version": "in scope",
2117
+ "responsibility": "gem",
2118
+ "audit_status": "verified",
2119
+ "evidence": "直接テストでこの挙動を確認: test/ciba_integration_test.rb#test_pending_poll_updates_survive_json_halt, test/ciba_protocol_test.rb#test_denial_and_expired_completion. 実装根拠はJSONのcode_refs。",
2120
+ "code_refs": [
2121
+ "create_token",
2122
+ "id_token_claims"
2123
+ ],
2124
+ "test_refs": [
2125
+ "test/ciba_integration_test.rb#test_pending_poll_updates_survive_json_halt",
2126
+ "test/ciba_protocol_test.rb#test_denial_and_expired_completion"
2127
+ ],
2128
+ "normative_basis": "§10.1.1 / 認証承認前のToken禁止: 応答定義(未認証・未承認時はerror、lowercase must)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
2129
+ "source_clause_locator": "CIBA Core section 10.1.1; catalog label: 認証承認前のToken禁止; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.10.1.1"
2130
+ },
2131
+ {
2132
+ "id": "CIBA-105",
2133
+ "section": "10.2",
2134
+ "label": "ping HTTP POST",
2135
+ "requirement": "After successful or failed authentication send ping callback as HTTP POST to the registered notification endpoint.",
2136
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.10.2",
2137
+ "normative_strength": "記述的要件(該当節にMUST/SHOULD/MAYの規範語なし)",
2138
+ "conditional": true,
2139
+ "first_version": "excluded",
2140
+ "responsibility": "gem (excluded capability)",
2141
+ "audit_status": "optional_excluded",
2142
+ "evidence": "適用条件となる機能を初版では提供しない。非対応の表明・入口拒否は別の適用内要件で確認する。",
2143
+ "code_refs": [],
2144
+ "test_refs": [],
2145
+ "normative_basis": "§10.2 / ping HTTP POST: 記述的要件(該当節にMUST/SHOULD/MAYの規範語なし)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
2146
+ "source_clause_locator": "CIBA Core section 10.2; catalog label: ping HTTP POST; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.10.2"
2147
+ },
2148
+ {
2149
+ "id": "CIBA-106",
2150
+ "section": "10.2",
2151
+ "label": "ping bearer認証",
2152
+ "requirement": "Send client_notification_token as Authorization Bearer in ping callbacks.",
2153
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.10.2",
2154
+ "normative_strength": "配送形式の定義(ping対応時。MUSTという語ではない)",
2155
+ "conditional": true,
2156
+ "first_version": "excluded",
2157
+ "responsibility": "gem (excluded capability)",
2158
+ "audit_status": "optional_excluded",
2159
+ "evidence": "適用条件となる機能を初版では提供しない。非対応の表明・入口拒否は別の適用内要件で確認する。",
2160
+ "code_refs": [],
2161
+ "test_refs": [],
2162
+ "normative_basis": "§10.2 / ping bearer認証: 配送形式の定義(ping対応時。MUSTという語ではない)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
2163
+ "source_clause_locator": "CIBA Core section 10.2; catalog label: ping bearer認証; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.10.2"
2164
+ },
2165
+ {
2166
+ "id": "CIBA-107",
2167
+ "section": "10.2",
2168
+ "label": "ping payload",
2169
+ "requirement": "Send only auth_req_id as the ping JSON body.",
2170
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.10.2",
2171
+ "normative_strength": "配送形式の定義(ping対応時。MUSTという語ではない)",
2172
+ "conditional": true,
2173
+ "first_version": "excluded",
2174
+ "responsibility": "gem (excluded capability)",
2175
+ "audit_status": "optional_excluded",
2176
+ "evidence": "適用条件となる機能を初版では提供しない。非対応の表明・入口拒否は別の適用内要件で確認する。",
2177
+ "code_refs": [],
2178
+ "test_refs": [],
2179
+ "normative_basis": "§10.2 / ping payload: 配送形式の定義(ping対応時。MUSTという語ではない)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
2180
+ "source_clause_locator": "CIBA Core section 10.2; catalog label: ping payload; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.10.2"
2181
+ },
2182
+ {
2183
+ "id": "CIBA-108",
2184
+ "section": "10.2",
2185
+ "label": "pingクライアント検証",
2186
+ "requirement": "Client verifies notification token and its association with auth_req_id; invalid bearer should yield HTTP 401.",
2187
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.10.2",
2188
+ "normative_strength": "必須(MUST / REQUIRED)",
2189
+ "conditional": true,
2190
+ "first_version": "excluded",
2191
+ "responsibility": "client",
2192
+ "audit_status": "optional_excluded",
2193
+ "evidence": "適用条件となる機能を初版では提供しない。非対応の表明・入口拒否は別の適用内要件で確認する。",
2194
+ "code_refs": [],
2195
+ "test_refs": [],
2196
+ "normative_basis": "§10.2 / pingクライアント検証: 必須(MUST / REQUIRED)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
2197
+ "source_clause_locator": "CIBA Core section 10.2; catalog label: pingクライアント検証; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.10.2"
2198
+ },
2199
+ {
2200
+ "id": "CIBA-109",
2201
+ "section": "10.2",
2202
+ "label": "ping応答処理",
2203
+ "requirement": "Accept callback HTTP 204 and also HTTP 200, ignoring response bodies.",
2204
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.10.2",
2205
+ "normative_strength": "推奨(client endpoint SHOULD respond 204; OP SHOULD accept 200 and ignore body)",
2206
+ "conditional": true,
2207
+ "first_version": "excluded",
2208
+ "responsibility": "gem + client (excluded capability)",
2209
+ "audit_status": "optional_excluded",
2210
+ "evidence": "適用条件となる機能を初版では提供しない。非対応の表明・入口拒否は別の適用内要件で確認する。",
2211
+ "code_refs": [],
2212
+ "test_refs": [],
2213
+ "normative_basis": "§10.2 / ping応答処理: 推奨(client endpoint SHOULD respond 204; OP SHOULD accept 200 and ignore body)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
2214
+ "source_clause_locator": "CIBA Core section 10.2; catalog label: ping応答処理; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.10.2"
2215
+ },
2216
+ {
2217
+ "id": "CIBA-110",
2218
+ "section": "10.2",
2219
+ "label": "pingリダイレクト禁止",
2220
+ "requirement": "OP must not follow ping callback redirects.",
2221
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.10.2",
2222
+ "normative_strength": "条件付き必須(該当機能/条件時 MUST)",
2223
+ "conditional": true,
2224
+ "first_version": "excluded",
2225
+ "responsibility": "gem (excluded capability)",
2226
+ "audit_status": "optional_excluded",
2227
+ "evidence": "適用条件となる機能を初版では提供しない。非対応の表明・入口拒否は別の適用内要件で確認する。",
2228
+ "code_refs": [],
2229
+ "test_refs": [],
2230
+ "normative_basis": "§10.2 / pingリダイレクト禁止: 条件付き必須(該当機能/条件時 MUST)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
2231
+ "source_clause_locator": "CIBA Core section 10.2; catalog label: pingリダイレクト禁止; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.10.2"
2232
+ },
2233
+ {
2234
+ "id": "CIBA-111",
2235
+ "section": "10.2",
2236
+ "label": "ping後の取得",
2237
+ "requirement": "After verifying notification, client retrieves tokens at token endpoint.",
2238
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.10.2",
2239
+ "normative_strength": "フローの説明(通知検証後にclient can retrieve、MUSTという語ではない)",
2240
+ "conditional": true,
2241
+ "first_version": "excluded",
2242
+ "responsibility": "client",
2243
+ "audit_status": "optional_excluded",
2244
+ "evidence": "適用条件となる機能を初版では提供しない。非対応の表明・入口拒否は別の適用内要件で確認する。",
2245
+ "code_refs": [],
2246
+ "test_refs": [],
2247
+ "normative_basis": "§10.2 / ping後の取得: フローの説明(通知検証後にclient can retrieve、MUSTという語ではない)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
2248
+ "source_clause_locator": "CIBA Core section 10.2; catalog label: ping後の取得; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.10.2"
2249
+ },
2250
+ {
2251
+ "id": "CIBA-112",
2252
+ "section": "9",
2253
+ "label": "通知Endpoint TLS",
2254
+ "requirement": "Require HTTPS notification URLs and TLS communication for ping/push.",
2255
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.9",
2256
+ "normative_strength": "必須(MUST / REQUIRED)",
2257
+ "conditional": true,
2258
+ "first_version": "excluded",
2259
+ "responsibility": "gem + client (excluded capability)",
2260
+ "audit_status": "optional_excluded",
2261
+ "evidence": "適用条件となる機能を初版では提供しない。非対応の表明・入口拒否は別の適用内要件で確認する。",
2262
+ "code_refs": [],
2263
+ "test_refs": [],
2264
+ "normative_basis": "§9 / 通知Endpoint TLS: 必須(MUST / REQUIRED)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
2265
+ "source_clause_locator": "CIBA Core section 9; catalog label: 通知Endpoint TLS; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.9"
2266
+ },
2267
+ {
2268
+ "id": "CIBA-113",
2269
+ "section": "9",
2270
+ "label": "通知Endpoint bearer認証",
2271
+ "requirement": "Authenticate notification requests using the client's client_notification_token.",
2272
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.9",
2273
+ "normative_strength": "配送認証の定義(lowercase must)",
2274
+ "conditional": true,
2275
+ "first_version": "excluded",
2276
+ "responsibility": "gem + client (excluded capability)",
2277
+ "audit_status": "optional_excluded",
2278
+ "evidence": "適用条件となる機能を初版では提供しない。非対応の表明・入口拒否は別の適用内要件で確認する。",
2279
+ "code_refs": [],
2280
+ "test_refs": [],
2281
+ "normative_basis": "§9 / 通知Endpoint bearer認証: 配送認証の定義(lowercase must)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
2282
+ "source_clause_locator": "CIBA Core section 9; catalog label: 通知Endpoint bearer認証; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.9"
2283
+ },
2284
+ {
2285
+ "id": "CIBA-114",
2286
+ "section": "10.3.1",
2287
+ "label": "push成功payload",
2288
+ "requirement": "Send ID Token/access token/optional refresh token/auth_req_id as JSON to registered notification endpoint after authorization.",
2289
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.10.3.1",
2290
+ "normative_strength": "記述的要件(該当節にMUST/SHOULD/MAYの規範語なし)",
2291
+ "conditional": true,
2292
+ "first_version": "excluded",
2293
+ "responsibility": "gem (excluded capability)",
2294
+ "audit_status": "optional_excluded",
2295
+ "evidence": "適用条件となる機能を初版では提供しない。非対応の表明・入口拒否は別の適用内要件で確認する。",
2296
+ "code_refs": [],
2297
+ "test_refs": [],
2298
+ "normative_basis": "§10.3.1 / push成功payload: 記述的要件(該当節にMUST/SHOULD/MAYの規範語なし)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
2299
+ "source_clause_locator": "CIBA Core section 10.3.1; catalog label: push成功payload; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.10.3.1"
2300
+ },
2301
+ {
2302
+ "id": "CIBA-115",
2303
+ "section": "10.3.1",
2304
+ "label": "push at_hash",
2305
+ "requirement": "Include access-token hash at_hash in push ID Token.",
2306
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.10.3.1",
2307
+ "normative_strength": "必須(MUST / REQUIRED)",
2308
+ "conditional": true,
2309
+ "first_version": "excluded",
2310
+ "responsibility": "gem (excluded capability)",
2311
+ "audit_status": "optional_excluded",
2312
+ "evidence": "適用条件となる機能を初版では提供しない。非対応の表明・入口拒否は別の適用内要件で確認する。",
2313
+ "code_refs": [],
2314
+ "test_refs": [],
2315
+ "normative_basis": "§10.3.1 / push at_hash: 必須(MUST / REQUIRED)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
2316
+ "source_clause_locator": "CIBA Core section 10.3.1; catalog label: push at_hash; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.10.3.1"
2317
+ },
2318
+ {
2319
+ "id": "CIBA-116",
2320
+ "section": "10.3.1",
2321
+ "label": "push auth_req_id claim",
2322
+ "requirement": "Include urn:openid:params:jwt:claim:auth_req_id in push ID Token.",
2323
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.10.3.1",
2324
+ "normative_strength": "必須(MUST / REQUIRED)",
2325
+ "conditional": true,
2326
+ "first_version": "excluded",
2327
+ "responsibility": "gem (excluded capability)",
2328
+ "audit_status": "optional_excluded",
2329
+ "evidence": "適用条件となる機能を初版では提供しない。非対応の表明・入口拒否は別の適用内要件で確認する。",
2330
+ "code_refs": [],
2331
+ "test_refs": [],
2332
+ "normative_basis": "§10.3.1 / push auth_req_id claim: 必須(MUST / REQUIRED)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
2333
+ "source_clause_locator": "CIBA Core section 10.3.1; catalog label: push auth_req_id claim; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.10.3.1"
2334
+ },
2335
+ {
2336
+ "id": "CIBA-117",
2337
+ "section": "10.3.1",
2338
+ "label": "push rt_hash",
2339
+ "requirement": "When pushing refresh token, include urn:openid:params:jwt:claim:rt_hash calculated like at_hash.",
2340
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.10.3.1",
2341
+ "normative_strength": "必須(MUST / REQUIRED)",
2342
+ "conditional": true,
2343
+ "first_version": "excluded",
2344
+ "responsibility": "gem (excluded capability)",
2345
+ "audit_status": "optional_excluded",
2346
+ "evidence": "適用条件となる機能を初版では提供しない。非対応の表明・入口拒否は別の適用内要件で確認する。",
2347
+ "code_refs": [],
2348
+ "test_refs": [],
2349
+ "normative_basis": "§10.3.1 / push rt_hash: 必須(MUST / REQUIRED)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
2350
+ "source_clause_locator": "CIBA Core section 10.3.1; catalog label: push rt_hash; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.10.3.1"
2351
+ },
2352
+ {
2353
+ "id": "CIBA-118",
2354
+ "section": "10.3.1",
2355
+ "label": "push受信検証",
2356
+ "requirement": "Client validates bearer token, ID Token and correspondence of auth_req_id/access-token hash/refresh-token hash.",
2357
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.10.3.1",
2358
+ "normative_strength": "必須(MUST / REQUIRED)",
2359
+ "conditional": true,
2360
+ "first_version": "excluded",
2361
+ "responsibility": "client",
2362
+ "audit_status": "optional_excluded",
2363
+ "evidence": "適用条件となる機能を初版では提供しない。非対応の表明・入口拒否は別の適用内要件で確認する。",
2364
+ "code_refs": [],
2365
+ "test_refs": [],
2366
+ "normative_basis": "§10.3.1 / push受信検証: 必須(MUST / REQUIRED)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
2367
+ "source_clause_locator": "CIBA Core section 10.3.1; catalog label: push受信検証; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.10.3.1"
2368
+ },
2369
+ {
2370
+ "id": "CIBA-119",
2371
+ "section": "10.3.1",
2372
+ "label": "push応答処理",
2373
+ "requirement": "OP accepts HTTP 204 and HTTP 200 callback responses and ignores their bodies.",
2374
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.10.3.1",
2375
+ "normative_strength": "推奨(client endpoint SHOULD respond 204; OP SHOULD accept 200 and ignore body)",
2376
+ "conditional": true,
2377
+ "first_version": "excluded",
2378
+ "responsibility": "gem (excluded capability)",
2379
+ "audit_status": "optional_excluded",
2380
+ "evidence": "適用条件となる機能を初版では提供しない。非対応の表明・入口拒否は別の適用内要件で確認する。",
2381
+ "code_refs": [],
2382
+ "test_refs": [],
2383
+ "normative_basis": "§10.3.1 / push応答処理: 推奨(client endpoint SHOULD respond 204; OP SHOULD accept 200 and ignore body)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
2384
+ "source_clause_locator": "CIBA Core section 10.3.1; catalog label: push応答処理; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.10.3.1"
2385
+ },
2386
+ {
2387
+ "id": "CIBA-120",
2388
+ "section": "10.3.1",
2389
+ "label": "pushリダイレクト禁止",
2390
+ "requirement": "OP must not follow push callback redirects.",
2391
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.10.3.1",
2392
+ "normative_strength": "必須(MUST / REQUIRED)",
2393
+ "conditional": true,
2394
+ "first_version": "excluded",
2395
+ "responsibility": "gem (excluded capability)",
2396
+ "audit_status": "optional_excluded",
2397
+ "evidence": "適用条件となる機能を初版では提供しない。非対応の表明・入口拒否は別の適用内要件で確認する。",
2398
+ "code_refs": [],
2399
+ "test_refs": [],
2400
+ "normative_basis": "§10.3.1 / pushリダイレクト禁止: 必須(MUST / REQUIRED)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
2401
+ "source_clause_locator": "CIBA Core section 10.3.1; catalog label: pushリダイレクト禁止; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.10.3.1"
2402
+ },
2403
+ {
2404
+ "id": "CIBA-121",
2405
+ "section": "10.3.1",
2406
+ "label": "push未知パラメータ",
2407
+ "requirement": "Client ignores unrecognized push request parameters.",
2408
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.10.3.1",
2409
+ "normative_strength": "必須(MUST / REQUIRED)",
2410
+ "conditional": true,
2411
+ "first_version": "excluded",
2412
+ "responsibility": "client",
2413
+ "audit_status": "optional_excluded",
2414
+ "evidence": "適用条件となる機能を初版では提供しない。非対応の表明・入口拒否は別の適用内要件で確認する。",
2415
+ "code_refs": [],
2416
+ "test_refs": [],
2417
+ "normative_basis": "§10.3.1 / push未知パラメータ: 必須(MUST / REQUIRED)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
2418
+ "source_clause_locator": "CIBA Core section 10.3.1; catalog label: push未知パラメータ; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.10.3.1"
2419
+ },
2420
+ {
2421
+ "id": "CIBA-122",
2422
+ "section": "11",
2423
+ "label": "Tokenエラー形式",
2424
+ "requirement": "Return invalid/unauthorized token request errors according to OIDC Core 3.1.3.4 and RFC6749 5.2.",
2425
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.11",
2426
+ "normative_strength": "必須(invalid/unauthorized errors must follow referenced OIDC/OAuth format; triggered by invalid request)",
2427
+ "conditional": false,
2428
+ "first_version": "in scope",
2429
+ "responsibility": "gem",
2430
+ "audit_status": "verified",
2431
+ "evidence": "Direct test verifies missing/empty required token fields return JSON invalid_request with no-store headers and no error_uri. See code_refs for validation/response implementation.",
2432
+ "code_refs": [
2433
+ "create_token",
2434
+ "ciba_http",
2435
+ "ciba_error"
2436
+ ],
2437
+ "test_refs": [
2438
+ "test/ciba_security_test.rb#test_ciba_token_required_parameters_and_error_response_contract"
2439
+ ],
2440
+ "normative_basis": "§11 / Tokenエラー形式: 必須(invalid/unauthorized errors must follow referenced OIDC/OAuth format; triggered by invalid request)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
2441
+ "source_clause_locator": "CIBA Core section 11; catalog label: Tokenエラー形式; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.11"
2442
+ },
2443
+ {
2444
+ "id": "CIBA-123",
2445
+ "section": "11",
2446
+ "label": "authorization_pending",
2447
+ "requirement": "Return authorization_pending while authentication/authorization is pending.",
2448
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.11",
2449
+ "normative_strength": "必須(pending response state; normative error semantics)",
2450
+ "conditional": false,
2451
+ "first_version": "in scope",
2452
+ "responsibility": "gem",
2453
+ "audit_status": "verified",
2454
+ "evidence": "直接テストでこの挙動を確認: test/ciba_integration_test.rb#test_pending_poll_updates_survive_json_halt. 実装根拠はJSONのcode_refs。",
2455
+ "code_refs": [
2456
+ "create_token",
2457
+ "ciba_http",
2458
+ "ciba_error"
2459
+ ],
2460
+ "test_refs": [
2461
+ "test/ciba_integration_test.rb#test_pending_poll_updates_survive_json_halt"
2462
+ ],
2463
+ "normative_basis": "§11 / authorization_pending: 必須(pending response state; normative error semantics)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
2464
+ "source_clause_locator": "CIBA Core section 11; catalog label: authorization_pending; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.11"
2465
+ },
2466
+ {
2467
+ "id": "CIBA-124",
2468
+ "section": "11",
2469
+ "label": "slow_down",
2470
+ "requirement": "For too-fast pending polling return slow_down and increase interval by at least five seconds for subsequent requests.",
2471
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.11",
2472
+ "normative_strength": "条件付き必須(slow_down応答なら interval MUST increase by >=5 seconds)",
2473
+ "conditional": false,
2474
+ "first_version": "in scope",
2475
+ "responsibility": "gem",
2476
+ "audit_status": "verified",
2477
+ "evidence": "直接テストでこの挙動を確認: test/ciba_integration_test.rb#test_pending_poll_updates_survive_json_halt, test/ciba_lifecycle_test.rb#test_concurrent_pending_polls_both_receive_retryable_results. 実装根拠はJSONのcode_refs。",
2478
+ "code_refs": [
2479
+ "create_token",
2480
+ "ciba_http",
2481
+ "ciba_error"
2482
+ ],
2483
+ "test_refs": [
2484
+ "test/ciba_integration_test.rb#test_pending_poll_updates_survive_json_halt",
2485
+ "test/ciba_lifecycle_test.rb#test_concurrent_pending_polls_both_receive_retryable_results"
2486
+ ],
2487
+ "normative_basis": "§11 / slow_down: 条件付き必須(slow_down応答なら interval MUST increase by >=5 seconds)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
2488
+ "source_clause_locator": "CIBA Core section 11; catalog label: slow_down; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.11"
2489
+ },
2490
+ {
2491
+ "id": "CIBA-125",
2492
+ "section": "11",
2493
+ "label": "expired_token",
2494
+ "requirement": "Return expired_token when auth_req_id has expired.",
2495
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.11",
2496
+ "normative_strength": "エラー定義(§11 poll/pingのexpired_token。§12 pushの送信任意とは別)",
2497
+ "conditional": true,
2498
+ "first_version": "in scope",
2499
+ "responsibility": "gem",
2500
+ "audit_status": "verified",
2501
+ "evidence": "直接テストでこの挙動を確認: test/ciba_integration_test.rb#test_other_identity_client_and_expiry_cannot_issue. 実装根拠はJSONのcode_refs。",
2502
+ "code_refs": [
2503
+ "create_token",
2504
+ "ciba_http",
2505
+ "ciba_error"
2506
+ ],
2507
+ "test_refs": [
2508
+ "test/ciba_integration_test.rb#test_other_identity_client_and_expiry_cannot_issue"
2509
+ ],
2510
+ "normative_basis": "§11 / expired_token: エラー定義(§11 poll/pingのexpired_token。§12 pushの送信任意とは別)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
2511
+ "source_clause_locator": "CIBA Core section 11; catalog label: expired_token; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.11"
2512
+ },
2513
+ {
2514
+ "id": "CIBA-126",
2515
+ "section": "11",
2516
+ "label": "access_denied",
2517
+ "requirement": "Return access_denied when end-user denied authorization.",
2518
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.11",
2519
+ "normative_strength": "必須(MUST / REQUIRED)",
2520
+ "conditional": true,
2521
+ "first_version": "in scope",
2522
+ "responsibility": "gem",
2523
+ "audit_status": "verified",
2524
+ "evidence": "直接テストでこの挙動を確認: test/ciba_protocol_test.rb#test_denial_and_expired_completion. 実装根拠はJSONのcode_refs。",
2525
+ "code_refs": [
2526
+ "create_token",
2527
+ "ciba_http",
2528
+ "ciba_error"
2529
+ ],
2530
+ "test_refs": [
2531
+ "test/ciba_protocol_test.rb#test_denial_and_expired_completion"
2532
+ ],
2533
+ "normative_basis": "§11 / access_denied: 必須(MUST / REQUIRED)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
2534
+ "source_clause_locator": "CIBA Core section 11; catalog label: access_denied; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.11"
2535
+ },
2536
+ {
2537
+ "id": "CIBA-127",
2538
+ "section": "11",
2539
+ "label": "invalid_grant",
2540
+ "requirement": "Return invalid_grant for invalid auth_req_id or one issued to a different client.",
2541
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.11",
2542
+ "normative_strength": "必須(MUST / REQUIRED)",
2543
+ "conditional": false,
2544
+ "first_version": "in scope",
2545
+ "responsibility": "gem",
2546
+ "audit_status": "verified",
2547
+ "evidence": "直接テストでこの挙動を確認: test/ciba_integration_test.rb#test_other_identity_client_and_expiry_cannot_issue. 実装根拠はJSONのcode_refs。",
2548
+ "code_refs": [
2549
+ "create_token",
2550
+ "ciba_http",
2551
+ "ciba_error"
2552
+ ],
2553
+ "test_refs": [
2554
+ "test/ciba_integration_test.rb#test_other_identity_client_and_expiry_cannot_issue"
2555
+ ],
2556
+ "normative_basis": "§11 / invalid_grant: 必須(MUST / REQUIRED)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
2557
+ "source_clause_locator": "CIBA Core section 11; catalog label: invalid_grant; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.11"
2558
+ },
2559
+ {
2560
+ "id": "CIBA-128",
2561
+ "section": "11",
2562
+ "label": "繰返し過剰pollの拒否",
2563
+ "requirement": "OP may return invalid_request for continued too-fast polling; evaluate optional capability.",
2564
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.11",
2565
+ "normative_strength": "任意(OP MAY send invalid_request on continued too-fast polling)",
2566
+ "conditional": true,
2567
+ "first_version": "excluded",
2568
+ "responsibility": "gem (excluded capability)",
2569
+ "audit_status": "optional_excluded",
2570
+ "evidence": "適用条件となる機能を初版では提供しない。非対応の表明・入口拒否は別の適用内要件で確認する。",
2571
+ "code_refs": [],
2572
+ "test_refs": [],
2573
+ "normative_basis": "§11 / 繰返し過剰pollの拒否: 任意(OP MAY send invalid_request on continued too-fast polling)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
2574
+ "source_clause_locator": "CIBA Core section 11; catalog label: 繰返し過剰pollの拒否; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.11"
2575
+ },
2576
+ {
2577
+ "id": "CIBA-129",
2578
+ "section": "11",
2579
+ "label": "invalid_request後の停止",
2580
+ "requirement": "Client must stop requesting the same auth_req_id after invalid_request.",
2581
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.11",
2582
+ "normative_strength": "必須(client MUST stop same auth_req_id after invalid_request)",
2583
+ "conditional": false,
2584
+ "first_version": "client obligation",
2585
+ "responsibility": "client",
2586
+ "audit_status": "client_only",
2587
+ "evidence": "CIBA Clientに対する要求。OP gemの実装率・合否には算入しない。",
2588
+ "code_refs": [],
2589
+ "test_refs": [],
2590
+ "normative_basis": "§11 / invalid_request後の停止: 必須(client MUST stop same auth_req_id after invalid_request)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
2591
+ "source_clause_locator": "CIBA Core section 11; catalog label: invalid_request後の停止; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.11"
2592
+ },
2593
+ {
2594
+ "id": "CIBA-130",
2595
+ "section": "11",
2596
+ "label": "pushクライアントのToken拒否",
2597
+ "requirement": "Reject CIBA token requests by a client configured for push with unauthorized_client.",
2598
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.11",
2599
+ "normative_strength": "条件付き必須(push client MUST NOT token endpoint call; unauthorized_client required)",
2600
+ "conditional": true,
2601
+ "first_version": "in scope",
2602
+ "responsibility": "gem",
2603
+ "audit_status": "verified",
2604
+ "evidence": "push登録のclientがToken EndpointでCIBA grantを要求するとunauthorized_clientとなり、トークンを発行しない。push配送自体の対応を意味しない。",
2605
+ "code_refs": [
2606
+ "validate_token_params",
2607
+ "ciba_client_eligible?"
2608
+ ],
2609
+ "test_refs": [
2610
+ "test/ciba_security_test.rb#test_push_client_cannot_redeem_ciba_at_token_endpoint"
2611
+ ],
2612
+ "normative_basis": "§11 / pushクライアントのToken拒否: 条件付き必須(push client MUST NOT token endpoint call; unauthorized_client required)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
2613
+ "source_clause_locator": "CIBA Core section 11; catalog label: pushクライアントのToken拒否; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.11"
2614
+ },
2615
+ {
2616
+ "id": "CIBA-131",
2617
+ "section": "12",
2618
+ "label": "pushエラーJSON",
2619
+ "requirement": "Deliver push errors as application/json with required error and auth_req_id.",
2620
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.12",
2621
+ "normative_strength": "必須(MUST / REQUIRED)",
2622
+ "conditional": true,
2623
+ "first_version": "excluded",
2624
+ "responsibility": "gem (excluded capability)",
2625
+ "audit_status": "optional_excluded",
2626
+ "evidence": "適用条件となる機能を初版では提供しない。非対応の表明・入口拒否は別の適用内要件で確認する。",
2627
+ "code_refs": [],
2628
+ "test_refs": [],
2629
+ "normative_basis": "§12 / pushエラーJSON: 必須(MUST / REQUIRED)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
2630
+ "source_clause_locator": "CIBA Core section 12; catalog label: pushエラーJSON; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.12"
2631
+ },
2632
+ {
2633
+ "id": "CIBA-132",
2634
+ "section": "12",
2635
+ "label": "push error_description文字集合",
2636
+ "requirement": "If push error_description is supplied, limit it to the specified ASCII character ranges.",
2637
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.12",
2638
+ "normative_strength": "必須(MUST / REQUIRED)",
2639
+ "conditional": true,
2640
+ "first_version": "excluded",
2641
+ "responsibility": "gem (excluded capability)",
2642
+ "audit_status": "optional_excluded",
2643
+ "evidence": "適用条件となる機能を初版では提供しない。非対応の表明・入口拒否は別の適用内要件で確認する。",
2644
+ "code_refs": [],
2645
+ "test_refs": [],
2646
+ "normative_basis": "§12 / push error_description文字集合: 必須(MUST / REQUIRED)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
2647
+ "source_clause_locator": "CIBA Core section 12; catalog label: push error_description文字集合; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.12"
2648
+ },
2649
+ {
2650
+ "id": "CIBA-133",
2651
+ "section": "12",
2652
+ "label": "push access_denied",
2653
+ "requirement": "Deliver access_denied push error when end-user refuses authorization.",
2654
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.12",
2655
+ "normative_strength": "記述的要件(該当節にMUST/SHOULD/MAYの規範語なし)",
2656
+ "conditional": true,
2657
+ "first_version": "excluded",
2658
+ "responsibility": "gem (excluded capability)",
2659
+ "audit_status": "optional_excluded",
2660
+ "evidence": "適用条件となる機能を初版では提供しない。非対応の表明・入口拒否は別の適用内要件で確認する。",
2661
+ "code_refs": [],
2662
+ "test_refs": [],
2663
+ "normative_basis": "§12 / push access_denied: 記述的要件(該当節にMUST/SHOULD/MAYの規範語なし)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
2664
+ "source_clause_locator": "CIBA Core section 12; catalog label: push access_denied; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.12"
2665
+ },
2666
+ {
2667
+ "id": "CIBA-134",
2668
+ "section": "12",
2669
+ "label": "push expired_token",
2670
+ "requirement": "Optionally deliver expired_token push error when authentication request expires.",
2671
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.12",
2672
+ "normative_strength": "任意(OP not required to send expired_token push error)",
2673
+ "conditional": true,
2674
+ "first_version": "excluded",
2675
+ "responsibility": "gem (excluded capability)",
2676
+ "audit_status": "optional_excluded",
2677
+ "evidence": "適用条件となる機能を初版では提供しない。非対応の表明・入口拒否は別の適用内要件で確認する。",
2678
+ "code_refs": [],
2679
+ "test_refs": [],
2680
+ "normative_basis": "§12 / push expired_token: 任意(OP not required to send expired_token push error)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
2681
+ "source_clause_locator": "CIBA Core section 12; catalog label: push expired_token; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.12"
2682
+ },
2683
+ {
2684
+ "id": "CIBA-135",
2685
+ "section": "12",
2686
+ "label": "push transaction_failed",
2687
+ "requirement": "Deliver transaction_failed for unexpected unsuccessful push transactions.",
2688
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.12",
2689
+ "normative_strength": "任意のエラー通知(push transaction_failedを利用できる。全失敗への送信義務ではない)",
2690
+ "conditional": true,
2691
+ "first_version": "excluded",
2692
+ "responsibility": "gem (excluded capability)",
2693
+ "audit_status": "optional_excluded",
2694
+ "evidence": "適用条件となる機能を初版では提供しない。非対応の表明・入口拒否は別の適用内要件で確認する。",
2695
+ "code_refs": [],
2696
+ "test_refs": [],
2697
+ "normative_basis": "§12 / push transaction_failed: 任意のエラー通知(push transaction_failedを利用できる。全失敗への送信義務ではない)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
2698
+ "source_clause_locator": "CIBA Core section 12; catalog label: push transaction_failed; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.12"
2699
+ },
2700
+ {
2701
+ "id": "CIBA-136",
2702
+ "section": "13",
2703
+ "label": "開始エラーJSON",
2704
+ "requirement": "Return authentication errors with application/json and a required ASCII error code.",
2705
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.13",
2706
+ "normative_strength": "必須(MUST / REQUIRED)",
2707
+ "conditional": false,
2708
+ "first_version": "in scope",
2709
+ "responsibility": "gem",
2710
+ "audit_status": "verified",
2711
+ "evidence": "直接テストでこの挙動を確認: test/ciba_protocol_test.rb#test_request_validation_and_unknown_parameters. 実装根拠はJSONのcode_refs。",
2712
+ "code_refs": [
2713
+ "ciba_http",
2714
+ "ciba_error"
2715
+ ],
2716
+ "test_refs": [
2717
+ "test/ciba_protocol_test.rb#test_request_validation_and_unknown_parameters"
2718
+ ],
2719
+ "normative_basis": "§13 / 開始エラーJSON: 必須(MUST / REQUIRED)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
2720
+ "source_clause_locator": "CIBA Core section 13; catalog label: 開始エラーJSON; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.13"
2721
+ },
2722
+ {
2723
+ "id": "CIBA-137",
2724
+ "section": "13",
2725
+ "label": "error_description文字集合",
2726
+ "requirement": "If authentication error_description is emitted, enforce the specified ASCII ranges.",
2727
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.13",
2728
+ "normative_strength": "条件付き必須(任意のerror_descriptionを出す場合のMUST NOT文字制約)",
2729
+ "conditional": true,
2730
+ "first_version": "in scope",
2731
+ "responsibility": "gem",
2732
+ "audit_status": "verified",
2733
+ "evidence": "`response_error_params` suppresses an error_description that violates the specification ASCII character set. Direct test: test/ciba_requirements_test.rb#test_authentication_error_description_is_ascii_when_customized.",
2734
+ "code_refs": [
2735
+ "ciba_http",
2736
+ "ciba_error"
2737
+ ],
2738
+ "test_refs": [
2739
+ "test/ciba_requirements_test.rb#test_authentication_error_description_keeps_allowed_ascii_and_omits_unsafe_text"
2740
+ ],
2741
+ "normative_basis": "§13 / error_description文字集合: 条件付き必須(任意のerror_descriptionを出す場合のMUST NOT文字制約)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
2742
+ "source_clause_locator": "CIBA Core section 13; catalog label: error_description文字集合; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.13"
2743
+ },
2744
+ {
2745
+ "id": "CIBA-138",
2746
+ "section": "13",
2747
+ "label": "error_uri文字集合",
2748
+ "requirement": "If error_uri is emitted, enforce URI-reference syntax and specified ASCII ranges.",
2749
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.13",
2750
+ "normative_strength": "条件付き必須(任意のerror_uriを出す場合のMUST構文制約)",
2751
+ "conditional": true,
2752
+ "first_version": "in scope",
2753
+ "responsibility": "gem",
2754
+ "audit_status": "verified",
2755
+ "evidence": "標準実装は任意のerror_uriを出力しない。Backchannelエラーに存在しないことを確認。任意URIの検証機能を提供するという意味ではない。",
2756
+ "code_refs": [
2757
+ "ciba_http",
2758
+ "ciba_error"
2759
+ ],
2760
+ "test_refs": [
2761
+ "test/ciba_requirements_test.rb#test_authentication_error_description_keeps_allowed_ascii_and_omits_unsafe_text"
2762
+ ],
2763
+ "normative_basis": "§13 / error_uri文字集合: 条件付き必須(任意のerror_uriを出す場合のMUST構文制約)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
2764
+ "source_clause_locator": "CIBA Core section 13; catalog label: error_uri文字集合; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.13"
2765
+ },
2766
+ {
2767
+ "id": "CIBA-139",
2768
+ "section": "13",
2769
+ "label": "400 invalid_request",
2770
+ "requirement": "Use HTTP 400 invalid_request for missing/invalid/repeated parameters and multiple hints.",
2771
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.13",
2772
+ "normative_strength": "エラー応答の定義(該当する失敗とHTTP status/codeの対応)",
2773
+ "conditional": false,
2774
+ "first_version": "in scope",
2775
+ "responsibility": "gem",
2776
+ "audit_status": "verified",
2777
+ "evidence": "直接テストでこの挙動を確認: test/ciba_protocol_test.rb#test_duplicate_parameters_are_rejected, test/ciba_protocol_test.rb#test_request_validation_and_unknown_parameters. 実装根拠はJSONのcode_refs。",
2778
+ "code_refs": [
2779
+ "ciba_http",
2780
+ "ciba_error"
2781
+ ],
2782
+ "test_refs": [
2783
+ "test/ciba_protocol_test.rb#test_duplicate_parameters_are_rejected",
2784
+ "test/ciba_protocol_test.rb#test_request_validation_and_unknown_parameters"
2785
+ ],
2786
+ "normative_basis": "§13 / 400 invalid_request: エラー応答の定義(該当する失敗とHTTP status/codeの対応)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
2787
+ "source_clause_locator": "CIBA Core section 13; catalog label: 400 invalid_request; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.13"
2788
+ },
2789
+ {
2790
+ "id": "CIBA-140",
2791
+ "section": "13",
2792
+ "label": "400 invalid_scope",
2793
+ "requirement": "Use HTTP 400 invalid_scope for malformed, unknown or invalid scope.",
2794
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.13",
2795
+ "normative_strength": "エラー応答の定義(該当する失敗とHTTP status/codeの対応)",
2796
+ "conditional": false,
2797
+ "first_version": "in scope",
2798
+ "responsibility": "gem",
2799
+ "audit_status": "verified",
2800
+ "evidence": "直接テストでこの挙動を確認: test/ciba_requirements_test.rb#test_scope_syntax_errors_are_invalid_scope. 実装根拠はJSONのcode_refs。",
2801
+ "code_refs": [
2802
+ "ciba_http",
2803
+ "ciba_error"
2804
+ ],
2805
+ "test_refs": [
2806
+ "test/ciba_requirements_test.rb#test_scope_syntax_errors_are_invalid_scope"
2807
+ ],
2808
+ "normative_basis": "§13 / 400 invalid_scope: エラー応答の定義(該当する失敗とHTTP status/codeの対応)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
2809
+ "source_clause_locator": "CIBA Core section 13; catalog label: 400 invalid_scope; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.13"
2810
+ },
2811
+ {
2812
+ "id": "CIBA-141",
2813
+ "section": "13",
2814
+ "label": "400 expired_login_hint_token",
2815
+ "requirement": "Use HTTP 400 expired_login_hint_token for an expired login_hint_token when supported.",
2816
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.13",
2817
+ "normative_strength": "条件付き必須(supported login_hint_token expired case; otherwise feature optional)",
2818
+ "conditional": true,
2819
+ "first_version": "excluded",
2820
+ "responsibility": "gem (excluded capability)",
2821
+ "audit_status": "optional_excluded",
2822
+ "evidence": "適用条件となる機能を初版では提供しない。非対応の表明・入口拒否は別の適用内要件で確認する。",
2823
+ "code_refs": [],
2824
+ "test_refs": [],
2825
+ "normative_basis": "§13 / 400 expired_login_hint_token: 条件付き必須(supported login_hint_token expired case; otherwise feature optional)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
2826
+ "source_clause_locator": "CIBA Core section 13; catalog label: 400 expired_login_hint_token; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.13"
2827
+ },
2828
+ {
2829
+ "id": "CIBA-142",
2830
+ "section": "13",
2831
+ "label": "400 unknown_user_id",
2832
+ "requirement": "Use HTTP 400 unknown_user_id when supported hints cannot identify the intended user.",
2833
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.13",
2834
+ "normative_strength": "エラー応答の定義(該当する失敗とHTTP status/codeの対応)",
2835
+ "conditional": true,
2836
+ "first_version": "in scope",
2837
+ "responsibility": "gem",
2838
+ "audit_status": "verified",
2839
+ "evidence": "直接テストでこの挙動を確認: test/ciba_protocol_test.rb#test_request_validation_and_unknown_parameters. 実装根拠はJSONのcode_refs。",
2840
+ "code_refs": [
2841
+ "ciba_http",
2842
+ "ciba_error"
2843
+ ],
2844
+ "test_refs": [
2845
+ "test/ciba_protocol_test.rb#test_request_validation_and_unknown_parameters"
2846
+ ],
2847
+ "normative_basis": "§13 / 400 unknown_user_id: エラー応答の定義(該当する失敗とHTTP status/codeの対応)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
2848
+ "source_clause_locator": "CIBA Core section 13; catalog label: 400 unknown_user_id; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.13"
2849
+ },
2850
+ {
2851
+ "id": "CIBA-143",
2852
+ "section": "13",
2853
+ "label": "400 unauthorized_client",
2854
+ "requirement": "Use HTTP 400 unauthorized_client when a client is not allowed to use CIBA.",
2855
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.13",
2856
+ "normative_strength": "エラー応答の定義(該当する失敗とHTTP status/codeの対応)",
2857
+ "conditional": true,
2858
+ "first_version": "in scope",
2859
+ "responsibility": "gem",
2860
+ "audit_status": "verified",
2861
+ "evidence": "直接テストでこの挙動を確認: test/ciba_configuration_test.rb#test_unavailable_or_unsupported_client_metadata_is_rejected. 実装根拠はJSONのcode_refs。",
2862
+ "code_refs": [
2863
+ "ciba_http",
2864
+ "ciba_error"
2865
+ ],
2866
+ "test_refs": [
2867
+ "test/ciba_configuration_test.rb#test_unavailable_or_unsupported_client_metadata_is_rejected"
2868
+ ],
2869
+ "normative_basis": "§13 / 400 unauthorized_client: エラー応答の定義(該当する失敗とHTTP status/codeの対応)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
2870
+ "source_clause_locator": "CIBA Core section 13; catalog label: 400 unauthorized_client; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.13"
2871
+ },
2872
+ {
2873
+ "id": "CIBA-144",
2874
+ "section": "13",
2875
+ "label": "400 missing_user_code",
2876
+ "requirement": "Use HTTP 400 missing_user_code when required user_code is absent.",
2877
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.13",
2878
+ "normative_strength": "条件付き必須(if user_code is required and absent)",
2879
+ "conditional": true,
2880
+ "first_version": "excluded",
2881
+ "responsibility": "gem (excluded capability)",
2882
+ "audit_status": "optional_excluded",
2883
+ "evidence": "適用条件となる機能を初版では提供しない。非対応の表明・入口拒否は別の適用内要件で確認する。",
2884
+ "code_refs": [],
2885
+ "test_refs": [],
2886
+ "normative_basis": "§13 / 400 missing_user_code: 条件付き必須(if user_code is required and absent)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
2887
+ "source_clause_locator": "CIBA Core section 13; catalog label: 400 missing_user_code; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.13"
2888
+ },
2889
+ {
2890
+ "id": "CIBA-145",
2891
+ "section": "13",
2892
+ "label": "400 invalid_user_code",
2893
+ "requirement": "Use HTTP 400 invalid_user_code for invalid supplied user_code when supported.",
2894
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.13",
2895
+ "normative_strength": "条件付き必須(if user_code supplied and invalid, where supported)",
2896
+ "conditional": true,
2897
+ "first_version": "excluded",
2898
+ "responsibility": "gem (excluded capability)",
2899
+ "audit_status": "optional_excluded",
2900
+ "evidence": "適用条件となる機能を初版では提供しない。非対応の表明・入口拒否は別の適用内要件で確認する。",
2901
+ "code_refs": [],
2902
+ "test_refs": [],
2903
+ "normative_basis": "§13 / 400 invalid_user_code: 条件付き必須(if user_code supplied and invalid, where supported)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
2904
+ "source_clause_locator": "CIBA Core section 13; catalog label: 400 invalid_user_code; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.13"
2905
+ },
2906
+ {
2907
+ "id": "CIBA-146",
2908
+ "section": "13",
2909
+ "label": "400 invalid_binding_message",
2910
+ "requirement": "Use HTTP 400 invalid_binding_message for an unacceptable binding message.",
2911
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.13",
2912
+ "normative_strength": "エラー応答の定義(該当する失敗とHTTP status/codeの対応)",
2913
+ "conditional": false,
2914
+ "first_version": "in scope",
2915
+ "responsibility": "gem",
2916
+ "audit_status": "verified",
2917
+ "evidence": "直接テストでこの挙動を確認: test/ciba_protocol_test.rb#test_expiry_binding_context_and_offline_access. 実装根拠はJSONのcode_refs。",
2918
+ "code_refs": [
2919
+ "ciba_http",
2920
+ "ciba_error"
2921
+ ],
2922
+ "test_refs": [
2923
+ "test/ciba_protocol_test.rb#test_expiry_binding_context_and_offline_access"
2924
+ ],
2925
+ "normative_basis": "§13 / 400 invalid_binding_message: エラー応答の定義(該当する失敗とHTTP status/codeの対応)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
2926
+ "source_clause_locator": "CIBA Core section 13; catalog label: 400 invalid_binding_message; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.13"
2927
+ },
2928
+ {
2929
+ "id": "CIBA-147",
2930
+ "section": "13",
2931
+ "label": "401 invalid_client",
2932
+ "requirement": "Use HTTP 401 invalid_client for failed, absent or unsupported client authentication.",
2933
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.13",
2934
+ "normative_strength": "エラー応答の定義(該当する失敗とHTTP status/codeの対応)",
2935
+ "conditional": false,
2936
+ "first_version": "in scope",
2937
+ "responsibility": "gem",
2938
+ "audit_status": "verified",
2939
+ "evidence": "直接テストでこの挙動を確認: test/ciba_requirements_test.rb#test_authentication_errors_use_invalid_client_and_http_401. 実装根拠はJSONのcode_refs。",
2940
+ "code_refs": [
2941
+ "ciba_http",
2942
+ "ciba_error"
2943
+ ],
2944
+ "test_refs": [
2945
+ "test/ciba_requirements_test.rb#test_authentication_errors_use_invalid_client_and_http_401"
2946
+ ],
2947
+ "normative_basis": "§13 / 401 invalid_client: エラー応答の定義(該当する失敗とHTTP status/codeの対応)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
2948
+ "source_clause_locator": "CIBA Core section 13; catalog label: 401 invalid_client; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.13"
2949
+ },
2950
+ {
2951
+ "id": "CIBA-148",
2952
+ "section": "13",
2953
+ "label": "403 access_denied",
2954
+ "requirement": "When OP/resource-owner policy denies an authentication request before user interaction, return HTTP 403 access_denied.",
2955
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.13",
2956
+ "normative_strength": "条件付き必須(when OP/resource-owner pre-interaction policy denies)",
2957
+ "conditional": true,
2958
+ "first_version": "in scope with app contract",
2959
+ "responsibility": "gem + app",
2960
+ "audit_status": "app_contract",
2961
+ "evidence": "仕様がOP/client/appの選択・ユーザー提示・業務判断を含む。gemのフックや保存値は契約の境界であり、アプリ動作全体の証拠ではない。",
2962
+ "code_refs": [
2963
+ "ciba_http",
2964
+ "ciba_error"
2965
+ ],
2966
+ "test_refs": [],
2967
+ "normative_basis": "§13 / 403 access_denied: 条件付き必須(when OP/resource-owner pre-interaction policy denies)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
2968
+ "source_clause_locator": "CIBA Core section 13; catalog label: 403 access_denied; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.13"
2969
+ },
2970
+ {
2971
+ "id": "CIBA-149",
2972
+ "section": "14",
2973
+ "label": "login_hint_token署名",
2974
+ "requirement": "When supporting login_hint_token, it should be digitally signed by its issuer.",
2975
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.14",
2976
+ "normative_strength": "Recommendation (SHOULD)",
2977
+ "conditional": true,
2978
+ "first_version": "excluded",
2979
+ "responsibility": "gem (excluded capability)",
2980
+ "audit_status": "optional_excluded",
2981
+ "evidence": "適用条件となる機能を初版では提供しない。非対応の表明・入口拒否は別の適用内要件で確認する。",
2982
+ "code_refs": [],
2983
+ "test_refs": [],
2984
+ "normative_basis": "§14 / login_hint_token署名: Recommendation (SHOULD)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
2985
+ "source_clause_locator": "CIBA Core section 14; catalog label: login_hint_token署名; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.14"
2986
+ },
2987
+ {
2988
+ "id": "CIBA-150",
2989
+ "section": "14",
2990
+ "label": "通知URLの管理権限",
2991
+ "requirement": "OP should ensure registered notification endpoint is under the client's administrative authority.",
2992
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.14",
2993
+ "normative_strength": "Recommendation (SHOULD)",
2994
+ "conditional": true,
2995
+ "first_version": "excluded",
2996
+ "responsibility": "app",
2997
+ "audit_status": "optional_excluded",
2998
+ "evidence": "適用条件となる機能を初版では提供しない。非対応の表明・入口拒否は別の適用内要件で確認する。",
2999
+ "code_refs": [],
3000
+ "test_refs": [],
3001
+ "normative_basis": "§14 / 通知URLの管理権限: Recommendation (SHOULD)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
3002
+ "source_clause_locator": "CIBA Core section 14; catalog label: 通知URLの管理権限; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.14"
3003
+ },
3004
+ {
3005
+ "id": "CIBA-151",
3006
+ "section": "14",
3007
+ "label": "期限切れid_token_hint許容",
3008
+ "requirement": "When supporting id_token_hint, accept expired ID Tokens for a reasonable period under the specified contextual validation policy.",
3009
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.14",
3010
+ "normative_strength": "任意(id_token_hint optional; text accept-expired policy is SHOULD within support)",
3011
+ "conditional": true,
3012
+ "first_version": "excluded",
3013
+ "responsibility": "gem (excluded capability)",
3014
+ "audit_status": "optional_excluded",
3015
+ "evidence": "適用条件となる機能を初版では提供しない。非対応の表明・入口拒否は別の適用内要件で確認する。",
3016
+ "code_refs": [],
3017
+ "test_refs": [],
3018
+ "normative_basis": "§14 / 期限切れid_token_hint許容: 任意(id_token_hint optional; text accept-expired policy is SHOULD within support)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
3019
+ "source_clause_locator": "CIBA Core section 14; catalog label: 期限切れid_token_hint許容; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.14"
3020
+ },
3021
+ {
3022
+ "id": "CIBA-152",
3023
+ "section": "14",
3024
+ "label": "id_token_hintのissuerとaudience",
3025
+ "requirement": "When supporting id_token_hint, verify OP issuer and that presenting client is listed in audience.",
3026
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.14",
3027
+ "normative_strength": "Guidance (lowercase should in source; not RFC2119 SHOULD)",
3028
+ "conditional": true,
3029
+ "first_version": "excluded",
3030
+ "responsibility": "gem (excluded capability)",
3031
+ "audit_status": "optional_excluded",
3032
+ "evidence": "適用条件となる機能を初版では提供しない。非対応の表明・入口拒否は別の適用内要件で確認する。",
3033
+ "code_refs": [],
3034
+ "test_refs": [],
3035
+ "normative_basis": "§14 / id_token_hintのissuerとaudience: Guidance (lowercase should in source; not RFC2119 SHOULD)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
3036
+ "source_clause_locator": "CIBA Core section 14; catalog label: id_token_hintのissuerとaudience; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.14"
3037
+ },
3038
+ {
3039
+ "id": "CIBA-153",
3040
+ "section": "14",
3041
+ "label": "id_token_hint署名",
3042
+ "requirement": "When supporting id_token_hint, verify signature subject to the key rotation/pairwise alternatives discussed in section 14.",
3043
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.14",
3044
+ "normative_strength": "Guidance (lowercase should in source; not RFC2119 SHOULD)",
3045
+ "conditional": true,
3046
+ "first_version": "excluded",
3047
+ "responsibility": "gem (excluded capability)",
3048
+ "audit_status": "optional_excluded",
3049
+ "evidence": "適用条件となる機能を初版では提供しない。非対応の表明・入口拒否は別の適用内要件で確認する。",
3050
+ "code_refs": [],
3051
+ "test_refs": [],
3052
+ "normative_basis": "§14 / id_token_hint署名: Guidance (lowercase should in source; not RFC2119 SHOULD)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
3053
+ "source_clause_locator": "CIBA Core section 14; catalog label: id_token_hint署名; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.14"
3054
+ },
3055
+ {
3056
+ "id": "CIBA-154",
3057
+ "section": "14",
3058
+ "label": "push Endpoint保護",
3059
+ "requirement": "For push, secure notification endpoint and its registration and consider sender-constrained tokens.",
3060
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.14",
3061
+ "normative_strength": "記述的要件(security considerations say secure endpoint / consider binding; catalog groups considerations)",
3062
+ "conditional": true,
3063
+ "first_version": "excluded",
3064
+ "responsibility": "app",
3065
+ "audit_status": "optional_excluded",
3066
+ "evidence": "適用条件となる機能を初版では提供しない。非対応の表明・入口拒否は別の適用内要件で確認する。",
3067
+ "code_refs": [],
3068
+ "test_refs": [],
3069
+ "normative_basis": "§14 / push Endpoint保護: 記述的要件(security considerations say secure endpoint / consider binding; catalog groups considerations)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
3070
+ "source_clause_locator": "CIBA Core section 14; catalog label: push Endpoint保護; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.14"
3071
+ },
3072
+ {
3073
+ "id": "CIBA-155",
3074
+ "section": "14",
3075
+ "label": "業務コンテキストの追加",
3076
+ "requirement": "Additional RP session context metadata may be conveyed by deployment-specific means; CIBA specifies no mandatory transport for it.",
3077
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.14",
3078
+ "normative_strength": "参考情報(deployment-specific metadata may be conveyed; no CIBA transport requirement)",
3079
+ "conditional": false,
3080
+ "first_version": "in scope with app contract",
3081
+ "responsibility": "app",
3082
+ "audit_status": "app_contract",
3083
+ "evidence": "仕様がOP/client/appの選択・ユーザー提示・業務判断を含む。gemのフックや保存値は契約の境界であり、アプリ動作全体の証拠ではない。",
3084
+ "code_refs": [
3085
+ "resolve_ciba_login_hint",
3086
+ "ciba_account_eligible?"
3087
+ ],
3088
+ "test_refs": [],
3089
+ "normative_basis": "§14 / 業務コンテキストの追加: 参考情報(deployment-specific metadata may be conveyed; no CIBA transport requirement)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
3090
+ "source_clause_locator": "CIBA Core section 14; catalog label: 業務コンテキストの追加; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.14"
3091
+ },
3092
+ {
3093
+ "id": "CIBA-156",
3094
+ "section": "15",
3095
+ "label": "プライバシー配慮識別子",
3096
+ "requirement": "Permit alternatives to global static identifiers; evaluate gem ability to use an app-defined privacy-preserving login_hint and boundaries of unsupported hint tokens.",
3097
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.15",
3098
+ "normative_strength": "参考情報(privacy considerations, no explicit MUST/SHOULD in cataloged behavior)",
3099
+ "conditional": false,
3100
+ "first_version": "in scope with app contract",
3101
+ "responsibility": "app",
3102
+ "audit_status": "app_contract",
3103
+ "evidence": "仕様がOP/client/appの選択・ユーザー提示・業務判断を含む。gemのフックや保存値は契約の境界であり、アプリ動作全体の証拠ではない。",
3104
+ "code_refs": [
3105
+ "resolve_ciba_login_hint"
3106
+ ],
3107
+ "test_refs": [],
3108
+ "normative_basis": "§15 / プライバシー配慮識別子: 参考情報(privacy considerations, no explicit MUST/SHOULD in cataloged behavior)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
3109
+ "source_clause_locator": "CIBA Core section 15; catalog label: プライバシー配慮識別子; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.15"
3110
+ },
3111
+ {
3112
+ "id": "CIBA-157",
3113
+ "section": "15",
3114
+ "label": "pairwise ID Token hint",
3115
+ "requirement": "Support the described privacy option of using a previously issued pairwise ID Token without personal data as id_token_hint.",
3116
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.15",
3117
+ "normative_strength": "参考情報(privacy option descriptive, not an OP mandate)",
3118
+ "conditional": true,
3119
+ "first_version": "excluded",
3120
+ "responsibility": "gem (excluded capability)",
3121
+ "audit_status": "optional_excluded",
3122
+ "evidence": "適用条件となる機能を初版では提供しない。非対応の表明・入口拒否は別の適用内要件で確認する。",
3123
+ "code_refs": [],
3124
+ "test_refs": [],
3125
+ "normative_basis": "§15 / pairwise ID Token hint: 参考情報(privacy option descriptive, not an OP mandate)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
3126
+ "source_clause_locator": "CIBA Core section 15; catalog label: pairwise ID Token hint; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.15"
3127
+ },
3128
+ {
3129
+ "id": "CIBA-158",
3130
+ "section": "15",
3131
+ "label": "一回限り識別子hint token",
3132
+ "requirement": "Support the described optional AD-to-CD single-use identifier carried in login_hint_token.",
3133
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.15",
3134
+ "normative_strength": "参考情報(optional scenario/example)",
3135
+ "conditional": true,
3136
+ "first_version": "excluded",
3137
+ "responsibility": "gem (excluded capability)",
3138
+ "audit_status": "optional_excluded",
3139
+ "evidence": "適用条件となる機能を初版では提供しない。非対応の表明・入口拒否は別の適用内要件で確認する。",
3140
+ "code_refs": [],
3141
+ "test_refs": [],
3142
+ "normative_basis": "§15 / 一回限り識別子hint token: 参考情報(optional scenario/example)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
3143
+ "source_clause_locator": "CIBA Core section 15; catalog label: 一回限り識別子hint token; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.15"
3144
+ },
3145
+ {
3146
+ "id": "CIBA-159",
3147
+ "section": "15",
3148
+ "label": "Discovery Service hint token",
3149
+ "requirement": "Support the described optional discovery-service encrypted login_hint_token flow.",
3150
+ "source": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.15",
3151
+ "normative_strength": "参考情報(possible ecosystem scenario, no protocol conformance requirement)",
3152
+ "conditional": true,
3153
+ "first_version": "excluded",
3154
+ "responsibility": "gem (excluded capability)",
3155
+ "audit_status": "optional_excluded",
3156
+ "evidence": "適用条件となる機能を初版では提供しない。非対応の表明・入口拒否は別の適用内要件で確認する。",
3157
+ "code_refs": [],
3158
+ "test_refs": [],
3159
+ "normative_basis": "§15 / Discovery Service hint token: 参考情報(possible ecosystem scenario, no protocol conformance requirement)。評価対象の意味はrequirement、適用範囲はfirst_versionを参照。",
3160
+ "source_clause_locator": "CIBA Core section 15; catalog label: Discovery Service hint token; source: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html#rfc.section.15"
3161
+ }
3162
+ ],
3163
+ "additional_cross_spec_findings": [
3164
+ {
3165
+ "id": "OIDC-CIBA-AUTH-1",
3166
+ "source": "OpenID Connect Core 1.0 §9 (JWT client authentication); RFC 7523 §3 (assertion profile)",
3167
+ "normative_strength": "OIDC Core §9 requires iss, sub, aud, exp, jti and single-use assertion handling; RFC 7523 by itself leaves replay prevention MAY, but does not relax the OIDC profile requirement.",
3168
+ "first_version": "in_scope",
3169
+ "responsibility": "gem / upstream authentication integration",
3170
+ "audit_status": "verified",
3171
+ "finding": "OIDC Core 1.0 section 9 requires iss, sub, aud, exp, jti and single-use assertions for this profile. Implementation validates claims and tracks consumed assertion identifiers; direct negative/replay/concurrency tests cover the checks. RFC 7523 replay MAY does not relax the OIDC profile requirement.",
3172
+ "test_refs": [
3173
+ "test/ciba_security_test.rb#test_jwt_client_assertion_requires_issuer_expiry_and_jti",
3174
+ "test/ciba_security_test.rb#test_jwt_assertion_replay_is_blocked_between_start_and_poll",
3175
+ "test/ciba_security_test.rb#test_jwt_assertion_replay_is_blocked_across_other_flows_for_the_same_client",
3176
+ "test/ciba_security_test.rb#test_client_assertion_unique_constraint_rejects_concurrent_replay",
3177
+ "test/ciba_security_test.rb#test_assertion_subject_cannot_override_explicit_client_id"
3178
+ ]
3179
+ },
3180
+ {
3181
+ "id": "OAUTH-SCOPE",
3182
+ "source": "https://www.rfc-editor.org/rfc/rfc6749.html#section-5.1",
3183
+ "audit_status": "verified",
3184
+ "finding": "要求scopeと許可scopeが異なる場合のscope返却を修正。CIBA token responseに実効scopeを含める。",
3185
+ "test_refs": [
3186
+ "test/ciba_security_test.rb#test_reduced_scope_is_reported_when_offline_access_is_not_granted"
3187
+ ]
3188
+ }
3189
+ ]
3190
+ }