<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"></head><body dir="auto"><div>And which formatting options do you guys prefer?<br><br>Sent from my iPad</div><div><br>On 2014/07/28, at 11:18, Torsten Lodderstedt <<a href="mailto:torsten@lodderstedt.net">torsten@lodderstedt.net</a>> wrote:<br><br></div><blockquote type="cite"><div><meta http-equiv="content-type" content="text/html; charset=utf-8"><div>+1</div><div><br>Am 28.07.2014 um 18:02 schrieb John Bradley <<a href="mailto:ve7jtb@ve7jtb.com">ve7jtb@ve7jtb.com</a>>:<br><br></div><blockquote type="cite"><div><meta http-equiv="Content-Type" content="text/html charset=us-ascii">I think the most useful thing is to return the Connect issuer.   Returning keys directly will break for those IdP that rotate there signing keys on a regular basis.<div><br></div><div><br><div><div>On Jul 28, 2014, at 11:34 AM, Nat Sakimura <<a href="mailto:sakimura@gmail.com">sakimura@gmail.com</a>> wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div dir="ltr">So, the reason to do the discovery on the OpenID 2.0 Identifier is to detect an attacker setting up an OpenID Connect OP that returns an ID Token with the openid2_id of the victim to impersonate him. <div><br>
</div><div>We discussed at the F2F at ForgeRock back in March about it and generally agreed that returning a public key from the openid2_id would mitigate the issue, and thus I wrote it that way. </div><div><br></div><div>
Obviously, returning jwks_uri or iss would do the job though it will require progressively more requests. </div><div>When I wrote the draft, I opted for the least requests option. </div><div>Having pointed out by Justin, though, if you think of it, perhaps it does not involve more requests at all. </div>
<div>It may not even involve the keys: if the iss returned by the openid2_id machies that of the ID Token, </div><div>it may just suffice as a "light weight" verification. In this case, which do we want to return?  </div>
<div><br></div><div>Case 1) </div><div><pre style="font-family: 'Courier New', Courier, monospace; padding: 4px; background-color: rgb(204, 204, 204);">  HTTP/1.1 200 OK
  Content-Type: application/json

  {
   "iss":"<a href="https://server.example.com/">https://server.example.com</a>"
  }</pre></div><div>OR </div><div><br></div><div>Case 2)</div><div><pre style="font-family: 'Courier New', Courier, monospace; padding: 4px; background-color: rgb(204, 204, 204);">  HTTP/1.1 200 OK
  Content-Type: application/jrd+json

  {
   "subject": "<a href="https://example.com/joe">https://example.com/joe</a>",
   "links":
    [
     {
      "rel": "<a href="http://openid.net/specs/connect/1.0/issuer">http://openid.net/specs/connect/1.0/issuer</a>",
      "href": "<a href="https://server.example.com/">https://server.example.com</a>"
     }
    ]
  }</pre></div><div><br></div><div>FYI, I prefer Case 1), because all the response to the openid2_id can return the same thing, and simple, </div><div>but that is only my own opinion. </div><div><br></div><div>Now, there is one issue that are common to all three options. </div>
<div>Many OpenID 2.0 Identifiers are not https but http. </div><div>This means that the response may be tampered. </div><div>Do we want to take care of it? </div><div>Unfortunately, there is no guarantee that http openid2_id and https openid2_id points to the same person. </div>
<div>So, a simple replacement of the scheme does not work in principle. </div><div>We may mandate it for the Migration spec support, but I do not know if that is feasible at all. </div><div><br></div><div>Any opinion? </div>
<div><br></div><div>Nat</div></div><div class="gmail_extra"><br><br><div class="gmail_quote">2014-07-28 8:56 GMT-04:00 Richer, Justin P. <span dir="ltr"><<a href="mailto:jricher@mitre.org" target="_blank">jricher@mitre.org</a>></span>:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">



<div style="word-wrap:break-word">
I'm not seeing the purpose in returning the JWK set from the OpenID 2 identifier URI, especially if the client is supposed to be doing regular OIDC to validate the ID Token anyway (and will therefore fetch the issuer's jwks_uri). Can you please explain to me
 what this step is supposed to be accomplishing?
<div><br>
</div>
<div>Is the idea that the client would be able to verify that the claimed OpenID 2 identifier actually points to the given issuer, basically completing the round-trip verification? If that's the case, then wouldn't it make more sense to return the OpenID Connect
 issuer from the OpenID 2 discovery steps? Then from the issuer you can determine the key, just like normal. This would allow for a forward-looking discovery launching point ("all I have is this OpenID 2.0 URI, what's the OpenID Connect process to start here?")
 well as a backward-looking verification for the claim. </div><span class="HOEnZb"><font color="#888888">
