<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1252">
<style type="text/css" style="display:none;"><!-- P {margin-top:0;margin-bottom:0;} --></style>
</head>
<body dir="ltr">
<div id="divtagdefaultwrapper" style="font-size:12pt;color:#000000;background-color:#FFFFFF;font-family:Calibri,Arial,Helvetica,sans-serif;">
<p>Who said&nbsp;we would trust any unsigned JWT token? It's obvious that&nbsp;only&nbsp;recognizable issuers&nbsp;and signed by somebody we trust, perhaps even encrypted, JWT&nbsp;tokens should be processed.
<br>
<br>
</p>
<div style="color: rgb(0, 0, 0);">
<hr tabindex="-1" style="width: 98%; display: inline-block;">
<div id="divRplyFwdMsg" dir="ltr"><font color="#000000" face="Calibri, sans-serif" style="font-size: 11pt;"><b>From:</b> Justin Richer &lt;jricher@mit.edu&gt;<br>
<b>Sent:</b> Tuesday, August 4, 2015 8:02 PM<br>
<b>To:</b> Luiz Omori<br>
<b>Cc:</b> mitreid-connect@mit.edu<br>
<b>Subject:</b> Re: [mitreid-connect] JSON Web Token (JWT) Profile for OAuth 2.0 Client Authentication and Authorization Grants</font>
<div>&nbsp;</div>
</div>
<div>We implemented what's there in order to have a way to refresh ID tokens and do some very weak session management. It was never widely used and we didn't push the implementation beyond that because there was no demand for it.<br>
<br>
To use the assertion properly (which I still don't think you need in order to do what you're trying to do), you need to figure out not only how to process the assertions but also which assertions you trust. You really can't just take in any old assertion that's
 inbound and mint a token based on what's inside -- that's nuts and wildly insecure. You can only trust assertions from trusted providers with the appropriate attributes in place, and that are cryptographically protected. So there's a lot more than jus treading
 the mandatory fields here, unless you want a security hole the size of asia in your code.<br>
<br>
&nbsp;-- Justin<br>
<br>
<div class="moz-cite-prefix">On 8/4/2015 5:07 PM, Luiz Omori wrote:<br>
</div>
<blockquote type="cite">
<div>OK.</div>
<div><br>
</div>
<div>Back to the JWT Assertion grant type, why is the existing and incomplete code expecting an ID token previously generated by MitreID? Isn’t it just a matter of generating one, and a new access token, based on the information in the mandatory (for this flow)
 JWT token fields (e.g. sub) and request parameters (e.g. scope)?</div>
<div><br>
</div>
<div>Regards,</div>
<div>Luiz &nbsp;</div>
<div><br>
</div>
<span id="OLK_SRC_BODY_SECTION">
<div style="border-width: 1pt medium medium; border-style: solid none none; border-color: rgb(181, 196, 223) currentColor currentColor; padding: 3pt 0in 0in; text-align: left; color: black; font-family: Calibri; font-size: 11pt;">
<span style="font-weight: bold;">From: </span>Justin Richer &lt;<a href="mailto:jricher@mit.edu">jricher@mit.edu</a>&gt;<br>
<span style="font-weight: bold;">Date: </span>Thursday, July 30, 2015 at 5:08 PM<br>
<span style="font-weight: bold;">To: </span>Luiz Omori &lt;<a href="mailto:luiz.omori@dm.duke.edu"></a><a class="moz-txt-link-abbreviated" href="mailto:luiz.omori@dm.duke.edu">luiz.omori@dm.duke.edu</a>&gt;<br>
<span style="font-weight: bold;">Cc: </span>&quot;<a href="mailto:mitreid-connect@mit.edu"></a><a class="moz-txt-link-abbreviated" href="mailto:mitreid-connect@mit.edu">mitreid-connect@mit.edu</a>&quot; &lt;<a href="mailto:mitreid-connect@mit.edu">mitreid-connect@mit.edu</a>&gt;<br>
<span style="font-weight: bold;">Subject: </span>Re: [mitreid-connect] JSON Web Token (JWT) Profile for OAuth 2.0 Client Authentication and Authorization Grants<br>
</div>
<div><br>
</div>
<div>
<div style="-ms-word-wrap: break-word;">You don’t need to use a structure auth code in that case, since the clients aren’t generating it it can be an opaque random value.&nbsp;
<div><br>
</div>
<div><b>However</b>: in that case, your clients aren’t using the strongly recommended ‘state’ field and are susceptible to cross-site scripting attacks and session fixation attacks. Much better to use something like the OpenID Connect “third party login” function
 which starts the OAuth process from the client side. You basically go to a URL on the client app that says which issuer to start the process with.
