<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-2022-jp">
<style type="text/css" style="display:none;"> P {margin-top:0;margin-bottom:0;} </style>
</head>
<body dir="ltr">
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<span style="margin:0px;font-size:12pt">Hi, </span></div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<div style="margin:0px;font-size:12pt"><span style="margin:0px;background-color:rgb(255, 255, 255);display:inline !important">Below are comments/questions</span> after reading<span> </span><a href="https://bitbucket.org/openid/connect/src/00140ab1e32c7160ed2635ce871c555ce7c32b75/openid-connect-claims-aggregation/openid-connect-claims-aggregation-1_0.md" title="https://bitbucket.org/openid/connect/src/00140ab1e32c7160ed2635ce871c555ce7c32b75/openid-connect-claims-aggregation/openid-connect-claims-aggregation-1_0.md" style="margin:0px">Aggregated
Claims</a><span> </span>and<span> </span><a href="https://mattrglobal.github.io/oidc-client-bound-assertions-spec/#name-token-endpoint-response" title="https://mattrglobal.github.io/oidc-client-bound-assertions-spec/#name-token-endpoint-response" style="margin:0px">Credential
Provider</a><span> </span>drafts as requested during today's Connect call:</div>
<div style="margin:0px;font-size:12pt"><br>
</div>
<div style="margin:0px;font-size:12pt">Regarding core <o:p>functionality of binding claims to the key material supplied by the Client, </o:p>Aggregated Claims binds to `uid` - base64 url encoded representation of the thumbprint of the Client$B!G(Bs public key used
for signing, while Credential Provider binds to `sub_jwk`- a raw key material that is a JSON object that is a valid JWK. </div>
<div style="margin:0px;font-size:12pt"><span style="margin:0px"><br>
</span></div>
<div style="margin:0px;font-size:12pt"><span style="margin:0px">Usage of `uid` seems to be a simpler approach. What would be an advantage of using `sub_jwk` over encoded thumbprint of a public key? Assuming one of the requirements of Credential Provider is
to expand to the usage of additional credential formats, would usage of `uid` be applicable to JSON-LD too or does `sub_jwk` has an advantage?</span><o:p> </o:p></div>
<div style="margin:0px;font-size:12pt"><br>
</div>
<div style="margin:0px;font-size:12pt">Credential Provider also defines a new scope `openid_credential`. Indicating in the request that binding is supported can be achieved through `credential_supported` OP metadata and could work without defining a new scope,
like in<span> </span><span style="margin:0px;background-color:rgb(255, 255, 255);display:inline !important">Aggregated Claims document</span>.</div>
<div style="margin:0px;font-size:12pt"><o:p><br>
</o:p></div>
<div style="margin:0px;font-size:12pt"><o:p>In addition to a binding mechanism,<span> </span></o:p><o:p>Aggregated Claims defines a m</o:p><span style="margin:0px">echanism to request claims </span><span style="margin:0px">building up on `claims` parameter
and Aggregated Claims mechanism of OIDC, and Credential Provider defines support for a</span><span style="margin:0px">dditional credential and identifier formats</span><o:p> (such as </o:p><span style="margin:0px">JSON-LD, DIDs). These are not mutually exclusive
and it should be possible to<span> </span><o:p style="background-color:rgb(255, 255, 255)">fulfill requirement of both in one document, while staying true to the scope of defining mechanism for claims/credential binding (and of course semantics would have
to align!).</o:p></span><br>
</div>
<div style="margin:0px;font-size:12pt"><span style="margin:0px"><o:p style="background-color:rgb(255, 255, 255)"><br>
</o:p></span></div>
<div style="margin:0px;font-size:12pt"><span style="margin:0px"><o:p style="background-color:rgb(255, 255, 255)">Best Regards,</o:p></span></div>
<span style="margin:0px;font-size:12pt"><span style="margin:0px"><o:p style="background-color:rgb(255, 255, 255)">Kristina</o:p></span></span></div>
<div id="appendonsend"></div>
<div style="font-family:Calibri,Arial,Helvetica,sans-serif; font-size:12pt; color:rgb(0,0,0)">
<br>
</div>
<hr tabindex="-1" style="display:inline-block; width:98%">
<div id="divRplyFwdMsg" dir="ltr"><font face="Calibri, sans-serif" color="#000000" style="font-size:11pt"><b>$B:9=P?M(B:</b> Openid-specs-ab <openid-specs-ab-bounces@lists.openid.net> $B$,(B Takahiko Kawasaki via Openid-specs-ab <openid-specs-ab@lists.openid.net> $B$NBeM}$GAw?.(B<br>
<b>$BAw?.F|;~(B:</b> 2020$BG/(B11$B7n(B17$BF|(B 6:09<br>
<b>$B08@h(B:</b> Artifact Binding/Connect Working Group <openid-specs-ab@lists.openid.net><br>
<b>CC:</b> Takahiko Kawasaki <taka@authlete.com><br>
<b>$B7oL>(B:</b> [Openid-specs-ab] Feedback to OpenID Connect Claims Aggregation 1.0</font>
<div> </div>
</div>
<div>
<div dir="ltr">Hello,<br>
<br>
This is the first feedback from me to "OpenID Connect Claims Aggregation 1.0" as requested in the last AB/Connect WG call on Nov 9.
<div><br>
- - - - - - - - - -<br>
<br>
- Section 5.3: I'm not sure RS256 is appropriate as the default value for claims_signed_response_alg. FAPI Part 2 Section 8.6 explicitly prohibits the algorithm for security reasons.<br>
<br>
- Section 5.4.2: Without diagrams and examples, it is difficult for me to understand how "uid" and "cp_sub" are used for what reasons.<br>
<br>
- Section 5.6.1: Why is it necessary to define "uid" request parameter? It seems that the "uid" request parameter would make it possible to get information about an arbitrary end-user who is different from the legitimate one that is associated with the presented
access token.<br>
<br>
- Section 5.6.1: Why is it necessary to list "additional" client identifiers in "aud"? It seems that the "aud" request parameter would make it possible to add arbitrary client identifiers in addition to the legitimate one that is associated with the presented
access token. It seems the description was added intentionally, but I'm not sure it's safe from a security perspective.<br>
<br>
- "uid": In Section 5.4.2, "uid" is the thumbprint of a public key. On the other hand, in Section 5.6.1, "uid" is an end-user's identifier. Using the same parameter name with different meanings is confusing.<br>
<br>
- Section 5.6.2: The 6th paragraph ("If the Aggregation Response is signed and/or encrypted...") contradicts with other parts in the specification itself. The specification requires that responses from Claims Endpoint always be signed and optionally encrypted.<br>
<br>
Editorial Issues<br>
- "http" is used in some links.<br>
- Link to RFC 7636 is wrong.<br>
- Links to JW* specifications are old. They should point to IETF RFCs.<br>
- Link to MTLS is old. It should point to the IETF RFC 8705.<br>
- Referenced OpenID.IDA specification is not the latest one. The published latest version is ID2.<br>
- The list in Section 1 is not properly formatted in HTML.<br>
- Parameter names should be monospace instead of italic.<br>
- Section 5.4: s/Code Authorization Flow/Authorization Code Flow/<br>
- Section 5.6.1: JSON object given to "aud" in the Aggregation Request is wrong.<br>
- Section 5.6.2: s/MAY elect to/MAY select to/<br>
- More diagrams and examples are needed for readers.<br>
<br>
To be honest, I couldn't understand the specification well due to its complexity and lack of diagrams and examples. What is the essential difference between UserInfo Endpoint and Claims Endpoint?<br>
<br>
Best Regards,<br>
Takahiko Kawasaki<br>
</div>
</div>
</div>
</body>
</html>