<meta charset="utf-8"><span class="Apple-style-span" style="border-collapse: collapse; color: rgb(51, 51, 51); font-family: arial, sans-serif; font-size: 13px; ">Dear Connectors: <div><br></div><div><div>I went to "Identity Conference #9" held at mixi in Tokyo Friday. </div>
<div>The event attracted about 70 (mostly) developers. </div><div><br></div><div>One of the session was talking about OpenID Connect. (I did not plan it, by the way. It was voluntarily done.) </div><div>I was amazed by the fact that the speaker was using the Thursday's version of the spec to explain it. </div>
<div><br></div><div>Several Findings: </div><div><br></div><div>1. We should make sure to place HTTP Redirect Binding as the Center Piece. </div><div>   This actually is the confusion that even Breno was falling into. He was thinking that Core was something to be implemented. </div>
<div>   It is not. It is the HTTP Redirect Binding that the developers should read. We may want to rename it to something more </div><div>   attractive and feel as the main spec. (Perhaps rename core as "Messages" and let the HTTP Binding assume the name </div>
<div>   "Core" etc.?) </div><div><br></div><div>2. Short names are unpopular. </div><div>    Perhaps because it was mainly the web falks at the conference, but the short names like "mxa" are extremely unpopular. </div>
<div>    They were saying that they were not intuitive, ugly, etc. and it will increase the support cost for the IdP. </div><div>    This is consistent with Facebook's feedback. It's kind of too late in the game but we may want to do something to </div>
<div>    change that perception at least. (My 2c: use long_name instead.) </div><div>    </div><div>Wrt 2. above, I have done some analysis on the impact if we change the short names to long_names. </div></div><div><br></div>
<div><meta charset="utf-8"><div>JWT and OpenID Connect claims, though have some overlaps, serves two distinct purposes. </div><div>While JWT is to serialize JSON into a string with smallest possible overhead (hence short names), </div>
<div>OpenID Connect claims are standardized claims for JSON, so the length tends to be less of an issue.</div><div><br></div><div>If short names have value, then it probably would be on some feature phones with limited URL length. </div>
<div>Let us see the impact of the short and long names on feature phones. </div><div><br></div><div>First of all, let us see which flow feature phones are likely to use: </div><div>Since most feature phones do not have Javascript, it is unlikely that they are going to use UserAgent flow. </div>
<div>Thus what we are left with are "code" flow. </div><div><br></div><div>To see the impact of the longer claim names, we need to examine both request and response as well as the use of the response subsequently. </div>
<div><br></div><div>(1) Request</div><div><br></div><div>To send the request parameters, it has two choices. a) Request Parameters b) Request File URL. </div><div><br></div><div>Since feature phones can always use b), request object size seems to be less of an issue. </div>
<div><br></div><div>If one wants a), we have to consider the following: </div><div><br></div><div>(i) OAuth Parameters: Example in OAuth draft 16 has 116 bytes, so we are left with 396 bytes. </div><div>(ii) RSA 2048 Sig string is 343 bytes. HMAC-SHA256 is 44 bytes, as I remember. </div>
<div>     So, 53 bytes for RSA left, and 352 bytes for HMAC. At this point, we have to give up RSA. </div><div>(iii) Header length for JWT Example is 41 chars. So, for HS256, we have 311 chars. </div><div>(iv) The example request after adding "fmt":"sig", is 338 bytes, so it does not fit anyways. </div>
<div>      On the other hand, if we delete all the "clm" keys in the userinfo claim, </div><div>      we will get 193 and 293 bytes respectively. Either does fit. </div><div><br></div><div>Thus, longer name seem to be ok. </div>
<div> </div><div><br></div><div>(2) Response</div><div><br></div><div>Response that goes through browser only contains "code" and "state", so long name should not matter. </div><div><br></div><div>(3) Subsequent Use</div>
<div><br></div><div>If id_token is handed to the browser as "cookie" for session management, </div><div>we should consider the length limitation. </div><div>However, many of the feature phones actually do not even support cookies. </div>
<div>(NTT docomo phones till recently did not support cookies.) </div><div>Besides, id_token is using long names to start with. </div><div><br></div><div>Thus, long_names seem to be ok. </div><div class="im" style="color: rgb(80, 0, 80); ">
</div></div><div><br></div></span><div>Then, what would be the long names would be? </div><div><br></div><div>Here are my suggestions: </div><div><br></div><div><meta charset="utf-8"><span class="Apple-style-span" style="border-collapse: collapse; font-family: arial, sans-serif; "><p class="MsoNormal" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">
inf -> userinfo<u></u><u></u></p><p class="MsoNormal" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">idt -> id_token<u></u><u></u></p><p class="MsoNormal" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">
clm -> claims<u></u><u></u></p><p class="MsoNormal" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">fmt -> format<u></u><u></u></p><p class="MsoNormal" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">
mxa -> max_age<u></u><u></u></p><p class="MsoNormal" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">eaa -> iso29115<u></u><u></u></p><p class="MsoNormal" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">
nor -> unsigned<u></u><u></u></p><p class="MsoNormal" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">sig -> signed<u></u><u></u></p><p class="MsoNormal" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">
enc -> encrypted<u></u><u></u></p><p class="MsoNormal" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">aat -> auth_time</p><p class="MsoNormal" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">
<meta charset="utf-8"></p><div>loc -> locale</div><div>opt -> optional</div><div><br></div><div>What would you think? </div><div><br></div><div>Perhaps this can be one of the topic of today's call. </div><p></p>
</span></div><div><br></div>-- <br>Nat Sakimura (=nat)<br><a href="http://www.sakimura.org/en/">http://www.sakimura.org/en/</a><br><a href="http://twitter.com/_nat_en">http://twitter.com/_nat_en</a><br>