<div><br>
</div>
<div>&nbsp;— Justin</div>
<div><br>
<div>
<div>
<blockquote type="cite">
<div>On Jul 30, 2015, at 4:14 PM, Luiz Omori &lt;<a href="mailto:luiz.omori@duke.edu">luiz.omori@duke.edu</a>&gt; wrote:</div>
<br class="Apple-interchange-newline">
<div>
<div style="font-family: Calibri,sans-serif; font-size: 14px; -ms-word-wrap: break-word;">
<div>They are being launched straight through the redirect_url. Basically they think that they got an authorization_code and will exchange it by an access_token. I agree, we will have to re-think this scenario as it’s getting too “deviant”.</div>
<div><br>
</div>
<div>Regards,</div>
<div>Luiz</div>
<div><br>
</div>
<span id="OLK_SRC_BODY_SECTION">
<div style="border-width: 1pt medium medium; border-style: solid none none; padding: 3pt 0in 0in; text-align: left; font-family: Calibri; font-size: 11pt; border-top-color: rgb(181, 196, 223);">
<span style="font-weight: bold;">From: </span>Justin Richer &lt;<a href="mailto:jricher@mit.edu"></a><a class="moz-txt-link-abbreviated" href="mailto:jricher@mit.edu">jricher@mit.edu</a>&gt;<br>
<span style="font-weight: bold;">Date: </span>Thursday, July 30, 2015 at 4:04 PM<br>
<span style="font-weight: bold;">To: </span>Luiz Omori &lt;<a href="mailto:luiz.omori@dm.duke.edu"></a><a class="moz-txt-link-abbreviated" href="mailto:luiz.omori@dm.duke.edu">luiz.omori@dm.duke.edu</a>&gt;<br>
<span style="font-weight: bold;">Cc: </span>&quot;<a href="mailto:mitreid-connect@mit.edu">mitreid-connect@mit.edu</a>&quot; &lt;<a href="mailto:mitreid-connect@mit.edu">mitreid-connect@mit.edu</a>&gt;<br>
<span style="font-weight: bold;">Subject: </span>Re: [mitreid-connect] JSON Web Token (JWT) Profile for OAuth 2.0 Client Authentication and Authorization Grants<br>
</div>
<div><br>
</div>
<div>
<div style="-ms-word-wrap: break-word;">If they’re doing grant_type=code, then they’re not doing the JWT Assertion grant type. It sounds to me like you’re possibly conflating the two types. You can have different clients doing different grant types, so I don’t
 see what the issue would be implementing the new type. What kind of clients do you have that think they’re doing the code flow but need the assertions flow?
<div><br>
</div>
<div>&nbsp;— Justin</div>
<div><br>
<div>
<blockquote type="cite">
<div>On Jul 30, 2015, at 4:00 PM, Luiz Omori &lt;<a href="mailto:luiz.omori@duke.edu"></a><a class="moz-txt-link-abbreviated" href="mailto:luiz.omori@duke.edu">luiz.omori@duke.edu</a>&gt; wrote:</div>
<br class="Apple-interchange-newline">
<div>
<div style="font-family: Calibri,sans-serif; font-size: 14px; -ms-word-wrap: break-word;">
<div>Thanks. A problem for us to implement another flow is that some external clients are doing grant_type=code for this scenario.</div>
<div><br>
</div>
<div>Regards,</div>
<div>Luiz&nbsp;</div>
<div><br>
</div>
<span id="OLK_SRC_BODY_SECTION">
<div style="border-width: 1pt medium medium; border-style: solid none none; padding: 3pt 0in 0in; text-align: left; font-family: Calibri; font-size: 11pt; border-top-color: rgb(181, 196, 223);">
<span style="font-weight: bold;">From: </span>Justin Richer &lt;<a href="mailto:jricher@mit.edu"></a><a class="moz-txt-link-abbreviated" href="mailto:jricher@mit.edu">jricher@mit.edu</a>&gt;<br>
<span style="font-weight: bold;">Date: </span>Thursday, July 30, 2015 at 3:50 PM<br>
<span style="font-weight: bold;">To: </span>Luiz Omori &lt;<a href="mailto:luiz.omori@dm.duke.edu"></a><a class="moz-txt-link-abbreviated" href="mailto:luiz.omori@dm.duke.edu">luiz.omori@dm.duke.edu</a>&gt;, &quot;<a href="mailto:mitreid-connect@mit.edu">mitreid-connect@mit.edu</a>&quot;
 &lt;<a href="mailto:mitreid-connect@mit.edu"></a><a class="moz-txt-link-abbreviated" href="mailto:mitreid-connect@mit.edu">mitreid-connect@mit.edu</a>&gt;<br>
