<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:"Segoe UI";
        panose-1:2 11 5 2 4 2 4 2 2 3;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
span.EmailStyle19
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;
        color:#002060;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal"><span style="color:#002060">Filip is correct.  The intent is only to enforce this behavior in certified implementations – not to change the specifications.  This is being done to increase interoperability.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#002060"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#002060">There’s lots of cases where we intentionally constrain certified implementations beyond what’s strictly required by the specifications to increase interoperability.  For instance, the test “(OP-IDToken-kid) IDToken
 has kid [Basic, Implicit, Hybrid]” requires that the ID Token always contains a Key ID, even though the Connect spec only requires it when there are multiple keys in the JWK Set.  This was done so that it could be counted on.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#002060"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#002060">Likewise, the WG decision to require unique “kid” values goes beyond the spec, but eliminates a number of potential errors resulting from odd corner cases.  I firmly believe that the working made the right call
 to enforce this in the certification suite.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#002060"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#002060">                                                          -- Mike<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#002060"><o:p> </o:p></span></p>
<div>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b>From:</b> Openid-specs-fapi <openid-specs-fapi-bounces@lists.openid.net>
<b>On Behalf Of </b>Filip Skokan via Openid-specs-fapi<br>
<b>Sent:</b> Friday, January 17, 2020 1:42 PM<br>
<b>To:</b> Financial API Working Group List <openid-specs-fapi@lists.openid.net><br>
<b>Cc:</b> Filip Skokan <panva.ip@gmail.com><br>
<b>Subject:</b> [EXTERNAL] Re: [Openid-specs-fapi] Duplicate kids in jwks<o:p></o:p></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">I don’t think it’s clear whether the intent was an errata or a proposal to the WG to further constrain the Connect certification profile. <o:p></o:p></p>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-bottom:12.0pt">I believe we could only do the latter. <o:p></o:p></p>
<div>
<p class="MsoNormal">Odesláno z iPhonu<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><br>
<br>
<o:p></o:p></p>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<p class="MsoNormal" style="margin-bottom:12.0pt">17. 1. 2020 v 22:05, Brian Campbell via Openid-specs-fapi <<a href="mailto:openid-specs-fapi@lists.openid.net">openid-specs-fapi@lists.openid.net</a>>:<o:p></o:p></p>
</blockquote>
</div>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<div>
<p class="MsoNormal"><o:p></o:p></p>
<div>
<p class="MsoNormal">For better or worse JOSE allowed for duplicate kids and Connect didn't constrain it. So requiring uniqueness is a breaking change that an erratum shouldn't be doing. I guess that counts as a negative opinion towards the decision in
<a href="https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fbitbucket.org%2Fopenid%2Fconnect%2Fissues%2F1127&data=02%7C01%7CMichael.Jones%40microsoft.com%7C3551ece54c0549a9fb0008d79b962a4e%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637148942095112814&sdata=lqMLz%2BB19FKwQyV4z4m8hWZZ%2FrAJArE6Pd84xfRaBdk%3D&reserved=0" target="_blank">
https://bitbucket.org/openid/connect/issues/1127</a> <o:p></o:p></p>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<div>
<p class="MsoNormal">On Fri, Jan 17, 2020 at 12:50 AM Joseph Heenan via Openid-specs-fapi <<a href="mailto:openid-specs-fapi@lists.openid.net">openid-specs-fapi@lists.openid.net</a>> wrote:<o:p></o:p></p>
</div>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in">
<div>
<p class="MsoNormal">Hi all,<o:p></o:p></p>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">I wanted to direct the FAPI working group to this discussion within the Connect working group:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"><a href="https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fbitbucket.org%2Fopenid%2Fconnect%2Fissues%2F1127&data=02%7C01%7CMichael.Jones%40microsoft.com%7C3551ece54c0549a9fb0008d79b962a4e%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637148942095122809&sdata=xOLPeYfXtphZIKATqdr6Qun9LLSkZrWWL0G2JdTsC8Q%3D&reserved=0" target="_blank">https://bitbucket.org/openid/connect/issues/1127</a><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Namely that duplicate kids are not permitted in JWKS.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">A test for this was recently added to all the conformance tests, which caused one of the UK banks to opine:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<p class="MsoNormal">it is valid for the JWK endpoint to return multiple KID instances, one for each ‘alg’ supported?<br>
The spec calls for the alg PS256 or longer to be supported, so we also have (for instance) PS384, PS512. And although we may show a couple that we don’t need, my point is that it must be valid to show multiple key entries to support multiple valid alg values. <o:p></o:p></p>
</blockquote>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">To some extent this seems a reasonable point, reusing a key across across two algs that can use the same key seems ok, and arguably perhaps better than having the key once without an ‘alg’ specified.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">As this affects the FAPI certification tests, I wanted to check the FAPI WG agrees with the decision in <a href="https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fbitbucket.org%2Fopenid%2Fconnect%2Fissues%2F1127&data=02%7C01%7CMichael.Jones%40microsoft.com%7C3551ece54c0549a9fb0008d79b962a4e%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637148942095132801&sdata=V8UtOzKQhIeFFBnhGyaRUWQn1nLqGhTrIAm7vQakV1o%3D&reserved=0" target="_blank">https://bitbucket.org/openid/connect/issues/1127</a> -
 any opinions (positive & negative) would be great please.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Thanks<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Joseph Heenan<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">OpenID Certification Team<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</div>
<p class="MsoNormal">_______________________________________________<br>
Openid-specs-fapi mailing list<br>
<a href="mailto:Openid-specs-fapi@lists.openid.net" target="_blank">Openid-specs-fapi@lists.openid.net</a><br>
<a href="https://nam06.safelinks.protection.outlook.com/?url=http%3A%2F%2Flists.openid.net%2Fmailman%2Flistinfo%2Fopenid-specs-fapi&data=02%7C01%7CMichael.Jones%40microsoft.com%7C3551ece54c0549a9fb0008d79b962a4e%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637148942095132801&sdata=TJ3cqqBG8djh97YuhMzUICSiodGgapRMRzljvrXjJhg%3D&reserved=0" target="_blank">http://lists.openid.net/mailman/listinfo/openid-specs-fapi</a><o:p></o:p></p>
</blockquote>
</div>
<p class="MsoNormal"><br>
<b><i><span style="font-size:10.0pt;font-family:"Segoe UI",sans-serif;color:#555555;border:none windowtext 1.0pt;padding:0in">CONFIDENTIALITY NOTICE: This email may contain confidential and privileged material for the sole use of the intended recipient(s).
 Any review, use, distribution or disclosure by others is strictly prohibited.  If you have received this communication in error, please notify the sender immediately by e-mail and delete the message and any file attachments from your computer. Thank you.</span></i></b>_______________________________________________<br>
Openid-specs-fapi mailing list<br>
<a href="mailto:Openid-specs-fapi@lists.openid.net">Openid-specs-fapi@lists.openid.net</a><br>
<a href="http://lists.openid.net/mailman/listinfo/openid-specs-fapi">http://lists.openid.net/mailman/listinfo/openid-specs-fapi</a><o:p></o:p></p>
</div>
</blockquote>
</div>
</div>
</body>
</html>