<div><br>
</div>
<div> -- Justin</div></font></span><div><div class="h5">
<div><br>
<div>
<div>On Jul 27, 2014, at 9:35 AM, Nat Sakimura <<a href="mailto:sakimura@gmail.com" target="_blank">sakimura@gmail.com</a>> wrote:</div>
<br>
<blockquote type="cite">
<div dir="ltr">Actually, the OpenID 2.0 Identifier URL returns JWK Set. It should probably be more explicit than to say <span style="font-family:verdana,charcoal,helvetica,arial,sans-serif"> </span><tt style="color:rgb(0,51,102);font-family:'Courier New',Courier,monospace">application/jwk-set+json. </tt>
<div><tt style="color:rgb(0,51,102);font-family:'Courier New',Courier,monospace"><br>
</tt></div>
Good point about reutrning jwk_uri instead of the JWK Set. 
<div>The downside is that you have to make two calls, but it is only once per RP/OpenID 2.0 Identifier pair, so it probably is OK. <br>
<div><br>
</div>
<div>What do others think? </div>
<div><br>
</div>
<div>Nat</div>
</div>
</div>
<div class="gmail_extra"><br>
<br>
<div class="gmail_quote">2014-07-26 11:52 GMT-04:00 Torsten Lodderstedt <span dir="ltr">
<<a href="mailto:torsten@lodderstedt.net" target="_blank">torsten@lodderstedt.net</a>></span>:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div text="#000000" bgcolor="#FFFFFF">Hi Nat,<br>
<br>
I just read the spec (for the first time) and think the concept is generally sound. I'm wondering a bit about the way the client obtains the OP's public key. The GET request on the OpenID 2.0 Identifier URL directly returns the JWK. I would suggest to just
 return the jwk_uri, in the same way openid connect discovery does it. This way this GET request is static (even with key rotation in place) and the OP can reuse the existing functionality to publish its public keys (including support for multiple keys in case
 of rotation).<br>
<br>
What do you think? <br>
<br>
kind regards,<br>
Torsten.<br>
<br>
<div>Am 26.07.2014 07:44, schrieb Nat Sakimura:<br>
</div>
<blockquote type="cite">
<div>
<div>
<div dir="ltr">Thanks to Edmund Jay, the examples are now fixed. 
<div>This is to initiate the WG Last Call.  </div>
<div>Please review the document and file issues if there are within a week. </div>
<div>Once all the issues are resolved, we will go to the implementer's draft public review period for 45 days. </div>
<div><br>
</div>
<div>Nat</div>
<div>
<div><br>
</div>
-- <br>
Nat Sakimura (=nat)
<div>Chairman, OpenID Foundation<br>
<a href="http://nat.sakimura.org/" target="_blank">http://nat.sakimura.org/</a><br>
@_nat_en</div>
</div>
</div>
<br>
<fieldset></fieldset> <br>
</div>
</div>
<pre>_______________________________________________
Openid-specs-ab mailing list
<a href="mailto:Openid-specs-ab@lists.openid.net" target="_blank">Openid-specs-ab@lists.openid.net</a>
<a href="http://lists.openid.net/mailman/listinfo/openid-specs-ab" target="_blank">http://lists.openid.net/mailman/listinfo/openid-specs-ab</a>
</pre>
</blockquote>
<br>
</div>
</blockquote>
</div>
<br>
<br clear="all">
<div><br>
</div>
-- <br>
Nat Sakimura (=nat)
<div>Chairman, OpenID Foundation<br>
<a href="http://nat.sakimura.org/" target="_blank">http://nat.sakimura.org/</a><br>
@_nat_en</div>
</div>
_______________________________________________<br>
Openid-specs-ab mailing list<br>
<a href="mailto:Openid-specs-ab@lists.openid.net" target="_blank">Openid-specs-ab@lists.openid.net</a><br>
<a href="http://lists.openid.net/mailman/listinfo/openid-specs-ab" target="_blank">http://lists.openid.net/mailman/listinfo/openid-specs-ab</a><br>
</blockquote>
</div>
<br>
</div>
</div></div></div>

</blockquote></div><br><br clear="all"><div><br></div>-- <br>Nat Sakimura (=nat)<div>Chairman, OpenID Foundation<br><a href="http://nat.sakimura.org/" target="_blank">http://nat.sakimura.org/</a><br>@_nat_en</div>
</div>
_______________________________________________<br>Openid-specs-ab mailing list<br><a href="mailto:Openid-specs-ab@lists.openid.net">Openid-specs-ab@lists.openid.net</a><br><a href="http://lists.openid.net/mailman/listinfo/openid-specs-ab">http://lists.openid.net/mailman/listinfo/openid-specs-ab</a><br></blockquote></div><br></div></div></blockquote><blockquote type="cite"><div><span>_______________________________________________</span><br><span>Openid-specs-ab mailing list</span><br><span><a href="mailto:Openid-specs-ab@lists.openid.net">Openid-specs-ab@lists.openid.net</a></span><br><span><a href="http://lists.openid.net/mailman/listinfo/openid-specs-ab">http://lists.openid.net/mailman/listinfo/openid-specs-ab</a></span><br></div></blockquote></div></blockquote></body></html>