<span style="font-weight: bold;">Subject: </span>Re: [mitreid-connect] JSON Web Token (JWT) Profile for OAuth 2.0 Client Authentication and Authorization Grants<br>
</div>
<div><br>
</div>
<div>
<div bgcolor="#FFFFFF">We do have an issue to support this grant type, but no immediate plans:<br>
<br>
<a class="moz-txt-link-freetext" href="https://github.com/mitreid-connect/OpenID-Connect-Java-Spring-Server/issues/616"></a><a class="moz-txt-link-freetext" href="https://github.com/mitreid-connect/OpenID-Connect-Java-Spring-Server/issues/616">https://github.com/mitreid-connect/OpenID-Connect-Java-Spring-Server/issues/616</a><br>
<a class="moz-txt-link-freetext" href="https://github.com/mitreid-connect/OpenID-Connect-Java-Spring-Server/issues/411"></a><a class="moz-txt-link-freetext" href="https://github.com/mitreid-connect/OpenID-Connect-Java-Spring-Server/issues/411">https://github.com/mitreid-connect/OpenID-Connect-Java-Spring-Server/issues/411</a><br>
<br>
The correct way to implement this is not to coopt the Authorization Code flow but rather to implement a new handler for it specifically. What you're doing right now is very off-spec, and I wouldn't recommend it. We've got the hooks in place for supporting the
 assertion processing (see the above issues) but we don't yet have all the processing to do it.<br>
<br>
We'd be happy to take a pull request to add this functionality, assuming that it didn't break any of the other grant types.<br>
<br>
&nbsp;-- Justin<br>
<br>
<div class="moz-cite-prefix">On 7/30/2015 3:46 PM, Luiz Omori wrote:<br>
</div>
<blockquote type="cite">
<div style="font-family: Calibri,sans-serif; font-size: 14px;">Hi,</div>
<div style="font-family: Calibri,sans-serif; font-size: 14px;"><br>
</div>
<div style="widows: 1;"><font face="Calibri,sans-serif">We have an use case for exchanging a JWT by an access_token, exactly how is described by JSON Web Token (JWT) Profile for OAuth 2.0 Client Authentication and Authorization Grants (</font><a class="moz-txt-link-freetext" href="http://tools.ietf.org/html/rfc7523"></a><a class="moz-txt-link-freetext" href="http://tools.ietf.org/html/rfc7523">http://tools.ietf.org/html/rfc7523</a><font face="Calibri,sans-serif">).
 Basically SSO for us. We did some prototyping replacing the defaultOAuth2AuthorizationCode by a class that extends it and also recognizes trusted JWTs (consumerAuthorizationCode). The parameters necessary to create an OAuthAuthentication object are coming
 from from the trusted JWT and application registration DB. This appears to be working as expected, the only thing is that the grant_type has to be “code” instead of&nbsp;</font><span style="font-family: Calibri,sans-serif; widows: 1;">&quot;urn:ietf:params:oauth:grant-</span><span style="widows: 1;"><font face="Calibri,sans-serif">type:jwt-bearer”
 as defined in the RFC for this flow.&nbsp;</font></span></div>
<div style="widows: 1;"><span style="widows: 1;"><font face="Calibri,sans-serif"><br>
</font></span></div>
<div style="widows: 1;"><span style="widows: 1;"><font face="Calibri,sans-serif">Thoughts? Any plans to support this grant type?</font></span></div>
<div style="font-family: Calibri,sans-serif;"><br>
</div>
<div style="font-family: Calibri,sans-serif;">Regards,</div>
<div style="font-family: Calibri,sans-serif; font-size: 14px;">Luiz</div>
<br>
<fieldset class="mimeAttachmentHeader"></fieldset> <br>
<pre>_______________________________________________
mitreid-connect mailing list
<a class="moz-txt-link-abbreviated" href="mailto:mitreid-connect@mit.edu">mitreid-connect@mit.edu</a><a class="moz-txt-link-freetext" href="http://mailman.mit.edu/mailman/listinfo/mitreid-connect">http://mailman.mit.edu/mailman/listinfo/mitreid-connect</a></pre>
</blockquote>
<br>
</div>
</div>
</span></div>
</div>
</blockquote>
</div>
<br>
</div>
</div>
</div>
</span></div>
</div>
</blockquote>
</div>
<br>
</div>
</div>
</div>
</div>
</div>
</span></blockquote>
<br>
</div>
</div>
</div>
</body>
</html>