|
2016 | 2016 | a policy error. |
2017 | 2017 | </t> |
2018 | 2018 | <t> |
2019 | | - MUST declare what other operators it may be combined within a |
2020 | | - metadata parameter policy. Combinations that are not allowed |
2021 | | - MUST result in a policy error. |
| 2019 | + MUST declare what other operators it may be combined with, |
| 2020 | + which applies to both individual as well as merged metadata |
| 2021 | + parameter policies, as described in |
| 2022 | + <xref target="metadata_policy_structure"/> and |
| 2023 | + <xref target="metadata_policy_enforcement"/>. A combination may |
| 2024 | + be unconditional, or conditional, requiring the configured |
| 2025 | + values of the two operators to meet certain criteria. |
| 2026 | + Combinations that are not allowed MUST produce a policy error. |
2022 | 2027 | </t> |
2023 | 2028 | <t> |
2024 | 2029 | MUST declare in what order it is to be applied to a metadata |
|
2085 | 2090 | Combination with other operators in a metadata parameter policy: |
2086 | 2091 | <list style="symbols"> |
2087 | 2092 | <t> |
2088 | | - MAY be combined with <spanx style="verb">essential</spanx>. |
| 2093 | + MAY be combined with <spanx style="verb">add</spanx>, |
| 2094 | + in which case the values of <spanx style="verb">add</spanx> |
| 2095 | + MUST be a subset of the values of |
| 2096 | + <spanx style="verb">value</spanx>. |
| 2097 | + </t> |
| 2098 | + <t> |
| 2099 | + MAY be combined with <spanx style="verb">default</spanx> |
| 2100 | + if the value of <spanx style="verb">value</spanx> is not |
| 2101 | + null. |
| 2102 | + </t> |
| 2103 | + <t> |
| 2104 | + MAY be combined with <spanx style="verb">one_of</spanx>, |
| 2105 | + in which case the value of <spanx style="verb">value</spanx> |
| 2106 | + MUST be among the <spanx style="verb">one_of</spanx> values. |
| 2107 | + </t> |
| 2108 | + <t> |
| 2109 | + MAY be combined with <spanx style="verb">subset_of</spanx>, |
| 2110 | + in which case the values of <spanx style="verb">value</spanx> |
| 2111 | + MUST be a subset of the values of |
| 2112 | + <spanx style="verb">subset_of</spanx>. |
| 2113 | + </t> |
| 2114 | + <t> |
| 2115 | + MAY be combined with <spanx style="verb">superset_of</spanx>, |
| 2116 | + in which case the values of <spanx style="verb">value</spanx> |
| 2117 | + MUST be a superset of the values of |
| 2118 | + <spanx style="verb">superset_of</spanx>. |
| 2119 | + </t> |
| 2120 | + <t> |
| 2121 | + MAY be combined with <spanx style="verb">essential</spanx>, |
| 2122 | + except when <spanx style="verb">value</spanx> is null and |
| 2123 | + <spanx style="verb">essential</spanx> is true. |
2089 | 2124 | </t> |
2090 | 2125 | </list> |
2091 | 2126 | </t> |
|
2094 | 2129 | </t> |
2095 | 2130 | <t> |
2096 | 2131 | Operator value merge: Allowed only when the operator values are |
2097 | | - equal. If not, this MUST result in a policy error. |
| 2132 | + equal. If not, this MUST produce a policy error. |
2098 | 2133 | </t> |
2099 | 2134 | </section> |
2100 | 2135 |
|
|
2134 | 2169 | <t> |
2135 | 2170 | Combination with other operators in a metadata parameter policy: |
2136 | 2171 | <list style="symbols"> |
| 2172 | + <t> |
| 2173 | + MAY be combined with <spanx style="verb">value</spanx>, |
| 2174 | + in which case the values of <spanx style="verb">add</spanx> |
| 2175 | + MUST be a subset of the values of |
| 2176 | + <spanx style="verb">value</spanx>. |
| 2177 | + </t> |
2137 | 2178 | <t> |
2138 | 2179 | MAY be combined with <spanx style="verb">default</spanx>. |
2139 | 2180 | </t> |
|
2144 | 2185 | <spanx style="verb">subset_of</spanx>. |
2145 | 2186 | </t> |
2146 | 2187 | <t> |
2147 | | - MAY be combined with <spanx style="verb">superset_of</spanx>, |
2148 | | - in which case the values of <spanx style="verb">add</spanx> |
2149 | | - MUST be a superset of the values of |
2150 | | - <spanx style="verb">superset_of</spanx>. |
| 2188 | + MAY be combined with <spanx style="verb">superset_of</spanx>. |
2151 | 2189 | </t> |
2152 | 2190 | <t> |
2153 | 2191 | MAY be combined with <spanx style="verb">essential</spanx>. |
|
2192 | 2230 | <t> |
2193 | 2231 | Combination with other operators in a metadata parameter policy: |
2194 | 2232 | <list style="symbols"> |
| 2233 | + <t> |
| 2234 | + MAY be combined with <spanx style="verb">value</spanx> |
| 2235 | + if the value of <spanx style="verb">value</spanx> is not |
| 2236 | + null. |
| 2237 | + </t> |
2195 | 2238 | <t> |
2196 | 2239 | MAY be combined with <spanx style="verb">add</spanx>. |
2197 | 2240 | </t> |
2198 | 2241 | <t> |
2199 | | - MAY be combined with <spanx style="verb">one_of</spanx>, in |
2200 | | - which case the <spanx style="verb">default</spanx> value |
2201 | | - MUST be among the <spanx style="verb">one_of</spanx> values. |
| 2242 | + MAY be combined with <spanx style="verb">one_of</spanx>. |
2202 | 2243 | </t> |
2203 | 2244 | <t> |
2204 | | - MAY be combined with <spanx style="verb">subset_of</spanx>, |
2205 | | - in which case the <spanx style="verb">default</spanx> values |
2206 | | - MUST be a subset of the <spanx style="verb">subset_of</spanx> |
2207 | | - values. |
| 2245 | + MAY be combined with <spanx style="verb">subset_of</spanx>. |
2208 | 2246 | </t> |
2209 | 2247 | <t> |
2210 | | - MAY be combined with <spanx style="verb">superset_of</spanx>, |
2211 | | - in which case the <spanx style="verb">default</spanx> values |
2212 | | - MUST be a superset of the |
2213 | | - <spanx style="verb">superset_of</spanx> values. |
| 2248 | + MAY be combined with <spanx style="verb">superset_of</spanx>. |
2214 | 2249 | </t> |
2215 | 2250 | <t> |
2216 | 2251 | MAY be combined with <spanx style="verb">essential</spanx>. |
|
2222 | 2257 | </t> |
2223 | 2258 | <t> |
2224 | 2259 | Operator value merge: The operator values MUST be equal. If the |
2225 | | - values are not equal this MUST result in a policy error. |
| 2260 | + values are not equal this MUST produce a policy error. |
2226 | 2261 | </t> |
2227 | 2262 | </section> |
2228 | 2263 |
|
|
2260 | 2295 | Combination with other operators in a metadata parameter policy: |
2261 | 2296 | <list style="symbols"> |
2262 | 2297 | <t> |
2263 | | - MAY be combined with <spanx style="verb">default</spanx>, |
2264 | | - in which case the value of default MUST be among the |
2265 | | - <spanx style="verb">one_of</spanx> values. |
| 2298 | + MAY be combined with <spanx style="verb">value</spanx>, |
| 2299 | + in which case the value of <spanx style="verb">value</spanx> |
| 2300 | + MUST be among the <spanx style="verb">one_of</spanx> values. |
| 2301 | + </t> |
| 2302 | + <t> |
| 2303 | + MAY be combined with <spanx style="verb">default</spanx>. |
2266 | 2304 | </t> |
2267 | 2305 | <t> |
2268 | 2306 | MAY be combined with <spanx style="verb">essential</spanx>. |
|
2285 | 2323 | Name: <spanx style="verb">subset_of</spanx> |
2286 | 2324 | </t> |
2287 | 2325 | <t> |
2288 | | - Action: If the metadata parameter is present, this operator |
2289 | | - computes the intersection between the values of the operator and |
2290 | | - the metadata parameter. If the intersection is non-empty, the |
2291 | | - metadata parameter is set to the values in the intersection. If |
2292 | | - the intersection is empty, the metadata parameter MUST be |
2293 | | - removed. Note that this behavior makes |
2294 | | - <spanx style="verb">subset_of</spanx> a potential value modifier |
2295 | | - in addition to it being a value check. |
| 2326 | + Action: If the metadata parameter is present, it is assigned the |
| 2327 | + intersection between the values of the operator and the |
| 2328 | + metadata parameter. Note that the resulting intersection may |
| 2329 | + thus be an empty array <spanx style="verb">[]</spanx>. Also note |
| 2330 | + that <spanx style="verb">subset_of</spanx> is a potential value |
| 2331 | + modifier in addition to it being a value check. |
2296 | 2332 | </t> |
2297 | 2333 | <t> |
2298 | 2334 | Metadata parameter JSON values: |
|
2320 | 2356 | Combination with other operators in a metadata parameter policy: |
2321 | 2357 | <list style="symbols"> |
2322 | 2358 | <t> |
2323 | | - MAY be combined with <spanx style="verb">add</spanx>, in |
2324 | | - which case the values of <spanx style="verb">add</spanx> |
| 2359 | + MAY be combined with <spanx style="verb">value</spanx>, |
| 2360 | + in which case the values of <spanx style="verb">value</spanx> |
2325 | 2361 | MUST be a subset of the values of |
2326 | 2362 | <spanx style="verb">subset_of</spanx>. |
2327 | 2363 | </t> |
2328 | 2364 | <t> |
2329 | | - MAY be combined with <spanx style="verb">default</spanx>, in |
2330 | | - which case the values of <spanx style="verb">default</spanx> |
| 2365 | + MAY be combined with <spanx style="verb">add</spanx>, in |
| 2366 | + which case the values of <spanx style="verb">add</spanx> |
2331 | 2367 | MUST be a subset of the values of |
2332 | 2368 | <spanx style="verb">subset_of</spanx>. |
2333 | 2369 | </t> |
| 2370 | + <t> |
| 2371 | + MAY be combined with <spanx style="verb">default</spanx>. |
| 2372 | + </t> |
2334 | 2373 | <t> |
2335 | 2374 | MAY be combined with <spanx style="verb">superset_of</spanx>, |
2336 | 2375 | in which case the values of |
|
2348 | 2387 | <t> |
2349 | 2388 | Operator value merge: The result of merging the values of two |
2350 | 2389 | <spanx style="verb">subset_of</spanx> operators is the |
2351 | | - intersection of the operator values. If the intersection is |
2352 | | - empty, this MUST result in a policy error. |
| 2390 | + intersection of the operator values. Note that the resulting |
| 2391 | + intersection may thus be an empty array |
| 2392 | + <spanx style="verb">[]</spanx>. |
2353 | 2393 | </t> |
2354 | 2394 | </section> |
2355 | 2395 |
|
|
2388 | 2428 | Combination with other operators in a metadata parameter policy: |
2389 | 2429 | <list style="symbols"> |
2390 | 2430 | <t> |
2391 | | - MAY be combined with <spanx style="verb">add</spanx>, in |
2392 | | - which case the values of <spanx style="verb">add</spanx> |
| 2431 | + MAY be combined with <spanx style="verb">value</spanx>, |
| 2432 | + in which case the values of <spanx style="verb">value</spanx> |
2393 | 2433 | MUST be a superset of the values of |
2394 | 2434 | <spanx style="verb">superset_of</spanx>. |
2395 | 2435 | </t> |
2396 | 2436 | <t> |
2397 | | - MAY be combined with <spanx style="verb">default</spanx>, in |
2398 | | - which case the values of <spanx style="verb">default</spanx> |
2399 | | - MUST be a superset of the values of |
2400 | | - <spanx style="verb">superset_of</spanx>. |
| 2437 | + MAY be combined with <spanx style="verb">add</spanx>. |
| 2438 | + </t> |
| 2439 | + <t> |
| 2440 | + MAY be combined with <spanx style="verb">default</spanx>. |
2401 | 2441 | </t> |
2402 | 2442 | <t> |
2403 | 2443 | MAY be combined with <spanx style="verb">subset_of</spanx>, |
|
2452 | 2492 | <t> |
2453 | 2493 | Combination with other operators in a metadata parameter policy: |
2454 | 2494 | <list style="symbols"> |
| 2495 | + <t> |
| 2496 | + MAY be combined with <spanx style="verb">value</spanx>, |
| 2497 | + except when <spanx style="verb">value</spanx> is null and |
| 2498 | + <spanx style="verb">essential</spanx> is true. |
| 2499 | + </t> |
2455 | 2500 | <t> |
2456 | 2501 | MAY be combined with any other operator. |
2457 | 2502 | </t> |
|
2602 | 2647 | Statement claim, in which case the operator MUST be understood |
2603 | 2648 | and processed. If an additional operator listed in |
2604 | 2649 | <spanx style="verb">metadata_policy_crit</spanx> is not understood |
2605 | | - or cannot be processed, then this MUST result in a policy error |
2606 | | - and the Trust Chain MUST be considered invalid. |
| 2650 | + or cannot be processed, then this MUST produce a policy error and |
| 2651 | + the Trust Chain MUST be considered invalid. |
2607 | 2652 | </t> |
2608 | 2653 |
|
2609 | 2654 | </section> |
|
2652 | 2697 | </t> |
2653 | 2698 |
|
2654 | 2699 | <t> |
2655 | | - An important procedure during the iteration is the |
| 2700 | + An important task during the iteration is the |
2656 | 2701 | <spanx style="verb">metadata_policy</spanx> validation. It MUST |
2657 | 2702 | ensure the data structure is compliant and that every metadata |
2658 | 2703 | parameter policy contains only allowed operator combinations, as |
|
2662 | 2707 | contains no operators that cannot be understood and processed |
2663 | 2708 | whose names are among the collected |
2664 | 2709 | <spanx style="verb">metadata_policy_crit</spanx> values. An |
2665 | | - unsuccessful validation MUST result in a policy error. |
| 2710 | + unsuccessful validation MUST produce a policy error. |
2666 | 2711 | </t> |
2667 | 2712 |
|
2668 | 2713 | <t> |
|
2682 | 2727 | </t> |
2683 | 2728 |
|
2684 | 2729 | <t> |
2685 | | - The merge is performed at all three levels of the |
| 2730 | + The merge is performed at each of the three levels of the |
2686 | 2731 | <spanx style="verb">metadata_policy</spanx> data structure |
2687 | 2732 | described in <xref target="metadata_policy_structure"/>, by |
2688 | 2733 | starting from the top level: |
|
2739 | 2784 | that are not allowed, as described in |
2740 | 2785 | <xref target="metadata_policy_operators"/> and in |
2741 | 2786 | accordance with the specifications of the operators, this |
2742 | | - MUST result in a policy error. |
| 2787 | + MUST produce a policy error. |
2743 | 2788 | </t> |
2744 | 2789 | <t> |
2745 | 2790 | Subordinate metadata parameter policies that are not |
|
2761 | 2806 | <xref target="metadata_policy_operators"/> and in |
2762 | 2807 | accordance with the operator specification. If an operator |
2763 | 2808 | value merge is not allowed or otherwise unsuccessful this |
2764 | | - MUST result in a policy error. |
| 2809 | + MUST produce a policy error. |
2765 | 2810 | </t> |
2766 | 2811 | <t> |
2767 | 2812 | Subordinate operators that are not present in the current |
@@ -10045,6 +10090,34 @@ Host: op.umu.se |
10045 | 10090 | <t> |
10046 | 10091 | -42 |
10047 | 10092 | <list style="symbols"> |
| 10093 | + <t> |
| 10094 | + Addresses #11, #180: |
| 10095 | + |
| 10096 | + Allows the following unconditional operator combinations: |
| 10097 | + add + superset_of. |
| 10098 | + |
| 10099 | + Makes the following previously conditional operator combinations unconditional: |
| 10100 | + default + one_of, default + subset_of, default + superset_of. |
| 10101 | + |
| 10102 | + Makes the following previously unconditional operator combination conditional: |
| 10103 | + value + essential. |
| 10104 | + |
| 10105 | + Allows the following conditional operator combinations: |
| 10106 | + value + add, value + default, value + one_of, value + subset_of, value + superset_of. |
| 10107 | + </t> |
| 10108 | + <t> |
| 10109 | + Addresses #182: When applying the subset_of operator on a metadata |
| 10110 | + parameter, if the resulting intersection is empty, then the metadata is |
| 10111 | + made empty. Previously it was removed, which may lead to policy override |
| 10112 | + for metadata parameters that a have default value, for instance |
| 10113 | + grant_types RP metadata or grant_types_supported OP metadata. The merge of |
| 10114 | + two subset_of operators is changed to allow empty intersection as well. |
| 10115 | + </t> |
| 10116 | + <t> |
| 10117 | + Addresses #129: Clarifies that the combination rules for a metadata |
| 10118 | + policy operator apply to both individual as well as merged metadata |
| 10119 | + parameter policies. |
| 10120 | + </t> |
10048 | 10121 | <t> |
10049 | 10122 | Fixed #184: Clarified that Request Objects can be passed by value or by reference. |
10050 | 10123 | </t> |
|
0 commit comments