<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;DUcMQHw_eip7ImA9WhVUFE0.&quot;"><id>tag:blogger.com,1999:blog-2234555082540809604</id><updated>2012-05-19T01:58:01.242-04:00</updated><category term="openid" /><category term="JWT" /><category term="oath" /><category term="dns" /><category term="FICAM" /><category term="LOA" /><category term="identity" /><category term="security" /><category term="openid connect" /><category term="ebay" /><category term="uma" /><category term="domain names" /><category term="OpenID oAuth identity" /><category term="ietf" /><category term="oauth" /><category term="jose" /><category term="oidf" /><category term="eic" /><category term="SAML" /><category term="godaddy" /><title>Thread Safe</title><subtitle type="html">Posts about Identity and Federated Identity issues.</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://www.thread-safe.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://www.thread-safe.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/2234555082540809604/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>John Bradley</name><uri>https://profiles.google.com/113758384073095653585</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-1sJGlVoHT68/AAAAAAAAAAI/AAAAAAAAABY/rJ6sSi8Ds2w/s512-c/photo.jpg" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>35</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/Thread-Safe" /><feedburner:info uri="thread-safe" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><geo:lat>49.2795665321</geo:lat><geo:long>-123.125601348</geo:long><logo>http://feeds.feedburner.com/~fc/Thread-Safe?bg=99CCFF&amp;amp;fg=444444&amp;amp;anim=1" height="26" width="88" style="border:0" alt=""</logo><entry gd:etag="W/&quot;D0QCR34_cSp7ImA9WhVUEU0.&quot;"><id>tag:blogger.com,1999:blog-2234555082540809604.post-791958420850221105</id><published>2012-05-15T14:09:00.001-04:00</published><updated>2012-05-15T14:09:26.049-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-05-15T14:09:26.049-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="openid connect" /><category scheme="http://www.blogger.com/atom/ns#" term="oauth" /><category scheme="http://www.blogger.com/atom/ns#" term="JWT" /><title>IETF OAuth WG rechartered</title><content type="html">&lt;br /&gt;
&lt;div class="p1"&gt;
The OAuth Working Group at the IETF has been&amp;nbsp;&lt;a href="http://datatracker.ietf.org/wg/oauth/charter/"&gt;rechartered&lt;/a&gt;.&lt;/div&gt;
&lt;div class="p1"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="p1"&gt;
These are the new Goals and Milestones&lt;/div&gt;
&lt;div class="p2"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="p1"&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Done &amp;nbsp;Submit 'OAuth 2.0 Threat Model and Security Considerations' as aworking group item&lt;/li&gt;
&lt;li&gt;Done &amp;nbsp;Submit 'HTTP Authentication: MAC Authentication' as a working&amp;nbsp;group item&lt;/li&gt;
&lt;li&gt;Done &amp;nbsp;Submit 'The OAuth 2.0 Protocol: Bearer Tokens' to the IESG for&amp;nbsp;consideration as a Proposed Standard&lt;/li&gt;
&lt;li&gt;Done &amp;nbsp;Submit 'The OAuth 2.0 Authorization Protocol' to the IESG for&amp;nbsp;consideration as a Proposed Standard&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="p1"&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;May &amp;nbsp;2012 &amp;nbsp;Submit 'SAML 2.0 Bearer Assertion Profiles for OAuth 2.0' to&amp;nbsp;the IESG for consideration as a Proposed Standard&lt;/li&gt;
&lt;li&gt;May &amp;nbsp;2012 &amp;nbsp;Submit 'OAuth 2.0 Assertion Profile' to the IESG for&amp;nbsp;consideration as a Proposed Standard&lt;/li&gt;
&lt;li&gt;May &amp;nbsp;2012 &amp;nbsp;Submit 'An IETF URN Sub-Namespace for OAuth' to the IESG for&amp;nbsp;consideration as a Proposed Standard&lt;/li&gt;
&lt;li&gt;May &amp;nbsp;2012 &amp;nbsp;Submit 'OAuth 2.0 Threat Model and Security Considerations'&amp;nbsp;to the IESG for consideration as an Informational RFC&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="p1"&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Aug. 2012 &amp;nbsp;Submit 'Token Revocation' to the IESG for consideration as a&amp;nbsp;Proposed Standard&amp;nbsp;[Starting point for the work will be&amp;nbsp;&lt;a href="http://datatracker.ietf.org/doc/draft-lodderstedt-oauth-revocation/%5D"&gt;http://datatracker.ietf.org/doc/draft-lodderstedt-oauth-revocation/]&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="p1"&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Nov. 2012 &amp;nbsp;Submit 'JSON Web Token (JWT)' to the IESG for consideration&amp;nbsp;as a Proposed Standard&amp;nbsp;[Starting point for the work will be&amp;nbsp;&lt;a href="http://tools.ietf.org/html/draft-jones-json-web-token%5D"&gt;http://tools.ietf.org/html/draft-jones-json-web-token]&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="p1"&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Nov. 2012 &amp;nbsp;Submit 'JSON Web Token (JWT) Bearer Token Profiles for OAuth&amp;nbsp;2.0' to the IESG for consideration as a Proposed Standard&amp;nbsp;[Starting point for the work will be&amp;nbsp;&lt;a href="http://tools.ietf.org/html/draft-jones-oauth-jwt-bearer%5D"&gt;http://tools.ietf.org/html/draft-jones-oauth-jwt-bearer]&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="p1"&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Dec. 2012 &amp;nbsp;Submit 'HTTP Authentication: MAC Authentication' to the IESG&amp;nbsp;for consideration as a Proposed Standard&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="p1"&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Dec. 2012 &amp;nbsp;Submit 'OAuth Use Cases' to the IESG for consideration as an&amp;nbsp;Informational RFC&amp;nbsp;[Starting point for the work will be&amp;nbsp;&lt;a href="http://tools.ietf.org/html/draft-zeltsan-oauth-use-cases%5D"&gt;http://tools.ietf.org/html/draft-zeltsan-oauth-use-cases]&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="p1"&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Jul. 2013 &amp;nbsp;Submit 'OAuth Dynamic Client Registration Protocol' to the&amp;nbsp;IESG for consideration as a Proposed Standard&amp;nbsp;[Starting point for the work will be&amp;nbsp;&lt;a href="http://tools.ietf.org/html/draft-hardjono-oauth-dynreg%5D"&gt;http://tools.ietf.org/html/draft-hardjono-oauth-dynreg]&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
John B.&lt;/div&gt;
&lt;a href="https://twitter.com/#!/ve7jtb" style="font-family: Calibri, sans-serif; font-size: 15px;"&gt;@ve7jtb&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2234555082540809604-791958420850221105?l=www.thread-safe.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Thread-Safe?a=eng2phuWz44:b6T561jEn-g:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Thread-Safe?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Thread-Safe?a=eng2phuWz44:b6T561jEn-g:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Thread-Safe?i=eng2phuWz44:b6T561jEn-g:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Thread-Safe?a=eng2phuWz44:b6T561jEn-g:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Thread-Safe?i=eng2phuWz44:b6T561jEn-g:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Thread-Safe?a=eng2phuWz44:b6T561jEn-g:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Thread-Safe?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.thread-safe.com/feeds/791958420850221105/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.thread-safe.com/2012/05/ietf-oauth-wg-rechartered.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2234555082540809604/posts/default/791958420850221105?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2234555082540809604/posts/default/791958420850221105?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Thread-Safe/~3/eng2phuWz44/ietf-oauth-wg-rechartered.html" title="IETF OAuth WG rechartered" /><author><name>John Bradley</name><uri>https://profiles.google.com/113758384073095653585</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-1sJGlVoHT68/AAAAAAAAAAI/AAAAAAAAABY/rJ6sSi8Ds2w/s512-c/photo.jpg" /></author><thr:total>0</thr:total><georss:featurename>Isla de Maipo, Santiago Metropolitan Region, Chile</georss:featurename><georss:point>-33.746456 -70.9</georss:point><georss:box>-33.8520825 -71.0579285 -33.6408295 -70.74207150000001</georss:box><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-sa/2.0/" /><feedburner:origLink>http://www.thread-safe.com/2012/05/ietf-oauth-wg-rechartered.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUECR3o5eSp7ImA9WhVVGEo.&quot;"><id>tag:blogger.com,1999:blog-2234555082540809604.post-7193285452610690980</id><published>2012-05-12T21:47:00.001-04:00</published><updated>2012-05-12T21:47:46.421-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-05-12T21:47:46.421-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="openid" /><category scheme="http://www.blogger.com/atom/ns#" term="oath" /><category scheme="http://www.blogger.com/atom/ns#" term="openid connect" /><title>JOSE v2 specs now available for your enjoyment</title><content type="html">&lt;br /&gt;
&lt;div class="MsoNormal" style="font-family: Calibri, sans-serif; font-size: 11pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;
Mike Jones and friends have published updated versions of the IETF JOSE specs.&lt;/div&gt;
&lt;div class="MsoNormal" style="font-family: Calibri, sans-serif; font-size: 11pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="font-family: Calibri, sans-serif; font-size: 11pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;
Yes my affiliation on them is now &lt;a href="http://pingidentity.com/"&gt;Ping Identity&lt;/a&gt;. &amp;nbsp;The change will not impact my involvement with JOSE, openID Connect, SAML &amp;nbsp;or other specs that I hope to work on.&lt;/div&gt;
&lt;div class="MsoNormal" style="font-family: Calibri, sans-serif; font-size: 11pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="font-family: Calibri, sans-serif; font-size: 11pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;
New -02 versions of the&amp;nbsp;&lt;a href="http://datatracker.ietf.org/wg/jose/" style="color: blue; text-decoration: underline;"&gt;JSON Object Signing and Encryption (JOSE)&lt;/a&gt;&amp;nbsp;specifications are now available that incorporate working decisions made since the previous versions, including decisions made at IETF 83 in Paris and in follow-up discussions on the working group list. &amp;nbsp;The drafts contain numerous clarifications, refinements, and editorial improvements.&amp;nbsp; They are:&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoListParagraph" style="font-family: Calibri, sans-serif; font-size: 11pt; margin-bottom: 0.0001pt; margin-left: 0.5in; margin-right: 0in; margin-top: 0in; text-indent: -0.25in;"&gt;
&lt;span style="font-family: Symbol;"&gt;·&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;JSON Web Signature (JWS) – Digital signature/HMAC specification&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoListParagraph" style="font-family: Calibri, sans-serif; font-size: 11pt; margin-bottom: 0.0001pt; margin-left: 0.5in; margin-right: 0in; margin-top: 0in; text-indent: -0.25in;"&gt;
&lt;span style="font-family: Symbol;"&gt;·&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;JSON Web Encryption (JWE) – Encryption specification&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoListParagraph" style="font-family: Calibri, sans-serif; font-size: 11pt; margin-bottom: 0.0001pt; margin-left: 0.5in; margin-right: 0in; margin-top: 0in; text-indent: -0.25in;"&gt;
&lt;span style="font-family: Symbol;"&gt;·&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;JSON Web Key (JWK) – Public key specification&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoListParagraph" style="font-family: Calibri, sans-serif; font-size: 11pt; margin-bottom: 0.0001pt; margin-left: 0.5in; margin-right: 0in; margin-top: 0in; text-indent: -0.25in;"&gt;
&lt;span style="font-family: Symbol;"&gt;·&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;JSON Web Algorithms (JWA) – Algorithms and identifiers specification&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="font-family: Calibri, sans-serif; font-size: 11pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="font-family: Calibri, sans-serif; font-size: 11pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;
These specifications are available at:&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoListParagraph" style="font-family: Calibri, sans-serif; font-size: 11pt; margin-bottom: 0.0001pt; margin-left: 0.5in; margin-right: 0in; margin-top: 0in; text-indent: -0.25in;"&gt;
&lt;span style="font-family: Symbol;"&gt;·&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://tools.ietf.org/html/draft-ietf-jose-json-web-signature-02" style="color: blue; text-decoration: underline;"&gt;http://tools.ietf.org/html/draft-ietf-jose-json-web-signature-02&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoListParagraph" style="font-family: Calibri, sans-serif; font-size: 11pt; margin-bottom: 0.0001pt; margin-left: 0.5in; margin-right: 0in; margin-top: 0in; text-indent: -0.25in;"&gt;
&lt;span style="font-family: Symbol;"&gt;·&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://tools.ietf.org/html/draft-ietf-jose-json-web-encryption-02" style="color: blue; text-decoration: underline;"&gt;http://tools.ietf.org/html/draft-ietf-jose-json-web-encryption-02&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoListParagraph" style="font-family: Calibri, sans-serif; font-size: 11pt; margin-bottom: 0.0001pt; margin-left: 0.5in; margin-right: 0in; margin-top: 0in; text-indent: -0.25in;"&gt;
&lt;span style="font-family: Symbol;"&gt;·&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://tools.ietf.org/html/draft-ietf-jose-json-web-key-02" style="color: blue; text-decoration: underline;"&gt;http://tools.ietf.org/html/draft-ietf-jose-json-web-key-02&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoListParagraph" style="font-family: Calibri, sans-serif; font-size: 11pt; margin-bottom: 0.0001pt; margin-left: 0.5in; margin-right: 0in; margin-top: 0in; text-indent: -0.25in;"&gt;
&lt;span style="font-family: Symbol;"&gt;·&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://tools.ietf.org/html/draft-ietf-jose-json-web-algorithms-02" style="color: blue; text-decoration: underline;"&gt;http://tools.ietf.org/html/draft-ietf-jose-json-web-algorithms-02&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="font-family: Calibri, sans-serif; font-size: 11pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="font-family: Calibri, sans-serif; font-size: 11pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;
The document history entries (also in the specifications) are as follows:&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="font-family: Calibri, sans-serif; font-size: 11pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="font-family: Calibri, sans-serif; font-size: 11pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;
&lt;a href="http://tools.ietf.org/html/draft-ietf-jose-json-web-signature-02" style="color: blue; text-decoration: underline;"&gt;http://tools.ietf.org/html/draft-ietf-jose-json-web-signature-02&lt;/a&gt;:&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;ul style="font-family: Helvetica; margin-bottom: 0in; margin-top: 0in;" type="disc"&gt;
&lt;li class="MsoNormal" style="color: black; font-family: Calibri, sans-serif; font-size: 11pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;&lt;span lang="EN" style="font-family: Verdana, sans-serif;"&gt;Clarified that it is an error when a&amp;nbsp;&lt;/span&gt;&lt;span lang="EN" style="color: #003366; font-family: 'Courier New';"&gt;kid&lt;/span&gt;&lt;span lang="EN" style="font-family: Verdana, sans-serif;"&gt;&amp;nbsp;value is included and no matching key is found.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="MsoNormal" style="color: black; font-family: Calibri, sans-serif; font-size: 11pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;&lt;span lang="EN" style="font-family: Verdana, sans-serif;"&gt;Removed assumption that&amp;nbsp;&lt;/span&gt;&lt;span lang="EN" style="color: #003366; font-family: 'Courier New';"&gt;kid&lt;/span&gt;&lt;span lang="EN" style="font-family: Verdana, sans-serif;"&gt;&amp;nbsp;(key ID) can only refer to an asymmetric key.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="MsoNormal" style="color: black; font-family: Calibri, sans-serif; font-size: 11pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;&lt;span lang="EN" style="font-family: Verdana, sans-serif;"&gt;Clarified that JWSs with duplicate Header Parameter Names MUST be rejected.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="MsoNormal" style="color: black; font-family: Calibri, sans-serif; font-size: 11pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;&lt;span lang="EN" style="font-family: Verdana, sans-serif;"&gt;Clarified the relationship between&amp;nbsp;&lt;/span&gt;&lt;span lang="EN" style="color: #003366; font-family: 'Courier New';"&gt;typ&lt;/span&gt;&lt;span lang="EN" style="font-family: Verdana, sans-serif;"&gt;&amp;nbsp;header parameter values and MIME types.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="MsoNormal" style="color: black; font-family: Calibri, sans-serif; font-size: 11pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;&lt;span lang="EN" style="font-family: Verdana, sans-serif;"&gt;Registered application/jws MIME type and "JWS" typ header parameter value.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="MsoNormal" style="color: black; font-family: Calibri, sans-serif; font-size: 11pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;&lt;span lang="EN" style="font-family: Verdana, sans-serif;"&gt;Simplified JWK terminology to get replace the "JWK Key Object" and "JWK Container Object" terms with simply "JSON Web Key (JWK)" and "JSON Web Key Set (JWK Set)" and to eliminate potential confusion between single keys and sets of keys. As part of this change, the header parameter name for a public key value was changed from&amp;nbsp;&lt;/span&gt;&lt;span lang="EN" style="color: #003366; font-family: 'Courier New';"&gt;jpk&lt;/span&gt;&lt;span lang="EN" style="font-family: Verdana, sans-serif;"&gt;&amp;nbsp;(JSON Public Key) to&amp;nbsp;&lt;/span&gt;&lt;span lang="EN" style="color: #003366; font-family: 'Courier New';"&gt;jwk&lt;/span&gt;&lt;span lang="EN" style="font-family: Verdana, sans-serif;"&gt;&amp;nbsp;(JSON Web Key).&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="MsoNormal" style="color: black; font-family: Calibri, sans-serif; font-size: 11pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;&lt;span lang="EN" style="font-family: Verdana, sans-serif;"&gt;Added suggestion on defining additional header parameters such as&amp;nbsp;&lt;/span&gt;&lt;span lang="EN" style="color: #003366; font-family: 'Courier New';"&gt;x5t#S256&lt;/span&gt;&lt;span lang="EN" style="font-family: Verdana, sans-serif;"&gt;&amp;nbsp;in the future for certificate thumbprints using hash algorithms other than SHA-1.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="MsoNormal" style="color: black; font-family: Calibri, sans-serif; font-size: 11pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;&lt;span lang="EN" style="font-family: Verdana, sans-serif;"&gt;Specify RFC 2818 server identity validation, rather than RFC 6125 (paralleling the same decision in the OAuth specs).&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="MsoNormal" style="color: black; font-family: Calibri, sans-serif; font-size: 11pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;&lt;span lang="EN" style="font-family: Verdana, sans-serif;"&gt;Generalized language to refer to Message Authentication Codes (MACs) rather than Hash-based Message Authentication Codes (HMACs) unless in a context specific to HMAC algorithms.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="MsoNormal" style="color: black; font-family: Calibri, sans-serif; font-size: 11pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;&lt;span lang="EN" style="font-family: Verdana, sans-serif;"&gt;Reformatted to give each header parameter its own section heading.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="MsoNormal" style="font-family: Calibri, sans-serif; font-size: 11pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="font-family: Calibri, sans-serif; font-size: 11pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;
&lt;a href="http://tools.ietf.org/html/draft-ietf-jose-json-web-encryption-02" style="color: blue; text-decoration: underline;"&gt;http://tools.ietf.org/html/draft-ietf-jose-json-web-encryption-02&lt;/a&gt;:&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;ul style="font-family: Helvetica; margin-bottom: 0in; margin-top: 0in;" type="disc"&gt;
&lt;li class="MsoNormal" style="color: black; font-family: Calibri, sans-serif; font-size: 11pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;&lt;span lang="EN" style="font-family: Verdana, sans-serif;"&gt;When using AEAD algorithms (such as AES GCM), use the "additional authenticated data" parameter to provide integrity for the header, encrypted key, and ciphertext and use the resulting "authentication tag" value as the JWE Integrity Value.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="MsoNormal" style="color: black; font-family: Calibri, sans-serif; font-size: 11pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;&lt;span lang="EN" style="font-family: Verdana, sans-serif;"&gt;Defined KDF output key sizes.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="MsoNormal" style="color: black; font-family: Calibri, sans-serif; font-size: 11pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;&lt;span lang="EN" style="font-family: Verdana, sans-serif;"&gt;Generalized text to allow key agreement to be employed as an alternative to key wrapping or key encryption.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="MsoNormal" style="color: black; font-family: Calibri, sans-serif; font-size: 11pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;&lt;span lang="EN" style="font-family: Verdana, sans-serif;"&gt;Changed compression algorithm from gzip to DEFLATE.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="MsoNormal" style="color: black; font-family: Calibri, sans-serif; font-size: 11pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;&lt;span lang="EN" style="font-family: Verdana, sans-serif;"&gt;Clarified that it is an error when a&amp;nbsp;&lt;/span&gt;&lt;span lang="EN" style="color: #003366; font-family: 'Courier New';"&gt;kid&lt;/span&gt;&lt;span lang="EN" style="font-family: Verdana, sans-serif;"&gt;&amp;nbsp;value is included and no matching key is found.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="MsoNormal" style="color: black; font-family: Calibri, sans-serif; font-size: 11pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;&lt;span lang="EN" style="font-family: Verdana, sans-serif;"&gt;Clarified that JWEs with duplicate Header Parameter Names MUST be rejected.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="MsoNormal" style="color: black; font-family: Calibri, sans-serif; font-size: 11pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;&lt;span lang="EN" style="font-family: Verdana, sans-serif;"&gt;Clarified the relationship between&amp;nbsp;&lt;/span&gt;&lt;span lang="EN" style="color: #003366; font-family: 'Courier New';"&gt;typ&lt;/span&gt;&lt;span lang="EN" style="font-family: Verdana, sans-serif;"&gt;&amp;nbsp;header parameter values and MIME types.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="MsoNormal" style="color: black; font-family: Calibri, sans-serif; font-size: 11pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;&lt;span lang="EN" style="font-family: Verdana, sans-serif;"&gt;Registered application/jwe MIME type and "JWE" typ header parameter value.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="MsoNormal" style="color: black; font-family: Calibri, sans-serif; font-size: 11pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;&lt;span lang="EN" style="font-family: Verdana, sans-serif;"&gt;Simplified JWK terminology to get replace the "JWK Key Object" and "JWK Container Object" terms with simply "JSON Web Key (JWK)" and "JSON Web Key Set (JWK Set)" and to eliminate potential confusion between single keys and sets of keys. As part of this change, the header parameter name for a public key value was changed from&amp;nbsp;&lt;/span&gt;&lt;span lang="EN" style="color: #003366; font-family: 'Courier New';"&gt;jpk&lt;/span&gt;&lt;span lang="EN" style="font-family: Verdana, sans-serif;"&gt;&amp;nbsp;(JSON Public Key) to&amp;nbsp;&lt;/span&gt;&lt;span lang="EN" style="color: #003366; font-family: 'Courier New';"&gt;jwk&lt;/span&gt;&lt;span lang="EN" style="font-family: Verdana, sans-serif;"&gt;&amp;nbsp;(JSON Web Key).&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="MsoNormal" style="color: black; font-family: Calibri, sans-serif; font-size: 11pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;&lt;span lang="EN" style="font-family: Verdana, sans-serif;"&gt;Added suggestion on defining additional header parameters such as&amp;nbsp;&lt;/span&gt;&lt;span lang="EN" style="color: #003366; font-family: 'Courier New';"&gt;x5t#S256&lt;/span&gt;&lt;span lang="EN" style="font-family: Verdana, sans-serif;"&gt;&amp;nbsp;in the future for certificate thumbprints using hash algorithms other than SHA-1.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="MsoNormal" style="color: black; font-family: Calibri, sans-serif; font-size: 11pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;&lt;span lang="EN" style="font-family: Verdana, sans-serif;"&gt;Specify RFC 2818 server identity validation, rather than RFC 6125 (paralleling the same decision in the OAuth specs).&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="MsoNormal" style="color: black; font-family: Calibri, sans-serif; font-size: 11pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;&lt;span lang="EN" style="font-family: Verdana, sans-serif;"&gt;Generalized language to refer to Message Authentication Codes (MACs) rather than Hash-based Message Authentication Codes (HMACs) unless in a context specific to HMAC algorithms.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="MsoNormal" style="color: black; font-family: Calibri, sans-serif; font-size: 11pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;&lt;span lang="EN" style="font-family: Verdana, sans-serif;"&gt;Reformatted to give each header parameter its own section heading.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="MsoNormal" style="font-family: Calibri, sans-serif; font-size: 11pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="font-family: Calibri, sans-serif; font-size: 11pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;
&lt;a href="http://tools.ietf.org/html/draft-ietf-jose-json-web-key-02" style="color: blue; text-decoration: underline;"&gt;http://tools.ietf.org/html/draft-ietf-jose-json-web-key-02&lt;/a&gt;:&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;ul style="font-family: Helvetica; margin-bottom: 0in; margin-top: 0in;" type="disc"&gt;
&lt;li class="MsoNormal" style="color: black; font-family: Calibri, sans-serif; font-size: 11pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;&lt;span lang="EN" style="font-family: Verdana, sans-serif;"&gt;Simplified JWK terminology to get replace the "JWK Key Object" and "JWK Container Object" terms with simply "JSON Web Key (JWK)" and "JSON Web Key Set (JWK Set)" and to eliminate potential confusion between single keys and sets of keys. As part of this change, the top-level member name for a set of keys was changed from&amp;nbsp;&lt;/span&gt;&lt;span lang="EN" style="color: #003366; font-family: 'Courier New';"&gt;jwk&lt;/span&gt;&lt;span lang="EN" style="font-family: Verdana, sans-serif;"&gt;&amp;nbsp;to&amp;nbsp;&lt;/span&gt;&lt;span lang="EN" style="color: #003366; font-family: 'Courier New';"&gt;keys&lt;/span&gt;&lt;span lang="EN" style="font-family: Verdana, sans-serif;"&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="MsoNormal" style="color: black; font-family: Calibri, sans-serif; font-size: 11pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;&lt;span lang="EN" style="font-family: Verdana, sans-serif;"&gt;Clarified that values with duplicate member names MUST be rejected.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="MsoNormal" style="color: black; font-family: Calibri, sans-serif; font-size: 11pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;&lt;span lang="EN" style="font-family: Verdana, sans-serif;"&gt;Established JSON Web Key Set Parameters registry.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="MsoNormal" style="color: black; font-family: Calibri, sans-serif; font-size: 11pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;&lt;span lang="EN" style="font-family: Verdana, sans-serif;"&gt;Explicitly listed non-goals in the introduction.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="MsoNormal" style="color: black; font-family: Calibri, sans-serif; font-size: 11pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;&lt;span lang="EN" style="font-family: Verdana, sans-serif;"&gt;Moved algorithm-specific definitions from JWK to JWA.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="MsoNormal" style="color: black; font-family: Calibri, sans-serif; font-size: 11pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;&lt;span lang="EN" style="font-family: Verdana, sans-serif;"&gt;Reformatted to give each member definition its own section heading.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="MsoNormal" style="font-family: Calibri, sans-serif; font-size: 11pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="font-family: Calibri, sans-serif; font-size: 11pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;
&lt;a href="http://tools.ietf.org/html/draft-ietf-jose-json-web-algorithms-02" style="color: blue; text-decoration: underline;"&gt;http://tools.ietf.org/html/draft-ietf-jose-json-web-algorithms-02&lt;/a&gt;:&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;ul style="font-family: Helvetica; margin-bottom: 0in; margin-top: 0in;" type="disc"&gt;
&lt;li class="MsoNormal" style="color: black; font-family: Calibri, sans-serif; font-size: 11pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;&lt;span lang="EN" style="font-family: Verdana, sans-serif;"&gt;For AES GCM, use the "additional authenticated data" parameter to provide integrity for the header, encrypted key, and ciphertext and use the resulting "authentication tag" value as the JWE Integrity Value.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="MsoNormal" style="color: black; font-family: Calibri, sans-serif; font-size: 11pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;&lt;span lang="EN" style="font-family: Verdana, sans-serif;"&gt;Defined minimum required key sizes for algorithms without specified key sizes.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="MsoNormal" style="color: black; font-family: Calibri, sans-serif; font-size: 11pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;&lt;span lang="EN" style="font-family: Verdana, sans-serif;"&gt;Defined KDF output key sizes.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="MsoNormal" style="color: black; font-family: Calibri, sans-serif; font-size: 11pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;&lt;span lang="EN" style="font-family: Verdana, sans-serif;"&gt;Specified the use of PKCS #5 padding with AES-CBC.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="MsoNormal" style="color: black; font-family: Calibri, sans-serif; font-size: 11pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;&lt;span lang="EN" style="font-family: Verdana, sans-serif;"&gt;Generalized text to allow key agreement to be employed as an alternative to key wrapping or key encryption.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="MsoNormal" style="color: black; font-family: Calibri, sans-serif; font-size: 11pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;&lt;span lang="EN" style="font-family: Verdana, sans-serif;"&gt;Clarified that ECDH-ES is a key agreement algorithm.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="MsoNormal" style="color: black; font-family: Calibri, sans-serif; font-size: 11pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;&lt;span lang="EN" style="font-family: Verdana, sans-serif;"&gt;Required implementation of AES-128-KW and AES-256-KW.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="MsoNormal" style="color: black; font-family: Calibri, sans-serif; font-size: 11pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;&lt;span lang="EN" style="font-family: Verdana, sans-serif;"&gt;Removed the use of&amp;nbsp;&lt;/span&gt;&lt;span lang="EN" style="color: #003366; font-family: 'Courier New';"&gt;A128GCM&lt;/span&gt;&lt;span lang="EN" style="font-family: Verdana, sans-serif;"&gt;&amp;nbsp;and&amp;nbsp;&lt;/span&gt;&lt;span lang="EN" style="color: #003366; font-family: 'Courier New';"&gt;A256GCM&lt;/span&gt;&lt;span lang="EN" style="font-family: Verdana, sans-serif;"&gt;&amp;nbsp;for key wrapping.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="MsoNormal" style="color: black; font-family: Calibri, sans-serif; font-size: 11pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;&lt;span lang="EN" style="font-family: Verdana, sans-serif;"&gt;Removed&amp;nbsp;&lt;/span&gt;&lt;span lang="EN" style="color: #003366; font-family: 'Courier New';"&gt;A512KW&lt;/span&gt;&lt;span lang="EN" style="font-family: Verdana, sans-serif;"&gt;&amp;nbsp;since it turns out that it's not a standard algorithm.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="MsoNormal" style="color: black; font-family: Calibri, sans-serif; font-size: 11pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;&lt;span lang="EN" style="font-family: Verdana, sans-serif;"&gt;Clarified the relationship between&amp;nbsp;&lt;/span&gt;&lt;span lang="EN" style="color: #003366; font-family: 'Courier New';"&gt;typ&lt;/span&gt;&lt;span lang="EN" style="font-family: Verdana, sans-serif;"&gt;&amp;nbsp;header parameter values and MIME types.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="MsoNormal" style="color: black; font-family: Calibri, sans-serif; font-size: 11pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;&lt;span lang="EN" style="font-family: Verdana, sans-serif;"&gt;Generalized language to refer to Message Authentication Codes (MACs) rather than Hash-based Message Authentication Codes (HMACs) unless in a context specific to HMAC algorithms.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="MsoNormal" style="color: black; font-family: Calibri, sans-serif; font-size: 11pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;&lt;span lang="EN" style="font-family: Verdana, sans-serif;"&gt;Established registries: JSON Web Signature and Encryption Header Parameters, JSON Web Signature and Encryption Algorithms, JSON Web Signature and Encryption "typ" Values, JSON Web Key Parameters, and JSON Web Key Algorithm Families.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="MsoNormal" style="color: black; font-family: Calibri, sans-serif; font-size: 11pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;&lt;span lang="EN" style="font-family: Verdana, sans-serif;"&gt;Moved algorithm-specific definitions from JWK to JWA.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="MsoNormal" style="color: black; font-family: Calibri, sans-serif; font-size: 11pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;&lt;span lang="EN" style="font-family: Verdana, sans-serif;"&gt;Reformatted to give each member definition its own section heading.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="MsoNormal" style="font-family: Calibri, sans-serif; font-size: 11pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;
&lt;div style="font-family: Calibri, sans-serif; font-size: 11pt;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="font-family: Calibri, sans-serif; font-size: 11pt;"&gt;
&lt;a href="http://www.blogger.com/goog_935350449"&gt;John B.&lt;/a&gt;&lt;/div&gt;
&lt;a href="https://twitter.com/#!/ve7jtb"&gt;@ve7jtb&lt;/a&gt;&lt;div style="font-family: Calibri, sans-serif; font-size: 11pt;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2234555082540809604-7193285452610690980?l=www.thread-safe.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Thread-Safe?a=5HlczR07IqQ:ao9Q-DjO4EA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Thread-Safe?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Thread-Safe?a=5HlczR07IqQ:ao9Q-DjO4EA:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Thread-Safe?i=5HlczR07IqQ:ao9Q-DjO4EA:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Thread-Safe?a=5HlczR07IqQ:ao9Q-DjO4EA:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Thread-Safe?i=5HlczR07IqQ:ao9Q-DjO4EA:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Thread-Safe?a=5HlczR07IqQ:ao9Q-DjO4EA:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Thread-Safe?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.thread-safe.com/feeds/7193285452610690980/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.thread-safe.com/2012/05/jose-v2-specs-now-available-for-your.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2234555082540809604/posts/default/7193285452610690980?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2234555082540809604/posts/default/7193285452610690980?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Thread-Safe/~3/5HlczR07IqQ/jose-v2-specs-now-available-for-your.html" title="JOSE v2 specs now available for your enjoyment" /><author><name>John Bradley</name><uri>https://profiles.google.com/113758384073095653585</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-1sJGlVoHT68/AAAAAAAAAAI/AAAAAAAAABY/rJ6sSi8Ds2w/s512-c/photo.jpg" /></author><thr:total>0</thr:total><georss:featurename>Isla de Maipo, Santiago Metropolitan Region, Chile</georss:featurename><georss:point>-33.746456 -70.9</georss:point><georss:box>-33.8520825 -71.0579285 -33.6408295 -70.74207150000001</georss:box><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-sa/2.0/" /><feedburner:origLink>http://www.thread-safe.com/2012/05/jose-v2-specs-now-available-for-your.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CU8ARHk-eSp7ImA9WhVXGEo.&quot;"><id>tag:blogger.com,1999:blog-2234555082540809604.post-3751041640032404568</id><published>2012-04-18T20:18:00.000-03:00</published><updated>2012-04-19T19:17:25.751-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-04-19T19:17:25.751-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="OpenID oAuth identity" /><title>OpenID Connect Wins 2012 European Identity and Cloud Award</title><content type="html">&lt;a href="http://1.bp.blogspot.com/-_Ye2HXrtWv8/T5COpY8pPBI/AAAAAAAAAFQ/RsDcpeeaXR4/s1600/P1010358.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="224" src="http://1.bp.blogspot.com/-_Ye2HXrtWv8/T5COpY8pPBI/AAAAAAAAAFQ/RsDcpeeaXR4/s320/P1010358.jpg" width="320" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;div class="MsoNormal" style="font-family: 'Times New Roman', serif; font-size: 12pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;
&lt;span style="color: #1f497d; font-family: Calibri, sans-serif; font-size: 11pt;"&gt;Today at the&amp;nbsp;&lt;a href="http://www.id-conf.com/events/eic2012" style="color: blue; text-decoration: underline;"&gt;European Identity and Cloud Conference&lt;/a&gt;&amp;nbsp;it was announced that&amp;nbsp;&lt;a href="http://openid.net/connect/" style="color: blue; text-decoration: underline;"&gt;OpenID Connect&lt;/a&gt;&amp;nbsp;has won the 2012 European Identity and Cloud Award for “&lt;b&gt;Best Innovation / New Standard in Information Security&lt;/b&gt;”.&amp;nbsp; The OpenID Foundation and the Connect working group members want to thank&amp;nbsp;&lt;a href="http://www.kuppingercole.com/" style="color: blue; text-decoration: underline;"&gt;Kuppinger Cole&lt;/a&gt;&amp;nbsp;for this prestigious award and their vote of confidence in the significance of OpenID Connect.&amp;nbsp; The application presented by the OpenID Foundation that resulted in the award follows.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="font-family: 'Times New Roman', serif; font-size: 12pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://lh5.googleusercontent.com/-RelbYkvevH0/T479elioe9I/AAAAAAAAAFA/cO1cvl7y-Ss/s640/blogger-image-33131683.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://lh5.googleusercontent.com/-RelbYkvevH0/T479elioe9I/AAAAAAAAAFA/cO1cvl7y-Ss/s640/blogger-image-33131683.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="font-family: 'Times New Roman', serif; font-size: 12pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h1 style="font-family: 'Times New Roman', serif; font-size: 24pt; font-weight: bold; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;

&lt;span class="apple-style-span"&gt;&lt;span style="font-size: 13pt;"&gt;European Identity &amp;amp; Cloud Awards 2012&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h1&gt;
&lt;div style="font-family: 'Times New Roman', serif; font-size: 12pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;table border="0" cellpadding="0" cellspacing="0" class="MsoNormalTable" style="font-family: Helvetica;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="border-bottom-color: black; border-bottom-style: solid; border-bottom-width: 1pt; border-left-color: black; border-left-style: solid; border-left-width: 1pt; border-right-color: black; border-right-style: solid; border-right-width: 1pt; border-top-color: black; border-top-style: solid; border-top-width: 1pt; padding-bottom: 5pt; padding-left: 5pt; padding-right: 5pt; padding-top: 5pt; width: 112.2pt;" valign="top" width="187"&gt;&lt;div style="font-family: 'Times New Roman', serif; font-size: 12pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;
&lt;a href="http://www.blogger.com/blogger.g?blogID=2234555082540809604" name="0"&gt;&lt;/a&gt;&lt;a href="http://www.blogger.com/blogger.g?blogID=2234555082540809604" name="266334467dd0b5c909c887ecd0b38ff8b005eb6f"&gt;&lt;/a&gt;&lt;b&gt;&lt;span style="background-attachment: initial; background-clip: initial; background-color: #f4f4f4; background-image: initial; background-origin: initial;"&gt;Project company:&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;/td&gt;&lt;td style="border-bottom-color: black; border-bottom-style: solid; border-bottom-width: 1pt; border-left-color: black; border-left-style: solid; border-left-width: 1pt; border-right-color: black; border-right-style: solid; border-right-width: 1pt; border-top-color: black; border-top-style: solid; border-top-width: 1pt; padding-bottom: 5pt; padding-left: 5pt; padding-right: 5pt; padding-top: 5pt; width: 350.1pt;" valign="top" width="584"&gt;&lt;div style="font-family: 'Times New Roman', serif; font-size: 12pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;
&lt;span style="background-attachment: initial; background-clip: initial; background-color: #f4f4f4; background-image: initial; background-origin: initial;"&gt;OpenID Foundation&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="border-bottom-color: black; border-bottom-style: solid; border-bottom-width: 1pt; border-left-color: black; border-left-style: solid; border-left-width: 1pt; border-right-color: black; border-right-style: solid; border-right-width: 1pt; border-top-color: black; border-top-style: solid; border-top-width: 1pt; padding-bottom: 5pt; padding-left: 5pt; padding-right: 5pt; padding-top: 5pt; width: 112.2pt;" valign="top" width="187"&gt;&lt;div style="font-family: 'Times New Roman', serif; font-size: 12pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;
&lt;b&gt;&lt;span style="background-attachment: initial; background-clip: initial; background-color: #f4f4f4; background-image: initial; background-origin: initial;"&gt;Award category:&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;/td&gt;&lt;td style="border-bottom-color: black; border-bottom-style: solid; border-bottom-width: 1pt; border-left-color: black; border-left-style: solid; border-left-width: 1pt; border-right-color: black; border-right-style: solid; border-right-width: 1pt; border-top-color: black; border-top-style: solid; border-top-width: 1pt; padding-bottom: 5pt; padding-left: 5pt; padding-right: 5pt; padding-top: 5pt; width: 350.1pt;" valign="top" width="584"&gt;&lt;div style="font-family: 'Times New Roman', serif; font-size: 12pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;
&lt;span style="background-attachment: initial; background-clip: initial; background-color: #f4f4f4; background-image: initial; background-origin: initial;"&gt;Best Innovation / New Standard in Information Security&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;div style="font-family: 'Times New Roman', serif; font-size: 12pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="font-family: 'Times New Roman', serif; font-size: 12pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;
&lt;b&gt;1) Name of the Standard&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style="font-family: 'Times New Roman', serif; font-size: 12pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="font-family: 'Times New Roman', serif; font-size: 12pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;
OpenID Connect&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div style="font-family: 'Times New Roman', serif; font-size: 12pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="font-family: 'Times New Roman', serif; font-size: 12pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;
&lt;b&gt;2) Brief description of the Standard&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style="font-family: 'Times New Roman', serif; font-size: 12pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="font-family: 'Times New Roman', serif; font-size: 12pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;
OpenID Connect is a simple JSON/REST-based interoperable identity protocol built on top of the OAuth 2.0 family of specifications. &amp;nbsp;Its design philosophy is “make simple things simple and make complicated things possible”.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div style="font-family: 'Times New Roman', serif; font-size: 12pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="font-family: 'Times New Roman', serif; font-size: 12pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;
While OAuth 2.0 is a generic access authorization delegation protocol, thus enabling the transfer of arbitrary data, it does not define ways to authenticate users or communicate information about them. OpenID Connect provides a secure, flexible, and interoperable identity layer on top of OAuth 2.0 so that digital identities can be easily used across sites and applications. While enabling a default set of common claims about the user (such as name, e-mail address, and a user identifier enabling SSO) to be easily employed, OpenID Connect also enables participants to exchange any claims relevant to their application using simple JSON-based data structures.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div style="font-family: 'Times New Roman', serif; font-size: 12pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="font-family: 'Times New Roman', serif; font-size: 12pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;
As it is based in OAuth 2.0, OpenID Connect reaches beyond the Web. OpenID Connect brings identity interactions to “apps” and “native applications” on both smart phones and traditional computing devices, in addition to Web sites.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div style="font-family: 'Times New Roman', serif; font-size: 12pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="font-family: 'Times New Roman', serif; font-size: 12pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;
From a security perspective, OpenID Connect was built to be able to gracefully range from the low security levels typically employed for social networks to medium security levels needed for business applications to high security requirements needed for many government applications. &amp;nbsp;OpenID Connect spans this wide range of applications by using JSON-based digital signature and encryption standards.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div style="font-family: 'Times New Roman', serif; font-size: 12pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="font-family: 'Times New Roman', serif; font-size: 12pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;
From a privacy perspective, OpenID Connect allows the selective sharing of attributes with user consent. It also enables the use of pairwise pseudonymous identifiers, thereby avoiding correlations as appropriate.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div style="font-family: 'Times New Roman', serif; font-size: 12pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="font-family: 'Times New Roman', serif; font-size: 12pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;
From a business perspective, OpenID Connect meets business needs for the use of claims from multiple Claims Providers in a single context (rather than a single Identity Provider being the source of all claims for any given interaction). &amp;nbsp;It enables the use of Aggregated Claims, where signed claim values can be collected and passed on by OpenID Providers and the use of Distributed Claims, where claims are passed by reference, rather than by value, and dynamically retrieved by Relying Parties.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div style="font-family: 'Times New Roman', serif; font-size: 12pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="font-family: 'Times New Roman', serif; font-size: 12pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;
From a design perspective, OpenID Connect’s modular design enables flexible deployments. Implementations can use only the components they need, while still remaining interoperable. &amp;nbsp;For instance, “Discovery” and “Dynamic Client Registration” can used in deployments where OpenID Providers can be chosen dynamically, whereas they aren’t needed if the site or application uses only a fixed set of OpenID Providers.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div style="font-family: 'Times New Roman', serif; font-size: 12pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="font-family: 'Times New Roman', serif; font-size: 12pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;
Unlike the previous version of OpenID, user identities can be e-mail addresses that people already have and know, rather than being URLs that most people have difficulty using.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div style="font-family: 'Times New Roman', serif; font-size: 12pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="font-family: 'Times New Roman', serif; font-size: 12pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;
&lt;b&gt;3) Who is contributing to the standard?&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style="font-family: 'Times New Roman', serif; font-size: 12pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="font-family: 'Times New Roman', serif; font-size: 12pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;
OpenID Connect was developed in an OpenID Foundation working group. &amp;nbsp;OpenID working groups are open to all free of charge who sign the IPR Contribution agreement. Contributors include a diverse international representation of industry and independent technology leaders: &amp;nbsp;AOL, Deutsche Telecom, Facebook, Google, Microsoft, Mitre Corporation, mixi, Nomura Research Institute, PayPal, Salesforce, Yahoo! Japan, and others.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div style="font-family: 'Times New Roman', serif; font-size: 12pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="font-family: 'Times New Roman', serif; font-size: 12pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;
&lt;b&gt;4) When is it expected to be finalized?&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style="font-family: 'Times New Roman', serif; font-size: 12pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="font-family: 'Times New Roman', serif; font-size: 12pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;
OpenID Connect is in the Implementer’s Draft review period. That stage is similar to the DIS (Draft International Standard) phase of the ISO process. The approval vote will complete on February 15, 2012. The OpenID Connect specifications are expected to be competed in the second half of 2012.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div style="font-family: 'Times New Roman', serif; font-size: 12pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="font-family: 'Times New Roman', serif; font-size: 12pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;
&lt;b&gt;5) What are the key Identity management objectives?&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style="font-family: 'Times New Roman', serif; font-size: 12pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="font-family: 'Times New Roman', serif; font-size: 12pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;
- Interoperability&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div style="font-family: 'Times New Roman', serif; font-size: 12pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;
- Security&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div style="font-family: 'Times New Roman', serif; font-size: 12pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;
- Ease of deployment&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div style="font-family: 'Times New Roman', serif; font-size: 12pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;
- Flexibility&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div style="font-family: 'Times New Roman', serif; font-size: 12pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;
- Wide support of devices&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div style="font-family: 'Times New Roman', serif; font-size: 12pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;
- Enabling Claims Providers to be distinct from Identity Providers&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div style="font-family: 'Times New Roman', serif; font-size: 12pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="font-family: 'Times New Roman', serif; font-size: 12pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;
&lt;b&gt;6) Does the standard exceed key objectives?&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style="font-family: 'Times New Roman', serif; font-size: 12pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;
Yes.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div style="font-family: 'Times New Roman', serif; font-size: 12pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="font-family: 'Times New Roman', serif; font-size: 12pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;
&lt;b&gt;7) Are there live deployments?&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style="font-family: 'Times New Roman', serif; font-size: 12pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;
Yes. e.g., Google, Gakunin (Japanese Universities Network), Nikkei Newspaper, etc.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div style="font-family: 'Times New Roman', serif; font-size: 12pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;
Mature deployments are under way by working group participants.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div style="font-family: 'Times New Roman', serif; font-size: 12pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="font-family: 'Times New Roman', serif; font-size: 12pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;
&lt;b&gt;8) Does the deployment touch customers/consumers/citizens?&amp;nbsp; If so, what benefit(s) is the application delivering to customers/consumers/citizens?&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style="font-family: 'Times New Roman', serif; font-size: 12pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;
- More secure and familiar online interactions&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div style="font-family: 'Times New Roman', serif; font-size: 12pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;
- Easier to use authentication and attribute sharing&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div style="font-family: 'Times New Roman', serif; font-size: 12pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="font-family: 'Times New Roman', serif; font-size: 12pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;
&lt;b&gt;9) Does the deployment successfully address one of more of the following identity issues? If so, please provide brief examples.&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style="font-family: 'Times New Roman', serif; font-size: 12pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="font-family: 'Times New Roman', serif; font-size: 12pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;
&amp;nbsp;- Help prevent/reduce identity theft? &amp;nbsp;Yes.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div style="font-family: 'Times New Roman', serif; font-size: 12pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;
&amp;nbsp;- Help address ease of use issues? Yes.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div style="font-family: 'Times New Roman', serif; font-size: 12pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;
&amp;nbsp;- Help meet regulatory requirement? Yes.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div style="font-family: 'Times New Roman', serif; font-size: 12pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;
&amp;nbsp;- Meet unique vertical market objectives? Yes.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div style="font-family: 'Times New Roman', serif; font-size: 12pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="font-family: 'Times New Roman', serif; font-size: 12pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;
&lt;b&gt;10) Why should this standard win the European Identity/Cloud Award?&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style="font-family: 'Times New Roman', serif; font-size: 12pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="font-family: 'Times New Roman', serif; font-size: 12pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;
OpenID Connect is a significant advance in digital identity that:&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div style="font-family: 'Times New Roman', serif; font-size: 12pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;
&amp;nbsp;a) is simple to build and deploy, being based upon existing JSON/REST standards,&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div style="font-family: 'Times New Roman', serif; font-size: 12pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;
&amp;nbsp;b) spans both Web and native applications, including mobile “apps”,&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div style="font-family: 'Times New Roman', serif; font-size: 12pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;
&amp;nbsp;c) has wide support from major cloud service providers, enterprise companies, and social networking companies,&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div style="font-family: 'Times New Roman', serif; font-size: 12pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;
&amp;nbsp;d) helps combat identity theft by reducing the number of passwords in use,&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div style="font-family: 'Times New Roman', serif; font-size: 12pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;
&amp;nbsp;e) enables new Web based services and expands existing online markets,&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div style="font-family: 'Times New Roman', serif; font-size: 12pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;
&amp;nbsp;f) spurs global economic growth by enabling simple and secure exchange of verified attributes from multiple sources at Internet scale.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div style="font-family: 'Times New Roman', serif; font-size: 12pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="font-family: 'Times New Roman', serif; font-size: 12pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;
OpenID Connect is an important contribution to a safer, privacy protecting, and easy to use computing environment that spans the cloud, the Web, enterprises, and mobile applications and has broad industry backing. For these reasons, OpenID Connect merits the 2012 European Identity/Cloud Award.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="font-family: 'Times New Roman', serif; font-size: 12pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="font-family: 'Times New Roman', serif; font-size: 12pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;
&lt;span style="color: #1f497d; font-family: Calibri, sans-serif; font-size: 11pt;"&gt;&lt;o:p&gt;John B.&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;
&lt;span class="Apple-style-span" style="color: #333333; font-size: x-small;"&gt;&lt;a href="https://twitter.com/#!/ve7jtb" style="-webkit-transition-delay: initial; -webkit-transition-duration: 0.3s; -webkit-transition-property: color; -webkit-transition-timing-function: initial; color: #4ba976; display: inline; font-family: 'Helvetica Neue Light', HelveticaNeue-Light, 'Helvetica Neue', Helvetica, Arial, sans-serif; outline-color: initial; outline-style: none; outline-width: initial; text-decoration: none;" target="_blank"&gt;@ve7jtb&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;div class="blogpress_location"&gt;
&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2234555082540809604-3751041640032404568?l=www.thread-safe.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Thread-Safe?a=kvHMmKdkh5w:CPi6ehaV3r4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Thread-Safe?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Thread-Safe?a=kvHMmKdkh5w:CPi6ehaV3r4:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Thread-Safe?i=kvHMmKdkh5w:CPi6ehaV3r4:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Thread-Safe?a=kvHMmKdkh5w:CPi6ehaV3r4:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Thread-Safe?i=kvHMmKdkh5w:CPi6ehaV3r4:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Thread-Safe?a=kvHMmKdkh5w:CPi6ehaV3r4:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Thread-Safe?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.thread-safe.com/feeds/3751041640032404568/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.thread-safe.com/2012/04/openid-connect-wins-2012-european.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2234555082540809604/posts/default/3751041640032404568?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2234555082540809604/posts/default/3751041640032404568?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Thread-Safe/~3/kvHMmKdkh5w/openid-connect-wins-2012-european.html" title="OpenID Connect Wins 2012 European Identity and Cloud Award" /><author><name>John Bradley</name><uri>https://profiles.google.com/113758384073095653585</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-1sJGlVoHT68/AAAAAAAAAAI/AAAAAAAAABY/rJ6sSi8Ds2w/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-_Ye2HXrtWv8/T5COpY8pPBI/AAAAAAAAAFQ/RsDcpeeaXR4/s72-c/P1010358.jpg" height="72" width="72" /><thr:total>0</thr:total><georss:featurename>Oberschleißheim, Germany</georss:featurename><georss:point>48.25394114463431 11.5850830078125</georss:point><georss:box>48.21165164463431 11.5061190078125 48.29623064463431 11.6640470078125</georss:box><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-sa/2.0/" /><feedburner:origLink>http://www.thread-safe.com/2012/04/openid-connect-wins-2012-european.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DU8ARXk8fCp7ImA9WhVXFEo.&quot;"><id>tag:blogger.com,1999:blog-2234555082540809604.post-2100309584365165592</id><published>2012-04-15T05:17:00.001-03:00</published><updated>2012-04-15T05:17:24.774-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-04-15T05:17:24.774-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="ietf" /><category scheme="http://www.blogger.com/atom/ns#" term="openid connect" /><category scheme="http://www.blogger.com/atom/ns#" term="oauth" /><title>Request by JSON ver.1.0 for OAuth 2.0 updated.</title><content type="html">Nat and I originally submitted this&amp;nbsp;&amp;nbsp;&lt;a href="https://datatracker.ietf.org/doc/draft-sakimura-oauth-requrl/" target="_blank"&gt;ID&lt;/a&gt;&amp;nbsp;in 2010.&lt;br /&gt;
&lt;br /&gt;
It was incorporated into openID Connect as the way to make authenticated requests to the Authorization server. &amp;nbsp; This is necessary in some but not all use cases.&lt;br /&gt;
&lt;br /&gt;
Recently a number of people have requested that &lt;a href="https://datatracker.ietf.org/doc/draft-sakimura-oauth-requrl/" target="_blank"&gt;Request by JSON&lt;/a&gt; become a general OAuth extension, and connect reference it to improve interoperability.&lt;br /&gt;
&lt;br /&gt;
We have refreshed the ID to keep it alive and make some minor updates.&lt;br /&gt;
&lt;br /&gt;
This came up after the OAuth rechartering discussion so I don't expect that it is anything the OAuth WG would take on in the near future.&lt;br /&gt;
&lt;br /&gt;
Keeping it warm as an ID for people who are interested to work on and reference is probably the best option.&lt;br /&gt;
&lt;br /&gt;
We would not want this to become a blocking factor for Connect final publication, &amp;nbsp;but also have no problem with others using the same mechanism outside of connect.&lt;br /&gt;
&lt;br /&gt;
If people are interested we can discuss it on the &lt;a href="http://tools.ietf.org/wg/oauth/" target="_blank"&gt;OAuth&lt;/a&gt; list as part of rechartering until they kick us off:)&lt;br /&gt;
&lt;br /&gt;
John B.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2234555082540809604-2100309584365165592?l=www.thread-safe.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Thread-Safe?a=Xg__7n3x-ks:CmfdnvFAh2Q:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Thread-Safe?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Thread-Safe?a=Xg__7n3x-ks:CmfdnvFAh2Q:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Thread-Safe?i=Xg__7n3x-ks:CmfdnvFAh2Q:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Thread-Safe?a=Xg__7n3x-ks:CmfdnvFAh2Q:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Thread-Safe?i=Xg__7n3x-ks:CmfdnvFAh2Q:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Thread-Safe?a=Xg__7n3x-ks:CmfdnvFAh2Q:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Thread-Safe?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.thread-safe.com/feeds/2100309584365165592/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.thread-safe.com/2012/04/request-by-json-ver10-for-oauth-20.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2234555082540809604/posts/default/2100309584365165592?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2234555082540809604/posts/default/2100309584365165592?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Thread-Safe/~3/Xg__7n3x-ks/request-by-json-ver10-for-oauth-20.html" title="Request by JSON ver.1.0 for OAuth 2.0 updated." /><author><name>John Bradley</name><uri>https://profiles.google.com/113758384073095653585</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-1sJGlVoHT68/AAAAAAAAAAI/AAAAAAAAABY/rJ6sSi8Ds2w/s512-c/photo.jpg" /></author><thr:total>0</thr:total><georss:featurename>Schwanthalerstraße 113, 80339 Munich, Germany</georss:featurename><georss:point>48.13756858672963 11.547918319702148</georss:point><georss:box>48.132270586729625 11.538047819702149 48.14286658672963 11.557788819702148</georss:box><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-sa/2.0/" /><feedburner:origLink>http://www.thread-safe.com/2012/04/request-by-json-ver10-for-oauth-20.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEMMRXk-fCp7ImA9WhVQGEw.&quot;"><id>tag:blogger.com,1999:blog-2234555082540809604.post-5569555341661376</id><published>2012-04-07T13:33:00.000-03:00</published><updated>2012-04-07T13:34:44.754-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-04-07T13:34:44.754-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="openid" /><category scheme="http://www.blogger.com/atom/ns#" term="oidf" /><category scheme="http://www.blogger.com/atom/ns#" term="openid connect" /><category scheme="http://www.blogger.com/atom/ns#" term="oauth" /><title>OpenID Connect Technology Meeting, April 30, 2012</title><content type="html">&lt;br /&gt;
&lt;div style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 13px; line-height: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 8px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;
&lt;strong&gt;Workgroup Meeting&lt;/strong&gt;&lt;/div&gt;
&lt;div style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 13px; line-height: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 8px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 13px; line-height: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 8px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;
Lunch is at noon and the meeting starts at 1pm.&lt;/div&gt;
&lt;div style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 13px; line-height: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 8px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 13px; line-height: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 8px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;
Non Members are welcome to attend, but must be aware of the OIDF IPR policy.&lt;/div&gt;
&lt;div style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 13px; line-height: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 8px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 13px; line-height: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 8px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;
&lt;a href="http://apr30-oidf-wg-eorg.eventbrite.com/" target="_blank"&gt;Registration&lt;/a&gt;&lt;/div&gt;
&lt;div style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 13px; line-height: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 8px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 13px; line-height: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 8px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;
John B.&lt;/div&gt;
&lt;div style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 13px; line-height: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 8px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;
&lt;span class="Apple-style-span" style="font-family: Times; font-size: small;"&gt;&lt;a href="https://twitter.com/#!/ve7jtb" target="_blank"&gt;@ve7jtb&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 13px; line-height: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 8px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;
&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2234555082540809604-5569555341661376?l=www.thread-safe.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Thread-Safe?a=0Kmzz-5Gv58:kNERJcK-01U:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Thread-Safe?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Thread-Safe?a=0Kmzz-5Gv58:kNERJcK-01U:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Thread-Safe?i=0Kmzz-5Gv58:kNERJcK-01U:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Thread-Safe?a=0Kmzz-5Gv58:kNERJcK-01U:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Thread-Safe?i=0Kmzz-5Gv58:kNERJcK-01U:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Thread-Safe?a=0Kmzz-5Gv58:kNERJcK-01U:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Thread-Safe?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.thread-safe.com/feeds/5569555341661376/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.thread-safe.com/2012/04/workgroup-meeting-lunch-is-at-noon-and.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2234555082540809604/posts/default/5569555341661376?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2234555082540809604/posts/default/5569555341661376?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Thread-Safe/~3/0Kmzz-5Gv58/workgroup-meeting-lunch-is-at-noon-and.html" title="OpenID Connect Technology Meeting, April 30, 2012" /><author><name>John Bradley</name><uri>https://profiles.google.com/113758384073095653585</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-1sJGlVoHT68/AAAAAAAAAAI/AAAAAAAAABY/rJ6sSi8Ds2w/s512-c/photo.jpg" /></author><thr:total>0</thr:total><georss:featurename>Isla de Maipo, Santiago Metropolitan Region, Chile</georss:featurename><georss:point>-33.746456 -70.9</georss:point><georss:box>-33.8520825 -71.0579285 -33.6408295 -70.74207150000001</georss:box><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-sa/2.0/" /><feedburner:origLink>http://www.thread-safe.com/2012/04/workgroup-meeting-lunch-is-at-noon-and.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUADR306fyp7ImA9WhVQGEw.&quot;"><id>tag:blogger.com,1999:blog-2234555082540809604.post-950403519418923690</id><published>2012-04-07T12:49:00.000-03:00</published><updated>2012-04-07T12:49:36.317-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-04-07T12:49:36.317-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="openid" /><category scheme="http://www.blogger.com/atom/ns#" term="identity" /><category scheme="http://www.blogger.com/atom/ns#" term="eic" /><category scheme="http://www.blogger.com/atom/ns#" term="openid connect" /><category scheme="http://www.blogger.com/atom/ns#" term="oauth" /><title>OpenID Workshop at EIC</title><content type="html">On the morning of Tuesday Apr 17, The openID Foundation is holding a &lt;a href="http://www.id-conf.com/events/eic2012-oix" target="_blank"&gt;workshop at the European Identity Confrence in Munich&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
You can attend even if you are not attending EIC. &lt;br /&gt;
&lt;br /&gt;
This will cover OpenID Connect and Account Chooser activities.&lt;br /&gt;
&lt;br /&gt;
John B.&lt;br /&gt;
&lt;a href="https://twitter.com/#!/ve7jtb" target="_blank"&gt;@ve7jtb&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2234555082540809604-950403519418923690?l=www.thread-safe.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Thread-Safe?a=aaT6URgkobU:InNA83DyGdc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Thread-Safe?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Thread-Safe?a=aaT6URgkobU:InNA83DyGdc:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Thread-Safe?i=aaT6URgkobU:InNA83DyGdc:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Thread-Safe?a=aaT6URgkobU:InNA83DyGdc:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Thread-Safe?i=aaT6URgkobU:InNA83DyGdc:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Thread-Safe?a=aaT6URgkobU:InNA83DyGdc:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Thread-Safe?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.thread-safe.com/feeds/950403519418923690/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.thread-safe.com/2012/04/openid-workshop-at-eic.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2234555082540809604/posts/default/950403519418923690?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2234555082540809604/posts/default/950403519418923690?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Thread-Safe/~3/aaT6URgkobU/openid-workshop-at-eic.html" title="OpenID Workshop at EIC" /><author><name>John Bradley</name><uri>https://profiles.google.com/113758384073095653585</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-1sJGlVoHT68/AAAAAAAAAAI/AAAAAAAAABY/rJ6sSi8Ds2w/s512-c/photo.jpg" /></author><thr:total>0</thr:total><georss:featurename>Isla de Maipo, Santiago Metropolitan Region, Chile</georss:featurename><georss:point>-33.746456 -70.9</georss:point><georss:box>-33.8520825 -71.0579285 -33.6408295 -70.74207150000001</georss:box><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-sa/2.0/" /><feedburner:origLink>http://www.thread-safe.com/2012/04/openid-workshop-at-eic.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUIMRXo9fCp7ImA9WhVQF0g.&quot;"><id>tag:blogger.com,1999:blog-2234555082540809604.post-3151424737600010237</id><published>2012-04-06T20:04:00.001-03:00</published><updated>2012-04-06T20:06:24.464-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-04-06T20:06:24.464-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="identity" /><category scheme="http://www.blogger.com/atom/ns#" term="security" /><category scheme="http://www.blogger.com/atom/ns#" term="oauth" /><title>Followup on OAuth / Facebook login vulnerability.</title><content type="html">&lt;br /&gt;
&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;
I blogged about&amp;nbsp;&lt;a href="http://www.thread-safe.com/2012/01/problem-with-oauth-for-authentication.html" target="_blank"&gt;The problem with OAuth for Authentication&lt;/a&gt;&amp;nbsp;and followed up with &lt;a href="http://www.thread-safe.com/2012/02/more-on-oauth-implicit-flow-application.html" target="_blank"&gt;More on OAuth implicit flow application vulnerabilities&lt;/a&gt;.&lt;/div&gt;
&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;
It however appears that many sites using Facebook login, especially from apps are not understanding or taking the issue seriously.&lt;/div&gt;
&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;
There are popular social sites that effectively have no security!&lt;/div&gt;
&lt;br /&gt;
Nov Matake &lt;a href="https://twitter.com/#!/nov"&gt;@nov&lt;/a&gt; has filed issues with them but, without much action from most.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I am more of a theoretical guy these days rather than a programmer. &amp;nbsp; I clearly see the flaw, but to help our &amp;nbsp;developer friends understand Nov has produced an iPhone app to show the issue. &amp;nbsp; &lt;a href="https://github.com/nov/FB-Connect" target="_blank"&gt;The code is available ion Github&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Bad people are probably doing bad things with this exploit now.&lt;br /&gt;
&lt;br /&gt;
My recommendation is that if you are relying on a OAuth implicit flow to authenticate applications or users, read the posts and contact us if you are unsure.&lt;br /&gt;
&lt;br /&gt;
I could name the sites and create a big flap, &amp;nbsp;but I don't think embarrassing people publicly is called for yet.&lt;br /&gt;
&lt;br /&gt;
John B.&lt;br /&gt;
&lt;a href="https://twitter.com/#!/ve7jtb" target="_blank"&gt;@ve7jtb&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2234555082540809604-3151424737600010237?l=www.thread-safe.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Thread-Safe?a=2OanXw8FXvo:IEwHG9LwSGY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Thread-Safe?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Thread-Safe?a=2OanXw8FXvo:IEwHG9LwSGY:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Thread-Safe?i=2OanXw8FXvo:IEwHG9LwSGY:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Thread-Safe?a=2OanXw8FXvo:IEwHG9LwSGY:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Thread-Safe?i=2OanXw8FXvo:IEwHG9LwSGY:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Thread-Safe?a=2OanXw8FXvo:IEwHG9LwSGY:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Thread-Safe?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.thread-safe.com/feeds/3151424737600010237/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.thread-safe.com/2012/04/followup-on-oauth-facebook-login.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2234555082540809604/posts/default/3151424737600010237?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2234555082540809604/posts/default/3151424737600010237?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Thread-Safe/~3/2OanXw8FXvo/followup-on-oauth-facebook-login.html" title="Followup on OAuth / Facebook login vulnerability." /><author><name>John Bradley</name><uri>https://profiles.google.com/113758384073095653585</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-1sJGlVoHT68/AAAAAAAAAAI/AAAAAAAAABY/rJ6sSi8Ds2w/s512-c/photo.jpg" /></author><thr:total>0</thr:total><georss:featurename>Isla de Maipo, Santiago Metropolitan Region, Chile</georss:featurename><georss:point>-33.746456 -70.9</georss:point><georss:box>-33.8520825 -71.0579285 -33.6408295 -70.74207150000001</georss:box><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-sa/2.0/" /><feedburner:origLink>http://www.thread-safe.com/2012/04/followup-on-oauth-facebook-login.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkMASXozeyp7ImA9WhVRE0k.&quot;"><id>tag:blogger.com,1999:blog-2234555082540809604.post-1484637564809685737</id><published>2012-03-21T12:38:00.000-03:00</published><updated>2012-03-21T12:40:48.483-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-03-21T12:40:48.483-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="openid" /><category scheme="http://www.blogger.com/atom/ns#" term="identity" /><category scheme="http://www.blogger.com/atom/ns#" term="openid connect" /><category scheme="http://www.blogger.com/atom/ns#" term="oauth" /><title>Preview of OpenID Connect Test Facility now open!</title><content type="html">Andreas Åkre Solberg and Roland Hedberg are happy to announce that today they are making a technology preview of the &lt;a href="http://openidtest.uninett.no/"&gt;OpenID Connect Test Facility&lt;/a&gt; publicly available.&lt;br /&gt;
&lt;div style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; margin-bottom: 24px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;
&lt;br /&gt;
Here is a video &lt;a href="http://vimeo.com/38634031"&gt;demo&lt;/a&gt; of how it all works.&lt;br /&gt;
&lt;br /&gt;
Start to &lt;a href="http://openidtest.uninett.no/"&gt;test your OpenID Connect Provider&lt;/a&gt; right away!&lt;br /&gt;
&lt;br /&gt;
This is an early preview of a pretty complex set of software, so we’re asking you to be patient, and please report any issues to us. You can do that by posting to the &lt;a href="https://github.com/andreassolberg/fedlab/issues"&gt;github issue tracker&lt;/a&gt; or respond to the &lt;a href="http://groups.google.com/group/openid-connect-interop"&gt;openID Connect interop list&lt;/a&gt;.&lt;/div&gt;
&lt;div style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; margin-bottom: 24px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;
&lt;br /&gt;
&lt;b&gt;Additional Resources:&lt;/b&gt;&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://openid.net/connect/"&gt;The OpenID Connect Specification&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://lists.openid.net/mailman/listinfo/openid-specs-ab"&gt;The OpenID Connect Mailinglist&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/andreassolberg/fedlab"&gt;Federation Lab OpenID Connect Frontend (Node.js)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/rohe/pyoidc"&gt;OpenID Connect Backend (Python)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
John B&lt;br /&gt;
&lt;a href="https://twitter.com/#!/ve7jtb"&gt;@ve7jtb&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2234555082540809604-1484637564809685737?l=www.thread-safe.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Thread-Safe?a=j8SAnOCvl-4:6AxK8Bnk2lY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Thread-Safe?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Thread-Safe?a=j8SAnOCvl-4:6AxK8Bnk2lY:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Thread-Safe?i=j8SAnOCvl-4:6AxK8Bnk2lY:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Thread-Safe?a=j8SAnOCvl-4:6AxK8Bnk2lY:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Thread-Safe?i=j8SAnOCvl-4:6AxK8Bnk2lY:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Thread-Safe?a=j8SAnOCvl-4:6AxK8Bnk2lY:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Thread-Safe?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.thread-safe.com/feeds/1484637564809685737/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.thread-safe.com/2012/03/preview-of-openid-connect-test-facility.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2234555082540809604/posts/default/1484637564809685737?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2234555082540809604/posts/default/1484637564809685737?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Thread-Safe/~3/j8SAnOCvl-4/preview-of-openid-connect-test-facility.html" title="Preview of OpenID Connect Test Facility now open!" /><author><name>John Bradley</name><uri>https://profiles.google.com/113758384073095653585</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-1sJGlVoHT68/AAAAAAAAAAI/AAAAAAAAABY/rJ6sSi8Ds2w/s512-c/photo.jpg" /></author><thr:total>0</thr:total><georss:featurename>Isla de Maipo, Santiago Metropolitan Region, Chile</georss:featurename><georss:point>-33.746456 -70.9</georss:point><georss:box>-33.8520825 -71.0579285 -33.6408295 -70.74207150000001</georss:box><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-sa/2.0/" /><feedburner:origLink>http://www.thread-safe.com/2012/03/preview-of-openid-connect-test-facility.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0AAR3kzcCp7ImA9WhVSFk0.&quot;"><id>tag:blogger.com,1999:blog-2234555082540809604.post-5555161820134275228</id><published>2012-03-12T22:05:00.000-03:00</published><updated>2012-03-12T22:22:26.788-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-03-12T22:22:26.788-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="jose" /><category scheme="http://www.blogger.com/atom/ns#" term="openid connect" /><category scheme="http://www.blogger.com/atom/ns#" term="oauth" /><category scheme="http://www.blogger.com/atom/ns#" term="JWT" /><title>JSON Object Signing and Encryption (JOSE) Draft 01 &amp; JSON Web Token (JWT) specification Draft 08</title><content type="html">New versions of the &lt;a href="http://datatracker.ietf.org/wg/jose/"&gt;JSON Object Signing and Encryption (JOSE)&lt;/a&gt; specifications are now available that incorporate working group feedback since publication of the initial versions.  They are:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;JSON Web Signature (JWS) – Digital signature/HMAC specification&lt;/li&gt;
&lt;li&gt;JSON Web Encryption (JWE) – Encryption specification&lt;/li&gt;
&lt;li&gt;JSON Web Key (JWK) – Public key specification&lt;/li&gt;
&lt;li&gt;JSON Web Algorithms (JWA) – Algorithms and identifiers specification&lt;/li&gt;
&lt;/ul&gt;
The most important changes are:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Added a separate integrity check for encryption algorithms without an integral integrity check.&lt;/li&gt;
&lt;li&gt;Defined header parameters for including JWK public keys and X.509 certificate chains directly in the header.&lt;/li&gt;
&lt;/ul&gt;
See the Document History section in each specification for a more detailed list of changes.&lt;br /&gt;
&lt;br /&gt;
Corresponding versions of the JSON Serialization specs, which use these JOSE drafts, are also available.  Besides using JSON Serializations of the cryptographic results (rather than Compact Serializations using a series of base64url encoded values), these specifications also enable multiple digital signatures and/or HMACs to applied to the same message and enable the same plaintext to be encrypted to multiple recipients.  They are:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;JSON Web Signature JSON Serialization (JWS-JS)&lt;/li&gt;
&lt;li&gt;JSON Web Encryption JSON Serialization (JWE-JS)&lt;/li&gt;
&lt;/ul&gt;
Draft 08 of the &lt;a href="http://tools.ietf.org/html/draft-jones-json-web-token-08"&gt;JSON Web Token (JWT) specification&lt;/a&gt; has been published. It uses the &lt;a href="http://self-issued.info/?p=688"&gt;-01 versions of the JOSE specifications&lt;/a&gt; and also contains these changes:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Removed language that required that a JWT must have three parts.  Now the number of parts is explicitly dependent upon the representation of the underlying JWS or JWE.&lt;/li&gt;
&lt;li&gt;Moved the “alg”:“none” definition to the JWS spec.&lt;/li&gt;
&lt;li&gt;Registered the application/jwt MIME Media Type.&lt;/li&gt;
&lt;li&gt;Clarified that the order of the creation and validation steps is not significant in cases where there are no dependencies between the inputs and outputs of the steps.&lt;/li&gt;
&lt;li&gt;Corrected the Magic Signatures and Simple Web Token (SWT) references.&lt;/li&gt;
&lt;/ul&gt;
These specifications are available at:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://tools.ietf.org/html/draft-ietf-jose-json-web-signature-01"&gt;http://tools.ietf.org/html/draft-ietf-jose-json-web-signature-01&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://tools.ietf.org/html/draft-ietf-jose-json-web-encryption-01"&gt;http://tools.ietf.org/html/draft-ietf-jose-json-web-encryption-01&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://tools.ietf.org/html/draft-ietf-jose-json-web-key-01"&gt;http://tools.ietf.org/html/draft-ietf-jose-json-web-key-01&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://tools.ietf.org/html/draft-ietf-jose-json-web-algorithms-01"&gt;http://tools.ietf.org/html/draft-ietf-jose-json-web-algorithms-01&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://tools.ietf.org/html/draft-jones-json-web-signature-json-serialization-01"&gt;http://tools.ietf.org/html/draft-jones-json-web-signature-json-serialization-01&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://tools.ietf.org/html/draft-jones-json-web-encryption-json-serialization-01"&gt;http://tools.ietf.org/html/draft-jones-json-web-encryption-json-serialization-01&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://tools.ietf.org/html/draft-jones-json-web-token-08"&gt;http://tools.ietf.org/html/draft-jones-json-web-token-08&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
HTML formatted versions are available at:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://self-issued.info/docs/draft-ietf-jose-json-web-signature-01.html"&gt;http://self-issued.info/docs/draft-ietf-jose-json-web-signature-01.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://self-issued.info/docs/draft-ietf-jose-json-web-encryption-01.html"&gt;http://self-issued.info/docs/draft-ietf-jose-json-web-encryption-01.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://self-issued.info/docs/draft-ietf-jose-json-web-key-01.html"&gt;http://self-issued.info/docs/draft-ietf-jose-json-web-key-01.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://self-issued.info/docs/draft-ietf-jose-json-web-algorithms-01.html"&gt;http://self-issued.info/docs/draft-ietf-jose-json-web-algorithms-01.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://self-issued.info/docs/draft-jones-json-web-signature-json-serialization-01.html"&gt;http://self-issued.info/docs/draft-jones-json-web-signature-json-serialization-01.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://self-issued.info/docs/draft-jones-json-web-encryption-json-serialization-01.html"&gt;http://self-issued.info/docs/draft-jones-json-web-encryption-json-serialization-01.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://self-issued.info/docs/draft-jones-json-web-token-08.html"&gt;http://self-issued.info/docs/draft-jones-json-web-token-08.html&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;
&lt;o:p&gt;John B.&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="font-family: Calibri, sans-serif; font-size: 11pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;
&lt;o:p&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Times, 'Times New Roman', serif; font-size: 14px; line-height: 19px;"&gt;&lt;a href="https://twitter.com/#!/ve7jtb" style="-webkit-transition-delay: initial; -webkit-transition-duration: 0.3s; -webkit-transition-property: color; -webkit-transition-timing-function: initial; color: #4ba976; display: inline; font-family: 'Helvetica Neue Light', HelveticaNeue-Light, 'Helvetica Neue', Helvetica, Arial, sans-serif; outline-color: initial; outline-style: none; outline-width: initial; text-decoration: underline;"&gt;@ve7jtb&lt;/a&gt;&lt;/span&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2234555082540809604-5555161820134275228?l=www.thread-safe.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Thread-Safe?a=CG3j71AoBUc:Hp6SQPKsnVg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Thread-Safe?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Thread-Safe?a=CG3j71AoBUc:Hp6SQPKsnVg:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Thread-Safe?i=CG3j71AoBUc:Hp6SQPKsnVg:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Thread-Safe?a=CG3j71AoBUc:Hp6SQPKsnVg:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Thread-Safe?i=CG3j71AoBUc:Hp6SQPKsnVg:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Thread-Safe?a=CG3j71AoBUc:Hp6SQPKsnVg:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Thread-Safe?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.thread-safe.com/feeds/5555161820134275228/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.thread-safe.com/2012/03/json-object-signing-and-encryption-jose.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2234555082540809604/posts/default/5555161820134275228?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2234555082540809604/posts/default/5555161820134275228?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Thread-Safe/~3/CG3j71AoBUc/json-object-signing-and-encryption-jose.html" title="JSON Object Signing and Encryption (JOSE) Draft 01 &amp; JSON Web Token (JWT) specification Draft 08" /><author><name>John Bradley</name><uri>https://profiles.google.com/113758384073095653585</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-1sJGlVoHT68/AAAAAAAAAAI/AAAAAAAAABY/rJ6sSi8Ds2w/s512-c/photo.jpg" /></author><thr:total>0</thr:total><georss:featurename>Gaithersburg, MD, USA</georss:featurename><georss:point>39.1434406 -77.2013705</georss:point><georss:box>39.0941806 -77.2803345 39.192700599999995 -77.1224065</georss:box><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-sa/2.0/" /><feedburner:origLink>http://www.thread-safe.com/2012/03/json-object-signing-and-encryption-jose.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0ANSHsycSp7ImA9WhVSFk0.&quot;"><id>tag:blogger.com,1999:blog-2234555082540809604.post-2419160543229790926</id><published>2012-03-12T16:56:00.002-03:00</published><updated>2012-03-12T22:23:19.599-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-03-12T22:23:19.599-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="uma" /><category scheme="http://www.blogger.com/atom/ns#" term="oath" /><category scheme="http://www.blogger.com/atom/ns#" term="identity" /><category scheme="http://www.blogger.com/atom/ns#" term="openid connect" /><title>A New Venn Of Access Control For The API Economy</title><content type="html">&lt;br /&gt;
&lt;div style="color: #404040; line-height: 18px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 10px; padding-left: 0px; padding-right: 0px; padding-top: 10px;"&gt;
&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;Up on the&amp;nbsp;&lt;a href="http://blogs.forrester.com/eve_maler/12-03-12-a_new_venn_of_access_control_for_the_api_economy" target="_blank"&gt;Forrester blogs&lt;/a&gt;, Eve Mailer has posted a new Venn diagram that compares OAuth, OpenID Connect, and UMA. A number of people contributed to the final form of this one, which we presented in a Google Tech Talk a couple of weeks back. Thanks to all of the following folks (listed in no particular order) for their feedback!&lt;/span&gt;&lt;/div&gt;
&lt;ul style="line-height: 20px; list-style-image: initial; list-style-position: initial; list-style-type: none; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 10px; padding-left: 30px; padding-right: 0px; padding-top: 10px;"&gt;
&lt;li style="list-style-image: initial; list-style-position: initial; list-style-type: circle; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 3px; padding-left: 0px; padding-right: 0px; padding-top: 3px;"&gt;&lt;span class="Apple-style-span" style="color: blue; font-family: Times, 'Times New Roman', serif;"&gt;&lt;a href="http://identitycube.blogspot.com/"&gt;Domenico Catalano&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="list-style-image: initial; list-style-position: initial; list-style-type: circle; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 3px; padding-left: 0px; padding-right: 0px; padding-top: 3px;"&gt;&lt;span class="Apple-style-span" style="color: blue; font-family: Times, 'Times New Roman', serif;"&gt;&lt;a href="https://twitter.com/#!/zer0n1ne"&gt;Justin Richer&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="color: #404040; list-style-image: initial; list-style-position: initial; list-style-type: circle; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 3px; padding-left: 0px; padding-right: 0px; padding-top: 3px;"&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;&lt;a href="http://connectid.blogspot.com/" target="_blank"&gt;Paul Madsen&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="color: #404040; list-style-image: initial; list-style-position: initial; list-style-type: circle; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 3px; padding-left: 0px; padding-right: 0px; padding-top: 3px;"&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;&lt;a href="http://www.thread-safe.com/"&gt;John Bradley&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="color: #404040; list-style-image: initial; list-style-position: initial; list-style-type: circle; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 3px; padding-left: 0px; padding-right: 0px; padding-top: 3px;"&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;&lt;a href="http://www.findthomas.net/blog/"&gt;Thomas Hardjono&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="color: #404040; list-style-image: initial; list-style-position: initial; list-style-type: circle; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 3px; padding-left: 0px; padding-right: 0px; padding-top: 3px;"&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;&lt;a href="http://smartjisc.wordpress.com/"&gt;Maciej Machulak&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;span class="Apple-style-span" style="color: #404040; font-family: Times, 'Times New Roman', serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;John B.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class="Apple-style-span" style="color: #333333; line-height: 19px;"&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;&lt;a href="https://twitter.com/#!/ve7jtb"&gt;@ve7jtb&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2234555082540809604-2419160543229790926?l=www.thread-safe.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Thread-Safe?a=ie99Xu6Ccyg:5EA11JuDZy4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Thread-Safe?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Thread-Safe?a=ie99Xu6Ccyg:5EA11JuDZy4:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Thread-Safe?i=ie99Xu6Ccyg:5EA11JuDZy4:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Thread-Safe?a=ie99Xu6Ccyg:5EA11JuDZy4:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Thread-Safe?i=ie99Xu6Ccyg:5EA11JuDZy4:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Thread-Safe?a=ie99Xu6Ccyg:5EA11JuDZy4:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Thread-Safe?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.thread-safe.com/feeds/2419160543229790926/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.thread-safe.com/2012/03/new-venn-of-access-control-for-api.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2234555082540809604/posts/default/2419160543229790926?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2234555082540809604/posts/default/2419160543229790926?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Thread-Safe/~3/ie99Xu6Ccyg/new-venn-of-access-control-for-api.html" title="A New Venn Of Access Control For The API Economy" /><author><name>John Bradley</name><uri>https://profiles.google.com/113758384073095653585</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-1sJGlVoHT68/AAAAAAAAAAI/AAAAAAAAABY/rJ6sSi8Ds2w/s512-c/photo.jpg" /></author><thr:total>0</thr:total><georss:featurename>Gaithersburg, MD, USA</georss:featurename><georss:point>39.1434406 -77.2013705</georss:point><georss:box>39.0941806 -77.2803345 39.192700599999995 -77.1224065</georss:box><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-sa/2.0/" /><feedburner:origLink>http://www.thread-safe.com/2012/03/new-venn-of-access-control-for-api.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0ICRn0zcSp7ImA9WhVTFk8.&quot;"><id>tag:blogger.com,1999:blog-2234555082540809604.post-7247421929348288946</id><published>2012-03-01T16:19:00.002-03:00</published><updated>2012-03-01T16:19:27.389-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-03-01T16:19:27.389-03:00</app:edited><title>OpenID Connect Workshop at Paris IETF</title><content type="html">We are having a &lt;a href="http://oic-workshop-ietf-83.eventbrite.com/"&gt;workshop&lt;/a&gt; on Sunday Mar 25, prior to IETF 83.&lt;br /&gt;
&lt;br /&gt;
It will be in Room 243 at&amp;nbsp;&lt;a href="http://g.co/maps/574k5" target="_blank"&gt;Le Palais des Congres de Paris&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Workgroup members and other interested people are welcome to attend.&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://oic-workshop-ietf-83.eventbrite.com/"&gt;Registration is now open&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;The easiest way to monitor progress on the OpenID Connect 1.0 Specification is to join the mailing list at &lt;a href="http://lists.openid.net/mailman/listinfo/openid-specs-ab"&gt;http://lists.openid.net/mailman/listinfo/openid-specs-ab&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Please note that while anyone can join the mailing list as a read-only recipient, posting to the mailing list or actively contributing to the specification itself requires the submission of an IPR Agreement. More information is available at&amp;nbsp;&lt;a href="http://openid.net/intellectual-property"&gt;http://openid.net/intellectual-property&lt;/a&gt;. Make sure to specify the working group as “OpenID AB/Connect”, because this group is a merged working group and both names must be specified.&lt;br /&gt;&lt;br /&gt;The working group specification repository is kept at&amp;nbsp;&lt;a href="http://svn.openid.net/repos/specifications/connect/1.0/"&gt;http://svn.openid.net/repos/specifications/connect/1.0/&lt;/a&gt; . In this repository, only approved sub-versions are committed. If you want to live on the edge, go to &lt;a href="http://hg.openid.net/connect/"&gt;http://hg.openid.net/connect/&lt;/a&gt; where we keep edit by edit commits. These edits make it into SVN once they are approved by the editors.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;
John B.&lt;/div&gt;
&lt;div&gt;
&lt;span class="Apple-style-span" style="color: #333333; font-family: 'Helvetica Neue Light', HelveticaNeue-Light, 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 14px; line-height: 19px;"&gt;&lt;a href="https://twitter.com/#!/ve7jtb" style="-webkit-transition-delay: initial; -webkit-transition-duration: 0.3s; -webkit-transition-property: color; -webkit-transition-timing-function: initial; color: #4ba976; display: inline; font-family: 'Helvetica Neue Light', HelveticaNeue-Light, 'Helvetica Neue', Helvetica, Arial, sans-serif; outline-color: initial; outline-style: none; outline-width: initial; text-decoration: none;" target="_blank"&gt;@ve7jtb&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2234555082540809604-7247421929348288946?l=www.thread-safe.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Thread-Safe?a=yaxZv0fVQqk:DjUkLNqb6i0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Thread-Safe?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Thread-Safe?a=yaxZv0fVQqk:DjUkLNqb6i0:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Thread-Safe?i=yaxZv0fVQqk:DjUkLNqb6i0:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Thread-Safe?a=yaxZv0fVQqk:DjUkLNqb6i0:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Thread-Safe?i=yaxZv0fVQqk:DjUkLNqb6i0:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Thread-Safe?a=yaxZv0fVQqk:DjUkLNqb6i0:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Thread-Safe?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.thread-safe.com/feeds/7247421929348288946/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.thread-safe.com/2012/03/openid-connect-workshop-at-paris-ietf.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2234555082540809604/posts/default/7247421929348288946?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2234555082540809604/posts/default/7247421929348288946?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Thread-Safe/~3/yaxZv0fVQqk/openid-connect-workshop-at-paris-ietf.html" title="OpenID Connect Workshop at Paris IETF" /><author><name>John Bradley</name><uri>https://profiles.google.com/113758384073095653585</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-1sJGlVoHT68/AAAAAAAAAAI/AAAAAAAAABY/rJ6sSi8Ds2w/s512-c/photo.jpg" /></author><thr:total>0</thr:total><georss:featurename>San Francisco, CA, USA</georss:featurename><georss:point>37.7749295 -122.4194155</georss:point><georss:box>37.6745235 -122.577344 37.8753355 -122.261487</georss:box><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-sa/2.0/" /><feedburner:origLink>http://www.thread-safe.com/2012/03/openid-connect-workshop-at-paris-ietf.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkAFRno8cSp7ImA9WhRaFUQ.&quot;"><id>tag:blogger.com,1999:blog-2234555082540809604.post-4795997782671833494</id><published>2012-02-18T16:50:00.001-03:00</published><updated>2012-02-18T16:51:57.479-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-02-18T16:51:57.479-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="dns" /><category scheme="http://www.blogger.com/atom/ns#" term="godaddy" /><category scheme="http://www.blogger.com/atom/ns#" term="domain names" /><title>GoAway GoDaddy</title><content type="html">I have been annoyed by GoDaddy for a while, but they are cheep for registering Domain Names.&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
However there recent positions on &lt;a href="http://godaddyboycott.org/"&gt;SOPA and PIPA&lt;/a&gt;&amp;nbsp;finally pushed me over the edge to moving all of my services from them.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
I also had some domains other places. &amp;nbsp; Looking at the situation I decided to do something I have thought about a number of times in the past.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
I am now a Domain Reseller. &amp;nbsp; Using the back end software from tucows in Toronto, I have set up a &lt;a href="http://wingaa.com/"&gt;site&lt;/a&gt; and moved my own domains to it.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
I know there are other people who probably want to move as well, but find the idea of becoming a registrar a bit more than they want to do for a couple of names.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Others are welcome to use my site &lt;a href="http://wingaa.com/"&gt;wingaa.com&lt;/a&gt;&amp;nbsp;if they are OK with having only a moderately evil Registrar.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
My volume is low so I don't have the lowest prices, &amp;nbsp;but I do provide a full DNS service that is extra many places. &amp;nbsp; No I will not put advertising on your squatted web pages for you. &amp;nbsp;Go someplace else for that.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
If nothing else I feel better having more direct control over my own names.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
At some point I may do some experimentation with adding other hosted identity services for domains. &amp;nbsp;That was our plan at&amp;nbsp;&lt;a href="http://drstarcat.com/archives/19"&gt;ooTao&lt;/a&gt;&amp;nbsp;when I first looks at doing this years ago.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
For the curious&amp;nbsp;Wingaa means 'My name is...' in the &lt;a href="http://en.wikipedia.org/wiki/Central_Alaskan_Yup%27ik_language"&gt;Central Alaskan Yup'ik language&lt;/a&gt;.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
It is a recycled name that Andy Dale and I had as a part of &lt;a href="http://drstarcat.com/archives/19"&gt;ooTao&lt;/a&gt; back in the day.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
John B.&lt;/div&gt;
&lt;div&gt;
&lt;span class="Apple-style-span" style="color: #333333; font-family: 'Helvetica Neue Light', HelveticaNeue-Light, 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 14px; line-height: 19px;"&gt;&lt;a href="https://twitter.com/#!/ve7jtb" style="-webkit-transition-delay: initial; -webkit-transition-duration: 0.3s; -webkit-transition-property: color; -webkit-transition-timing-function: initial; color: #4ba976; display: inline; font-family: 'Helvetica Neue Light', HelveticaNeue-Light, 'Helvetica Neue', Helvetica, Arial, sans-serif; outline-color: initial; outline-style: none; outline-width: initial; text-decoration: none;" target="_blank"&gt;@ve7jtb&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2234555082540809604-4795997782671833494?l=www.thread-safe.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Thread-Safe?a=9O1jxatojUg:Y7j5C9L8txg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Thread-Safe?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Thread-Safe?a=9O1jxatojUg:Y7j5C9L8txg:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Thread-Safe?i=9O1jxatojUg:Y7j5C9L8txg:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Thread-Safe?a=9O1jxatojUg:Y7j5C9L8txg:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Thread-Safe?i=9O1jxatojUg:Y7j5C9L8txg:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Thread-Safe?a=9O1jxatojUg:Y7j5C9L8txg:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Thread-Safe?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.thread-safe.com/feeds/4795997782671833494/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.thread-safe.com/2012/02/goaway-godaddy.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2234555082540809604/posts/default/4795997782671833494?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2234555082540809604/posts/default/4795997782671833494?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Thread-Safe/~3/9O1jxatojUg/goaway-godaddy.html" title="GoAway GoDaddy" /><author><name>John Bradley</name><uri>https://profiles.google.com/113758384073095653585</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-1sJGlVoHT68/AAAAAAAAAAI/AAAAAAAAABY/rJ6sSi8Ds2w/s512-c/photo.jpg" /></author><thr:total>0</thr:total><georss:featurename>Isla de Maipo, Santiago Metropolitan Region, Chile</georss:featurename><georss:point>-33.746456 -70.9</georss:point><georss:box>-33.8520825 -71.0579285 -33.6408295 -70.74207150000001</georss:box><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-sa/2.0/" /><feedburner:origLink>http://www.thread-safe.com/2012/02/goaway-godaddy.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkMFSHg9eCp7ImA9WhRaFUU.&quot;"><id>tag:blogger.com,1999:blog-2234555082540809604.post-8529032693009245429</id><published>2012-02-18T13:45:00.000-03:00</published><updated>2012-02-18T14:00:19.660-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-02-18T14:00:19.660-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="openid" /><category scheme="http://www.blogger.com/atom/ns#" term="identity" /><category scheme="http://www.blogger.com/atom/ns#" term="openid connect" /><title>OpenID Connect Interop in Progress</title><content type="html">&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://self-issued.info/images/osis-logo.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img align="right" alt="OSIS logo" border="0" src="http://self-issued.info/images/osis-logo.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;img alt="OpenID logo" src="http://self-issued.info/images/openid-logo.png" style="text-align: right;" /&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style="color: #555555; font-family: 'Trebuchet MS', Arial, Verdana, serif; font-size: 13px; line-height: 1.75em; margin-bottom: 1em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;
The&amp;nbsp;&lt;a href="http://osis.idcommons.net/wiki/OC3:OpenID_Connect_Interop_3" style="color: #104893; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none;"&gt;Third OpenID Connect Interop&lt;/a&gt;&amp;nbsp;is currently under way – this time based upon&amp;nbsp;&lt;a href="http://www.thread-safe.com/2012/02/openid-connect-approved-as-implementers.html" style="color: #104893; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none;"&gt;approved Implementer’s Drafts&lt;/a&gt;. Currently 7&amp;nbsp;&lt;a href="http://osis.idcommons.net/wiki/Category:OC3_Solution" style="color: #104893; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none;"&gt;implementations&lt;/a&gt;&amp;nbsp;are being tested, with I believe more to be added. The interop is designed to enable people to test the implementations they’ve built against other implementations and verify that specific features that they’ve built are working correctly. This has several benefits: it helps debug implementations, it helps debug the specifications, and it results in greater interoperability among&amp;nbsp;&lt;a href="http://openid.net/connect/" style="color: #104893; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none;"&gt;OpenID Connect&lt;/a&gt;&amp;nbsp;implementations.&lt;/div&gt;
&lt;div style="color: #555555; font-family: 'Trebuchet MS', Arial, Verdana, serif; font-size: 13px; line-height: 1.75em; margin-bottom: 1em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;
As background, like the other&amp;nbsp;&lt;a href="http://osis.idcommons.net/" style="color: #104893; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none;"&gt;OSIS interops&lt;/a&gt;, the OpenID Connect interop is an opportunity for implementers to try their code against one another’s in a systematic way. It is not a conformance test; participants do not “pass” or “fail”. There is no requirement that you must support particular features to participate or that you must participate in all aspects of the interop.&lt;/div&gt;
&lt;div style="color: #555555; font-family: 'Trebuchet MS', Arial, Verdana, serif; font-size: 13px; line-height: 1.75em; margin-bottom: 1em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;
If you’d like to participate in the interop, join the&amp;nbsp;&lt;a href="http://groups.google.com/group/openid-connect-interop?hl=en&amp;amp;pli=1" style="color: #104893; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none;"&gt;OpenID Connect Interop mailing list&lt;/a&gt;&amp;nbsp;and send us a note there saying who your interop contact person will be, the name of your organization (can be an individual), the name of your implementation (can be your name), and a list of the online testing endpoints for your implementation. Testing is performed online on your schedule, with results recorded on the interop wiki. That being said, an&amp;nbsp;&lt;a href="http://openid-rsa-interop.eventbrite.com/" style="color: #104893; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none;"&gt;in-person meeting of interop participants&lt;/a&gt;&amp;nbsp;will also be held on Friday, March 2 in San Francisco (the week of&amp;nbsp;&lt;a href="http://rsaconference.com/events/2012/usa/" style="color: #104893; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none;"&gt;RSA&lt;/a&gt;) for those who are able to attend.&lt;/div&gt;
&lt;div style="color: #555555; font-family: 'Trebuchet MS', Arial, Verdana, serif; font-size: 13px; line-height: 1.75em; margin-bottom: 1em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;
John B.&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #333333; font-family: 'Helvetica Neue Light', HelveticaNeue-Light, 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 14px; line-height: 19px;"&gt;&lt;a href="https://twitter.com/#!/ve7jtb" style="-webkit-transition-delay: initial; -webkit-transition-duration: 0.3s; -webkit-transition-property: color; -webkit-transition-timing-function: initial; color: #4ba976; display: inline; font-family: 'Helvetica Neue Light', HelveticaNeue-Light, 'Helvetica Neue', Helvetica, Arial, sans-serif; outline-color: initial; outline-style: none; outline-width: initial; text-decoration: none;" target="_blank"&gt;@ve7jtb&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2234555082540809604-8529032693009245429?l=www.thread-safe.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Thread-Safe?a=Oot1BfEFDeg:bRa57UcLFVo:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Thread-Safe?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Thread-Safe?a=Oot1BfEFDeg:bRa57UcLFVo:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Thread-Safe?i=Oot1BfEFDeg:bRa57UcLFVo:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Thread-Safe?a=Oot1BfEFDeg:bRa57UcLFVo:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Thread-Safe?i=Oot1BfEFDeg:bRa57UcLFVo:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Thread-Safe?a=Oot1BfEFDeg:bRa57UcLFVo:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Thread-Safe?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.thread-safe.com/feeds/8529032693009245429/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.thread-safe.com/2012/02/openid-connect-interop-in-progress.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2234555082540809604/posts/default/8529032693009245429?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2234555082540809604/posts/default/8529032693009245429?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Thread-Safe/~3/Oot1BfEFDeg/openid-connect-interop-in-progress.html" title="OpenID Connect Interop in Progress" /><author><name>John Bradley</name><uri>https://profiles.google.com/113758384073095653585</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-1sJGlVoHT68/AAAAAAAAAAI/AAAAAAAAABY/rJ6sSi8Ds2w/s512-c/photo.jpg" /></author><thr:total>0</thr:total><georss:featurename>Isla de Maipo, Santiago Metropolitan Region, Chile</georss:featurename><georss:point>-33.746456 -70.9</georss:point><georss:box>-33.8520825 -71.0579285 -33.6408295 -70.74207150000001</georss:box><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-sa/2.0/" /><feedburner:origLink>http://www.thread-safe.com/2012/02/openid-connect-interop-in-progress.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkQAR348cSp7ImA9WhRaFUU.&quot;"><id>tag:blogger.com,1999:blog-2234555082540809604.post-7053431909687622461</id><published>2012-02-16T11:33:00.000-03:00</published><updated>2012-02-18T13:59:06.079-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-02-18T13:59:06.079-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="openid" /><category scheme="http://www.blogger.com/atom/ns#" term="identity" /><category scheme="http://www.blogger.com/atom/ns#" term="openid connect" /><category scheme="http://www.blogger.com/atom/ns#" term="oauth" /><title>OpenID Connect Approved as Implementers Draft</title><content type="html">&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://self-issued.info/images/openid-logo.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img alt="OpenID logo" border="0" src="http://self-issued.info/images/openid-logo.png" style="text-align: right;" /&gt;&lt;/a&gt;&lt;/div&gt;
Thank you to everyone who voted.&lt;br /&gt;
&lt;br /&gt;
&lt;div style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;
&lt;br /&gt;&lt;/div&gt;
The approval of the specifications as an implementers draft is an important step on the road to a final specification.&lt;br /&gt;
&lt;br /&gt;
This serves to lock in the current IPR contributions by all the contributors. &amp;nbsp;This gives initial implementers confidence to start developing code without worrying about IPR issues.&lt;br /&gt;
&lt;br /&gt;
The Vote results were:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Approve (86 votes)&lt;/li&gt;
&lt;li&gt;Disapprove (1 vote)&lt;/li&gt;
&lt;li&gt;Abstain (2 votes)&lt;/li&gt;
&lt;/ul&gt;
Total Votes:&amp;nbsp;91&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
We are now entering a phase of development and &lt;a href="http://osis.idcommons.net/wiki/OC3_OpenID_Connect_Interop_3" target="_blank"&gt;interop testing&lt;/a&gt;.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
There are currently 7 &lt;a href="http://osis.idcommons.net/wiki/Category:OC3_Participant" target="_blank"&gt;participants&lt;/a&gt; testing code and deployments.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
John B.&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #333333; font-family: 'Helvetica Neue Light', HelveticaNeue-Light, 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 14px; line-height: 19px;"&gt;&lt;a href="https://twitter.com/#!/ve7jtb" style="-webkit-transition-delay: initial; -webkit-transition-duration: 0.3s; -webkit-transition-property: color; -webkit-transition-timing-function: initial; color: #4ba976; display: inline; font-family: 'Helvetica Neue Light', HelveticaNeue-Light, 'Helvetica Neue', Helvetica, Arial, sans-serif; outline-color: initial; outline-style: none; outline-width: initial; text-decoration: none;" target="_blank"&gt;@ve7jtb&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2234555082540809604-7053431909687622461?l=www.thread-safe.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Thread-Safe?a=1XLeGfAXbwo:aL3gnBLpwJ8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Thread-Safe?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Thread-Safe?a=1XLeGfAXbwo:aL3gnBLpwJ8:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Thread-Safe?i=1XLeGfAXbwo:aL3gnBLpwJ8:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Thread-Safe?a=1XLeGfAXbwo:aL3gnBLpwJ8:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Thread-Safe?i=1XLeGfAXbwo:aL3gnBLpwJ8:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Thread-Safe?a=1XLeGfAXbwo:aL3gnBLpwJ8:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Thread-Safe?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.thread-safe.com/feeds/7053431909687622461/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.thread-safe.com/2012/02/openid-connect-approved-as-implementers.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2234555082540809604/posts/default/7053431909687622461?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2234555082540809604/posts/default/7053431909687622461?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Thread-Safe/~3/1XLeGfAXbwo/openid-connect-approved-as-implementers.html" title="OpenID Connect Approved as Implementers Draft" /><author><name>John Bradley</name><uri>https://profiles.google.com/113758384073095653585</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-1sJGlVoHT68/AAAAAAAAAAI/AAAAAAAAABY/rJ6sSi8Ds2w/s512-c/photo.jpg" /></author><thr:total>0</thr:total><georss:featurename>Isla de Maipo, Santiago Metropolitan Region, Chile</georss:featurename><georss:point>-33.746456 -70.9</georss:point><georss:box>-33.8520825 -71.0579285 -33.6408295 -70.74207150000001</georss:box><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-sa/2.0/" /><feedburner:origLink>http://www.thread-safe.com/2012/02/openid-connect-approved-as-implementers.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkQDSXszeip7ImA9WhRaFUU.&quot;"><id>tag:blogger.com,1999:blog-2234555082540809604.post-8587072881770865971</id><published>2012-02-10T18:01:00.000-03:00</published><updated>2012-02-18T13:59:38.582-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-02-18T13:59:38.582-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="openid" /><category scheme="http://www.blogger.com/atom/ns#" term="identity" /><category scheme="http://www.blogger.com/atom/ns#" term="openid connect" /><category scheme="http://www.blogger.com/atom/ns#" term="oauth" /><title>More on OAuth implicit flow application vulnerabilities.</title><content type="html">My blogpost last week&amp;nbsp;&lt;a href="http://www.thread-safe.com/2012/01/problem-with-oauth-for-authentication.html" target="_blank"&gt;The problem with OAuth for Authentication&lt;/a&gt;&amp;nbsp;has gotten the attention of some of the apps developers.&lt;br /&gt;
&lt;br /&gt;
Nov Matake &lt;a href="https://twitter.com/#!/nov" target="_blank"&gt;@nov&lt;/a&gt; has filed &lt;a href="https://gist.github.com/1787579" target="_blank"&gt;this issue&lt;/a&gt; with the Apple Security Team regarding iOS applications.&lt;br /&gt;
&lt;br /&gt;
There is a good articles in Japanese at OAuth.jp &amp;nbsp;&lt;a href="http://oauth.jp/oauth-20-implicit-flow" target="_blank"&gt;Damage caused by the Implicit flow login&lt;/a&gt;, and &lt;a href="http://oauth.jp/-ios-sdk" target="_blank"&gt;The problem with the iOS SDK&lt;/a&gt;. &amp;nbsp;Both posts look&amp;nbsp;at current deployed applications and SDK vulnerability to the sort of attack I described.&lt;br /&gt;
&lt;br /&gt;
I will attempt a rough translation for those of you who don't read Japanese.&lt;br /&gt;
&lt;br /&gt;
Premise:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;There is a gaming platform that supports OAuth 2 for authentication.&lt;/li&gt;
&lt;li&gt;There is an attacker who runs a fortune-telling game on a mobile platform.&lt;/li&gt;
&lt;li&gt;Legitimate games are operated on the same platform.&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
Assumption:&lt;/div&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;The game application is not otherwise vulnerable to XSS, CSRF, or session &amp;nbsp;hijacking.&lt;/li&gt;
&lt;li&gt;Both applications are using Oauth 2.0 implicit flow for authentication.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;br /&gt;
Scenario:&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;The attacker running the fortune-telling game gets the user to login.&lt;/li&gt;
&lt;li&gt;Attacker gets access token for Social Network Graph API&lt;/li&gt;
&lt;li&gt;The attacker then uses that access_token to log into the legitimate game by modifying the URI fragment to insert the stolen access_token into the response. &amp;nbsp;&lt;/li&gt;
&lt;li&gt;The attacker now has complete access to the users account on the legitimate game.&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
This scenario is not limited to gains but applies to many mobile applications using OAuth for authentication.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
The reason this works is that the OAuth client has no way in OAuth to tell what client the token was issued to. &amp;nbsp;(In openID connect we use a structured id_token with an audience to protect against this)&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
If the OAuth platform is Facebook there is a way developers can protect themselves. &amp;nbsp;They have a token introspection &amp;nbsp;API that returns your application's client ID.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
End attempt at translation:)&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Sone comments by me.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
This is a example Facebook token introspection request.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Example:&lt;/div&gt;
&lt;blockquote class="tr_bq"&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;https://graph.facebook.com/app?access_token=[The Access Token]&lt;/span&gt;&lt;/blockquote&gt;
&lt;div&gt;
Response:&lt;/div&gt;
&lt;div&gt;
&lt;blockquote&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;{&lt;br /&gt;   "id": "314251861954810",&lt;br /&gt;   "name": "jbradley",&lt;br /&gt;   "link": "https://www.facebook.com/apps/application.php?id=314251861954810",&lt;br /&gt;   "canvas_name": "thread-safe",&lt;br /&gt;   "namespace": "thread-safe",&lt;br /&gt;   "icon_url": "https://s-static.ak.facebook.com/rsrc.php/v1/yT/r/4QVMqOjUhcd.gif",&lt;br /&gt;   "logo_url": "https://s-static.ak.facebook.com/rsrc.php/v1/y_/r/9myDd8iyu0B.gif",&lt;br /&gt;   "daily_active_users": "1",&lt;br /&gt;   "weekly_active_users": "1",&lt;br /&gt;   "monthly_active_users": "1"&lt;br /&gt;}&lt;/span&gt;&lt;/blockquote&gt;
&lt;/div&gt;
&lt;div&gt;
The client checks that the value of id is it's client id and you know the token was intended for you.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
The connect &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;id_token&lt;/span&gt; puts the &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;client_id&lt;/span&gt; in the &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;aud &lt;/span&gt;claim so that the client has it without doing an extra round trip. &amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Example decoded id_token.&lt;/div&gt;
&lt;div&gt;
&lt;blockquote class="tr_bq"&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;TTP/1.1 200 OK&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;Content-Type: application/json&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;{&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;"iss": "http://server.example.com",&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;"user_id": "248289761001",&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;"aud": "&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;314251861954810&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;",&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;"nonce": "n-0S6_WzA2Mj",&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;"exp": 1311281970,&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;"iat": 1311280970&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;}&lt;/span&gt;&lt;/blockquote&gt;
&lt;/div&gt;
&lt;div&gt;
Facebook also has signed_request that can also protect agains this.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
My point is that OAuth 2.0 can be used safely, &amp;nbsp;but it is designed as an authorization protocol. &amp;nbsp;It needs some extension to be used for authentication. &amp;nbsp; &amp;nbsp;The problem is that explaining things like id_tokens or the Facebook token introspection endpoint makes it look more complicated, so people have not been doing it and it seems to have caused some vulnerabilities in applications and frameworks.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
John Bradley&lt;/div&gt;
&lt;div&gt;
&lt;a href="https://twitter.com/#!/ve7jtb" target="_blank"&gt;@ve7jtb&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2234555082540809604-8587072881770865971?l=www.thread-safe.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Thread-Safe?a=q3_An38E4ow:VZMfMJ40h-4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Thread-Safe?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Thread-Safe?a=q3_An38E4ow:VZMfMJ40h-4:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Thread-Safe?i=q3_An38E4ow:VZMfMJ40h-4:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Thread-Safe?a=q3_An38E4ow:VZMfMJ40h-4:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Thread-Safe?i=q3_An38E4ow:VZMfMJ40h-4:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Thread-Safe?a=q3_An38E4ow:VZMfMJ40h-4:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Thread-Safe?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.thread-safe.com/feeds/8587072881770865971/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.thread-safe.com/2012/02/more-on-oauth-implicit-flow-application.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2234555082540809604/posts/default/8587072881770865971?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2234555082540809604/posts/default/8587072881770865971?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Thread-Safe/~3/q3_An38E4ow/more-on-oauth-implicit-flow-application.html" title="More on OAuth implicit flow application vulnerabilities." /><author><name>John Bradley</name><uri>https://profiles.google.com/113758384073095653585</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-1sJGlVoHT68/AAAAAAAAAAI/AAAAAAAAABY/rJ6sSi8Ds2w/s512-c/photo.jpg" /></author><thr:total>0</thr:total><georss:featurename>Isla de Maipo, Santiago Metropolitan Region, Chile</georss:featurename><georss:point>-33.746456 -70.9</georss:point><georss:box>-33.8520825 -71.0579285 -33.6408295 -70.74207150000001</georss:box><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-sa/2.0/" /><feedburner:origLink>http://www.thread-safe.com/2012/02/more-on-oauth-implicit-flow-application.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkYDQX8_cSp7ImA9WhRbF04.&quot;"><id>tag:blogger.com,1999:blog-2234555082540809604.post-6877357263761469941</id><published>2012-02-08T16:42:00.003-03:00</published><updated>2012-02-08T16:42:50.149-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-02-08T16:42:50.149-03:00</app:edited><title>Voting open for openID Connect Implementers Draft</title><content type="html">&lt;span class="Apple-style-span" style="font-family: Helvetica;"&gt;&lt;span&gt;After a 45 Review period, v&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Helvetica;"&gt;&lt;span&gt;oting is now open for the&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Helvetica;"&gt;&lt;a href="https://openid.net/connect/" target="_blank"&gt;OpenID Connect Implementer's Draft&lt;/a&gt;&amp;nbsp;.&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Helvetica;"&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Helvetica;"&gt;&lt;span&gt;Voting is open to all openID Foundation Members.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Helvetica;"&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Helvetica;"&gt;&lt;span&gt;Please register your vote before 2012-02-15.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div style="font-family: Helvetica;"&gt;
&lt;br /&gt;&lt;span&gt;Link:&lt;/span&gt;&lt;br /&gt;&lt;a href="https://openid.net/foundation/members/polls/62" target="_blank"&gt;https://openid.net/foundation/members/polls/62&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;Title:&lt;/span&gt;&lt;br /&gt;&lt;span&gt;OpenID Connect Implementer's Draft&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;Description:&lt;/span&gt;&lt;br /&gt;&lt;span&gt;The OpenID AB+Connect Working Group recommends approval of the following specifications as OpenID Implementer’s Drafts:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="http://openid.net/specs/openid-connect-basic-1_0-15.html" target="_blank"&gt;Basic Client Profile&lt;/a&gt; – Simple self-contained specification for a web-based Relying Party. &amp;nbsp;(This spec contains a subset of the information in Messages and Standard.)&lt;/li&gt;
&lt;li&gt;&lt;a href="http://openid.net/specs/openid-connect-discovery-1_0-07.html" target="_blank"&gt;Discovery&lt;/a&gt; – Defines how user and provider endpoints can be dynamically discovered.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://openid.net/specs/openid-connect-registration-1_0-08.html" target="_blank"&gt;Dynamic Registration&lt;/a&gt; – Defines how clients can dynamically register with OpenID Providers.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://openid.net/specs/openid-connect-messages-1_0-07.html" target="_blank"&gt;Messages&lt;/a&gt; – Defines all the messages that are used in OpenID Connect. &amp;nbsp;(These messages are used by the Standard binding.)&lt;/li&gt;
&lt;li&gt;&lt;a href="http://openid.net/specs/openid-connect-standard-1_0-07.html" target="_blank"&gt;Standard&lt;/a&gt; – Complete HTTP binding of the Messages, for both Relying Parties and OpenID Providers.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://openid.net/specs/oauth-v2-multiple-response-types-1_0-03.html" target="_blank"&gt;Multiple Response Type Encoding&lt;/a&gt; – Registers OAuth 2.0 response_type values used by OpenID Connect.&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;&lt;span&gt;An Implementer’s Draft is a stable version of a specification providing intellectual property protections to implementers of the specification.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;A description of OpenID Connect can be found at&amp;nbsp;&lt;/span&gt;&lt;a href="http://openid.net/connect/" target="_blank"&gt;http://openid.net/connect/&lt;/a&gt;&lt;span&gt;. The working group page is&lt;/span&gt;&lt;a href="http://openid.net/wg/connect/" target="_blank"&gt;http://openid.net/wg/connect/&lt;/a&gt;&lt;span&gt;.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;Available Choices:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;
&lt;li&gt;Approve&lt;/li&gt;
&lt;li&gt;Disapprove&lt;/li&gt;
&lt;li&gt;Abstain&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;&lt;span&gt;Thank you for your participation!&lt;/span&gt;&lt;/div&gt;
&lt;div style="font-family: Helvetica;"&gt;
John Bradley&lt;/div&gt;
&lt;div style="font-family: Helvetica;"&gt;
@VE7JTB&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2234555082540809604-6877357263761469941?l=www.thread-safe.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Thread-Safe?a=3tEdEeKcPaA:Mg1Y4Jwh-I0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Thread-Safe?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Thread-Safe?a=3tEdEeKcPaA:Mg1Y4Jwh-I0:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Thread-Safe?i=3tEdEeKcPaA:Mg1Y4Jwh-I0:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Thread-Safe?a=3tEdEeKcPaA:Mg1Y4Jwh-I0:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Thread-Safe?i=3tEdEeKcPaA:Mg1Y4Jwh-I0:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Thread-Safe?a=3tEdEeKcPaA:Mg1Y4Jwh-I0:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Thread-Safe?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.thread-safe.com/feeds/6877357263761469941/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.thread-safe.com/2012/02/voting-open-for-openid-connect.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2234555082540809604/posts/default/6877357263761469941?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2234555082540809604/posts/default/6877357263761469941?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Thread-Safe/~3/3tEdEeKcPaA/voting-open-for-openid-connect.html" title="Voting open for openID Connect Implementers Draft" /><author><name>John Bradley</name><uri>https://profiles.google.com/113758384073095653585</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-1sJGlVoHT68/AAAAAAAAAAI/AAAAAAAAABY/rJ6sSi8Ds2w/s512-c/photo.jpg" /></author><thr:total>0</thr:total><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-sa/2.0/" /><feedburner:origLink>http://www.thread-safe.com/2012/02/voting-open-for-openid-connect.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0QFR34zfSp7ImA9WhRbFEg.&quot;"><id>tag:blogger.com,1999:blog-2234555082540809604.post-3802766725246178581</id><published>2012-02-04T20:52:00.001-03:00</published><updated>2012-02-05T11:15:16.085-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-02-05T11:15:16.085-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="openid" /><category scheme="http://www.blogger.com/atom/ns#" term="identity" /><category scheme="http://www.blogger.com/atom/ns#" term="openid connect" /><category scheme="http://www.blogger.com/atom/ns#" term="oauth" /><title>Designing a Single Sign-on system using OAuth 2.0</title><content type="html">Lets first consider what a &lt;a href="http://en.wikipedia.org/wiki/Single_sign-on" target="_blank"&gt;Single Sign-on System&lt;/a&gt; is.&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
A SSO system provides access control for multiple independent systems based on a single login.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
This is typically what &lt;a href="http://openid.net/specs/openid-authentication-2_0.html" target="_blank"&gt;openID 2.0&lt;/a&gt; is used for and in many cases &lt;a href="https://developers.facebook.com/docs/guides/web/" target="_blank"&gt;Facebook Connect&lt;/a&gt; or &lt;a href="https://dev.twitter.com/docs/auth/sign-twitter" target="_blank"&gt;Twitter&lt;/a&gt; on the social web.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Lets use a real example, one site I use a lot is &lt;a href="http://tripit.com/" target="_blank"&gt;tripit.com&lt;/a&gt;. &amp;nbsp; They are a excellent example of how a website can take advantage of both web and mobile apps using single sign on and OAuth.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
I login at tripit on the web by clicking a google button to login using openID 2.0 with OAuth 1.1 or a Facebook button to Login with &lt;a href="http://tools.ietf.org/html/ietf-oauth-v2" target="_blank"&gt;OAuth 2.0&lt;/a&gt; and Facebook's &lt;a href="https://developers.facebook.com/docs/reference/api/" target="_blank"&gt;Graph API&lt;/a&gt; extensions.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
I never provide a username and password to &lt;a href="http://www.tripit.com/" target="_blank"&gt;tripit&lt;/a&gt; they let me in based on a statement from a third party that I am logged in to that third party as some particular user.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
This saves me from having to remember yet another username and password. &amp;nbsp;However if that was all there was too it probably they would just ask for a username (email) and password like most other sites.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
However they are taking advantage of the fact that if I use a credential from Facebook or Google they have additional API&amp;nbsp;(&lt;a href="http://en.wikipedia.org/wiki/Application_programming_interface" target="_blank"&gt;Application Programming Interface&lt;/a&gt;) and information that can be linked to my tripit account to make there web site better integrated into my social web activity.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
At Facebook I can grant tripit access to push trip information into my activity stream, &amp;nbsp;and look at my friends list, so that they can notify me when one of my friends joins &lt;a href="http://www.tripit.com/" target="_blank"&gt;tripit&lt;/a&gt;,&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
At Google I can grant tripit access to scan my incoming email for travel itineraries emailed to me when I make a reservation. &amp;nbsp;They can also get access to my portable contacts endpoint and other information if I grant them access.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
All of this additional information &amp;nbsp;that I may grant them access to is what OAuth is used for.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Having worked on protocols like &lt;a href="http://en.wikipedia.org/wiki/Information_Card" target="_blank"&gt;Info Card&lt;/a&gt;&amp;nbsp;for Authentication (Not SSO) to websites is that the lack of access to rich API is what stopped Websites like Tripit from being interested in them. &amp;nbsp; As an aside I think &lt;a href="https://browserid.org/" target="_blank"&gt;Mozilla's &amp;nbsp;Browser-ID&lt;/a&gt;&amp;nbsp; has the same flaw of focusing only on Authentication. &amp;nbsp;It just is not enough any more.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
So for the SSO system I want to design it needs to enable &lt;a href="http://tools.ietf.org/html/ietf-oauth-v2" target="_blank"&gt;OAuth 2.0&lt;/a&gt; access to arbitrary API. &amp;nbsp;I don't want to stifle innovation by presupposing that I know every possible API that is ever going to be invented on the Internet for the rest of time. &amp;nbsp; The API I may want to give a RP access to might be just a stream of my favourite songs, or photos etc.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
The API like&amp;nbsp;&lt;a href="http://SalesForce.com/" target="_blank"&gt;SalesForce.com&lt;/a&gt;&amp;nbsp;and most others already have access tokens that they use. &amp;nbsp; I don't want to start imposing a particular format for access tokens if I am going to be a good citizen and design something that works with existing OAuth protected API.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
The API will have permissions not related to my interactive session with the web site. &amp;nbsp;In the case of tripit when I use my iPhone app to update something in my account, &amp;nbsp;I expect them to be able to push that to my Facebook activity stream without me logging in again with a traditional web browser session for them to get access. (This was referred to as &lt;a href="http://www.thread-safe.com/2012/01/facebook-diverges-from-oauth-20.html" target="_blank"&gt;offline access permission&lt;/a&gt; by Facebook, it is now the default.) &amp;nbsp;While a login session requires the users presence in some way the OAuth activity the user authorizes may be longer lived than the session and require the use of OAuth refresh tokens to control access.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
So as a core design principal I am going to create a SSO profile that works with OAuth 2.0 and interferes as little as possible with access tokens and existing endpoints. &amp;nbsp;I hope that sounds reasonable.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Next we need to consider what we need for the SSO portion of the protocol.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
We defiantly need to know some things (at least in my opinion):&lt;/div&gt;
&lt;div&gt;
&lt;ol&gt;
&lt;li&gt;Who is doing the Authentication of the user and making the assertion about the user.&lt;/li&gt;
&lt;li&gt;Who is the user, some sort of persistent over time user identifier.&lt;/li&gt;
&lt;li&gt;Who is the assertion being made to. &amp;nbsp;This prevents &lt;a href="http://www.thread-safe.com/2012/01/problem-with-oauth-for-authentication.html" target="_blank"&gt;replay of assertions&lt;/a&gt; intended for other clients.&lt;/li&gt;
&lt;li&gt;How long is this assertion good for before the client needs to check if the user is still authenticated.&lt;/li&gt;
&lt;li&gt;A method to link the browser session to the assertion and detect replay attempts.&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
Without those things the Relying Party (RP) or client in OAuth speak can't do a proper job of determining if they can trust the assertion to let the user in.&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
There are some optional things that not every RP is going to want, but some RP are going to really need if they are going to protect themselves and you from hacking.&lt;/div&gt;
&lt;div&gt;
&lt;ol&gt;
&lt;li&gt;Indication of the Authentication context or circumstances. (Were they identity proofed, and did they login with a second factor like a SMS message to there registered phone)&lt;/li&gt;
&lt;li&gt;When did they last do an interactive login(not cookie) if it was 6 days ago the site may elect to have the user go back to there Single Sign-on Provider and re-authenticate in some way to show that they are still the one using the computer.&amp;nbsp;&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
If the RP can get that information we are doing quite well.&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
The next thing we need to figure out is how to ask the SSO/Authorization Provider for the SSO things. &amp;nbsp; For Authorization we have scopes, &amp;nbsp;though not super sophisticated they provide a way to say give me authorization to access some stuff at some endpoint.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
So lets make a scope called &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;authentication-information&lt;/span&gt;&amp;nbsp;(I know it is a bit long, this is an example lighten up) , we define it to be a request to make available a set of claims about the authentication event at a new OAuth protected endpoint we create. &amp;nbsp;Call the new endpoint &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;auth_info_endpoint.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
This keeps us from stepping on other OAuth protected resources. &amp;nbsp;We can pass multiple scopes to the Authorization endpoint in our authorization request so whatever our original scopes were for our protected resource will still work.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
To make this work we need to get two access tokens back from the Authorization endpoint. &amp;nbsp;One that is for our original protected resource that we are not interfering with, and one for the&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;auth_info_endpoint.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
Fortunately OAuth allows us to define new &lt;a href="http://tools.ietf.org/html/draft-ietf-oauth-v2-23#page-59" target="_blank"&gt;response_type&lt;/a&gt;&amp;nbsp;that can return multiple tokens. &amp;nbsp; Currently in preparation for the completion of OAuth and the opening of the response_type registry Facebook and Google authors put together a &lt;a href="http://openid.bitbucket.org/oauth-v2-multiple-response-types-1_0.html" target="_blank"&gt;Multiple Response Type Encoding Practices&lt;/a&gt; registration proposal that we can use.&amp;nbsp; &amp;nbsp;Facebook and Google have already implemented versions of it as part of there OAuth 2 deployments.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
That document defines an additional token that is returned in a parameter called id_token. &amp;nbsp;The requirement is that token provides an assertion about the identity of the resource owner. &amp;nbsp; Remember there is nothing in the actual OAuth 2.0 spec that requires the access_token to in any way identify the resource owner, the resource owner might be someone entirely different than the one granting the client access.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
The nice thing about the new endpoint and token is that we can restrict it so that the resource owner of the endpoint is the person who is being authenticated.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
So lets go through this flow I am proposing.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
The RP(client) makes a request via redirect through the users browser and sets a session cookie in the browser to track the authentication/authorization request.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
They calculate a hash of a session cookie to use in the request.&lt;/div&gt;
&lt;blockquote class="tr_bq"&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;Example SSO/Authorization request.&lt;br /&gt;https://server.example.com/authorize?&lt;br /&gt;response_type=code%20id_token&lt;br /&gt;&amp;amp;client_id=s6BhdRkqt3&lt;br /&gt;&amp;amp;redirect_uri=https%3A%2F%2Fclient.example.com%2Fcb&lt;br /&gt;&amp;amp;scope=&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;authentication-information&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;%20&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; border-collapse: collapse;"&gt;http://www-opensocial.&lt;wbr&gt;&lt;/wbr&gt;googleusercontent.com/api/&lt;wbr&gt;&lt;/wbr&gt;people&lt;/span&gt;&lt;br /&gt;&amp;amp;state=af0ifjsldkj&lt;br /&gt;&amp;amp;nonce=&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;af0ifjsldkj&lt;/span&gt;&lt;/blockquote&gt;
&lt;div&gt;
&amp;nbsp;I am sending the scope for the authentication information and one for Google's portable contacts endpoint as an example. &amp;nbsp;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
The hash we calculated is being sent in both state and nonce that is because some clients are already putting other information in the OAuth state parameter. &amp;nbsp;It may be duplication but I am trying to avoid stepping on existing OAuth elements.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Lets look at the response:&lt;/div&gt;
&lt;blockquote class="tr_bq"&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;HTTP/1.1 302 Found&lt;br /&gt;Location: https://client.example.com/cb#&lt;br /&gt;code=Qcb0Orv1zh30vL1MPRsbm-diHiMwcLyZvn1arpZv-Jxf_11jnpEX3Tgfvk&lt;br /&gt;&amp;amp;id_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC9zZ&lt;br /&gt;XJ2ZXIuZXhhbXBsZS5jb20iLCJ1c2VyX2lkIjoiMjQ4Mjg5NzYxMDAxIiwiYXVkIjoiaHR0c&lt;br /&gt;DpcL1wvY2xpZW50LmV4YW1wbGUuY29tIiwiZXhwIjoxMzExMjgxOTcwfQ.eDesUD0vzDH3T1&lt;br /&gt;G3liaTNOrfaeWYjuRCEPNXVtaazNQ&lt;br /&gt;&amp;amp;state=af0ifjsldkj&lt;/span&gt;&lt;/blockquote&gt;
&lt;div&gt;
We get back three fragment encoded parameters:&lt;/div&gt;
&lt;div&gt;
&lt;ol&gt;
&lt;li&gt;code, &amp;nbsp;for use at the token endpoint to get access and refresh tokens for the portable contacts API.&lt;/li&gt;
&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;id_token,&lt;/span&gt;an access token for the&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;auth_info_endpoint.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;state&lt;/span&gt;, the value we sent in our request to look up who this response is coming from.&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
By looking up state we can find the for the SSO/Authorization server(this could be configured out of band as part of &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;client_id&lt;/span&gt; and &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;client_secret&lt;/span&gt; provisioning).&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
We make a Bearer token request to the&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;auth_info_endpoint&lt;/span&gt;.&amp;nbsp;&lt;/div&gt;
&lt;blockquote class="tr_bq"&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;POST /auth_info_endpoint HTTP/1.1&lt;br /&gt;Host: server.example.com&lt;br /&gt;Content-Type: application/x-www-form-urlencoded&lt;br /&gt;&lt;br /&gt;access_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC9zZX&lt;br /&gt;J2ZXIuZXhhbXBsZS5jb20iLCJ1c2VyX2lkIjoiMjQ4Mjg5NzYxMDAxIiwiYXVkIjoiaHR0cD&lt;br /&gt;pcL1wvY2xpZW50LmV4YW1wbGUuY29tIiwiZXhwIjoxMzExMjgxOTcwfQ.eDesUD0vzDH3T1G&lt;br /&gt;3liaTNOrfaeWYjuRCEPNXVtaazNQ&lt;/span&gt;&lt;/blockquote&gt;
&lt;div&gt;
The response would be a JSON object for simplicity:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;blockquote class="tr_bq"&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;HTTP/1.1 200 OK&lt;br /&gt;Content-Type: application/json&lt;br /&gt;&lt;br /&gt;{&lt;br /&gt; "iss": "https://server.example.com",&lt;br /&gt; "user_id": "248289761001",&lt;br /&gt; "aud": "&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;s6BhdRkqt3&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;",&lt;br /&gt; "nonce": "&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;af0ifjsldkj&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;",&lt;br /&gt; "exp": 1311281970&lt;br /&gt;}&lt;/span&gt;&lt;/blockquote&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
We know have an assertion tied to the browser session via nonce, from a endpoint known to be under the control of the resource owner. &amp;nbsp;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
It contains:&lt;/div&gt;
&lt;div&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;iss&lt;/span&gt;, The identifier for the SSO/Authorization service.&lt;/li&gt;
&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;user_id&lt;/span&gt;, An identifier that is unique for that user in the scope of the SSO/Authorization service.&lt;/li&gt;
&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;aud&lt;/span&gt;, The &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;client_id&lt;/span&gt; from the authentication request. (if it doesn't match the client's &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;client_id&lt;/span&gt;, the token is being replayed.)&lt;/li&gt;
&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;nonce&lt;/span&gt;, To bind the assertion to the browser session and prevent replay.&lt;/li&gt;
&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;exp&lt;/span&gt;, &amp;nbsp;The expired time of the assertion. &amp;nbsp;The RP should request a new id_token from the&amp;nbsp;SSO/Authorization service before this expires.&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;div&gt;
You may ask how the&amp;nbsp;SSO/Authorization service knows the correct RP/Client is getting the &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;id_token&lt;/span&gt;.&lt;/div&gt;
&lt;div&gt;
The RP/Client registers it's &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;redirect_uri&lt;/span&gt; as part of getting it's &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;client_id&lt;/span&gt;. &amp;nbsp;If both endpoints are TLS protected then this is no less secure than the SAML post binding &lt;a href="http://www.thread-safe.com/2012/01/ficam-saml-20-web-sso-profile-updated.html" target="_blank"&gt;FICAM has approved at LoA 3&lt;/a&gt; without encrypting the token end to end.&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
The client has the &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;code&lt;/span&gt; that it can use at the&amp;nbsp;SSO/Authorization service's &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;token_endpoint&lt;/span&gt;.&lt;/div&gt;
&lt;div&gt;
All of the regular API activity at the portable contacts endpoint can occur with OAuth 2.0 exactly the way it would have before we introduced the SSO elements.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
I should point out that Facebook is using a &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;response_type&lt;/span&gt; called &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;a href="http://developers.facebook.com/docs/authentication/signed_request/" target="_blank"&gt;signed_request&lt;/a&gt;&lt;/span&gt; rather than &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;a href="http://tools.ietf.org/html/draft-jones-json-web-token" target="_blank"&gt;id_token&lt;/a&gt;&lt;/span&gt;, &amp;nbsp;they also include &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;code&lt;/span&gt; inside the token, so that you don't need to ask for it separately. &amp;nbsp;If you do ask for &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;code&lt;/span&gt; they do send it back as a parameter.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
As an optimization the client can directly decode and verify both &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;a href="http://tools.ietf.org/html/draft-jones-json-web-token" target="_blank"&gt;id_token&lt;/a&gt;&lt;/span&gt; and &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;signed_request&lt;/span&gt; directly without making a second https request to the SSO/Authorization service.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
If this sounds like a reasonable proposal for a OAuth extension then please have a look at &lt;a href="http://openid.net/specs/openid-connect-basic-1_0.html" target="_blank"&gt;OpenID Connect Basic Client&lt;/a&gt;, it is almost the same as what I have discussed here but adds a user-info endpoint to get additional user profile information.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
OpenID Connect has a &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;check_id&lt;/span&gt; endpoint that works as I have decried taking the &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;id_token&lt;/span&gt; for access. &amp;nbsp;Facebook doesn't currently have a introspection endpoint for &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;signed_request&lt;/span&gt; though it has been talked about. &amp;nbsp;There argument is that the client should just validate the signature and use the token.&lt;/div&gt;
&lt;div&gt;
Both &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;id_token&lt;/span&gt; and &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;signed_request&lt;/span&gt; have a HMAC-SHA256 integrity check generated with the &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;client_password&lt;/span&gt; as the secret by default. &amp;nbsp; That makes it easy for the RP/client to verify. &amp;nbsp;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
However as the client can also create tokens with an equivalent HMAC that prevents them from being trustable by anything other than a token introspection endpoint like the openID Connect &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;check_id&lt;/span&gt; endpoint. &amp;nbsp;In openID 2.0 the association endpoint provided the same introspection for clients unable to verify assertions themselves.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
I hope this gives you another perspective on how openID Connect and other OAuth based SSO protocols can work.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
John B.&lt;br /&gt;
&lt;a href="https://twitter.com/#!/ve7jtb/" target="_blank"&gt;@ve7jtb&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2234555082540809604-3802766725246178581?l=www.thread-safe.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Thread-Safe?a=a8wCIbLDH-s:9v9IFZS9j40:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Thread-Safe?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Thread-Safe?a=a8wCIbLDH-s:9v9IFZS9j40:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Thread-Safe?i=a8wCIbLDH-s:9v9IFZS9j40:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Thread-Safe?a=a8wCIbLDH-s:9v9IFZS9j40:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Thread-Safe?i=a8wCIbLDH-s:9v9IFZS9j40:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Thread-Safe?a=a8wCIbLDH-s:9v9IFZS9j40:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Thread-Safe?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.thread-safe.com/feeds/3802766725246178581/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.thread-safe.com/2012/02/designing-single-sign-on-system-using.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2234555082540809604/posts/default/3802766725246178581?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2234555082540809604/posts/default/3802766725246178581?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Thread-Safe/~3/a8wCIbLDH-s/designing-single-sign-on-system-using.html" title="Designing a Single Sign-on system using OAuth 2.0" /><author><name>John Bradley</name><uri>https://profiles.google.com/113758384073095653585</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-1sJGlVoHT68/AAAAAAAAAAI/AAAAAAAAABY/rJ6sSi8Ds2w/s512-c/photo.jpg" /></author><thr:total>0</thr:total><georss:featurename>Isla de Maipo, Santiago Metropolitan Region, Chile</georss:featurename><georss:point>-33.746456 -70.9</georss:point><georss:box>-33.8520825 -71.0579285 -33.6408295 -70.74207150000001</georss:box><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-sa/2.0/" /><feedburner:origLink>http://www.thread-safe.com/2012/02/designing-single-sign-on-system-using.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0EBSXc6fip7ImA9WhRbFEg.&quot;"><id>tag:blogger.com,1999:blog-2234555082540809604.post-6891545280158695766</id><published>2012-02-02T17:25:00.000-03:00</published><updated>2012-02-05T11:20:58.916-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-02-05T11:20:58.916-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="openid" /><category scheme="http://www.blogger.com/atom/ns#" term="ebay" /><category scheme="http://www.blogger.com/atom/ns#" term="identity" /><category scheme="http://www.blogger.com/atom/ns#" term="openid connect" /><category scheme="http://www.blogger.com/atom/ns#" term="oauth" /><title>eBay's project Oreo, would you like milk with your openID?</title><content type="html">eBay has made available a technology preview of their&amp;nbsp;&lt;a href="https://openidconnect.ebay.com/" target="_blank"&gt;Project Oreo&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
OREO is eBay's implementation of the&amp;nbsp;&lt;a href="http://openid.net/connect/"&gt;OpenID Connect Standard&lt;/a&gt;. OREO will become open source in the near future and developers can use it to implement their own OpenID Compliant service.&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
They also have a demo RP setup to use there test IdP at:&lt;/div&gt;
&lt;div&gt;
&lt;a href="https://openidconnect.ebay.com/oreo/start.jsp"&gt;https://openidconnect.ebay.com/oreo/start.jsp&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
This is just one of the &lt;a href="http://osis.idcommons.net/wiki/Category:OC3_Solution" target="_blank"&gt;test systems&lt;/a&gt; people are getting ready to test at the upcoming openID Connect &lt;a href="http://osis.idcommons.net/wiki/OC3_OpenID_Connect_Interop_3" target="_blank"&gt;interop on March 3rd&lt;/a&gt;.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
John B.&lt;br /&gt;
&lt;a href="https://twitter.com/#!/ve7jtb/" target="_blank"&gt;@ve7jtb&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2234555082540809604-6891545280158695766?l=www.thread-safe.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Thread-Safe?a=7EFE__9XYzM:CIIU3abjC18:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Thread-Safe?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Thread-Safe?a=7EFE__9XYzM:CIIU3abjC18:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Thread-Safe?i=7EFE__9XYzM:CIIU3abjC18:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Thread-Safe?a=7EFE__9XYzM:CIIU3abjC18:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Thread-Safe?i=7EFE__9XYzM:CIIU3abjC18:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Thread-Safe?a=7EFE__9XYzM:CIIU3abjC18:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Thread-Safe?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.thread-safe.com/feeds/6891545280158695766/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.thread-safe.com/2012/02/ebays-project-oreo-would-you-like-milk.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2234555082540809604/posts/default/6891545280158695766?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2234555082540809604/posts/default/6891545280158695766?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Thread-Safe/~3/7EFE__9XYzM/ebays-project-oreo-would-you-like-milk.html" title="eBay's project Oreo, would you like milk with your openID?" /><author><name>John Bradley</name><uri>https://profiles.google.com/113758384073095653585</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-1sJGlVoHT68/AAAAAAAAAAI/AAAAAAAAABY/rJ6sSi8Ds2w/s512-c/photo.jpg" /></author><thr:total>0</thr:total><georss:featurename>Lo Herrera 387-605, Isla de Maipo, Santiago Metropolitan Region, Chile</georss:featurename><georss:point>-33.746456 -70.9</georss:point><georss:box>-33.852129000000005 -71.0579285 -33.640783 -70.74207150000001</georss:box><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-sa/2.0/" /><feedburner:origLink>http://www.thread-safe.com/2012/02/ebays-project-oreo-would-you-like-milk.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0QBQH47eSp7ImA9WhRbFEg.&quot;"><id>tag:blogger.com,1999:blog-2234555082540809604.post-2994320855893884296</id><published>2012-02-01T20:19:00.003-03:00</published><updated>2012-02-05T11:15:51.001-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-02-05T11:15:51.001-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="identity" /><category scheme="http://www.blogger.com/atom/ns#" term="openid connect" /><category scheme="http://www.blogger.com/atom/ns#" term="oauth" /><title>Why we need a id_token in openID Connect &amp; Facebook Connect</title><content type="html">Early in the requirements phase of &lt;a href="http://openid.net/connect/" target="_blank"&gt;openID Connect&lt;/a&gt; design one of the inputs was that websites need fast login. &amp;nbsp;Users apparently abandon the login process if it looks like there browser redirect is taking too long.&lt;br /&gt;
&lt;br /&gt;
Facebook presented timing information that to be widely accepted openID connect would need to deliver a verifiable &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;user_id&lt;/span&gt; as part of the initial response. &amp;nbsp;That way the web site can verify the &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;user_id&lt;/span&gt; and present a welcome screen while it is pulling other information in the back channel.&lt;br /&gt;
&lt;br /&gt;
In order to do the same thing it turned out that Facebook is doing some undocumented things in the client code it delivers to web sites. &lt;br /&gt;
&lt;br /&gt;
They are using a OAuth 2.0 response_type called signed_request. &amp;nbsp;This returns a signed JSON object in the URI fragment.&lt;br /&gt;
&lt;br /&gt;
An example OAuth request:&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;https://www.facebook.com/dialog/oauth?&lt;br /&gt;client_id=314251861954810&lt;br /&gt;&amp;amp;redirect_uri=http%3A%2F%2Ftest-id.org/&lt;br /&gt;&amp;amp;response_type=signed-request&lt;/span&gt;&lt;/blockquote&gt;
The Response:&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;http://test-id.org/#signed_request=tr0ZF2hnsqGuL3pKxUTZZYL6pCK4VKplKhop7BnIup0.eyJhbGdvcml0aG0iOiJITUFDLVNIQTI1NiIsImNvZGUiOiJBUURzSFBLcEVwRmpWb0pnbFZqcS00dWk5MThwUWRRVTdPRjZZMTFXajZxOUFnWUdhYUhxU1VlcWNpX0VyZHRTakJramNzc2VjcnRvQzRyU3l2TVdVR0NidXpXV2dLeFNCSkJSeHBRbmxrMTB5Ty1TN3hWc2Z0MUwtVEFxNWplbThiOWlKRW1RaFhsVW1OM0hTNWR4TFJLc3hrajJCT3ZDa1YyQ1ZsYkpwOGRMU1V2TWtLb1ZnbGtZRnQ1N0k5eE5kZnciLCJpc3N1ZWRfYXQiOjEzMjgxMjc4NzAsInVzZXJfaWQiOiI2MTQzNDU0NDkifQ&amp;nbsp;&lt;/span&gt;&lt;/blockquote&gt;
The base64 decoded &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;signed_request&lt;/span&gt;:&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;{&lt;br /&gt;"algorithm":"HMAC-SHA256","code":"AQDsHPKpEpFjVoJglVjq-4ui918pQdQU7OF6Y11Wj6q9AgYGaaHqSUeqci_ErdtSjBkjcssecrtoC4rSyvMWUGCbuzWWgKxSBJBRxpQnlk10yO-S7xVsft1L[...]",&lt;br /&gt; "issued_at":1328127870,&lt;br /&gt;"user_id":"614345449"&lt;br /&gt;}&lt;/span&gt;&lt;/blockquote&gt;
&lt;div&gt;
&lt;div&gt;
Everything after the period in the token is base64 decoded then you perform a HMAC of the base64 encoded &amp;nbsp;version using &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;algorithm&lt;/span&gt;&amp;nbsp;and your client password. &amp;nbsp;The result is the value encoded before the period. &lt;br /&gt;
&lt;br /&gt;
The Facebook Java Script verifies the token and sets the &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;user_id&lt;/span&gt; as a cookie in the users browser. &amp;nbsp;It also extracts the &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;code&lt;/span&gt;&amp;nbsp;and gives it to the Web server to exchange at the token endpoint for a &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;access_token&lt;/span&gt;.&lt;br /&gt;
&lt;br /&gt;
Token Endpoint Request:&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;https://graph.facebook.com/oauth/access_token?client_id=314251861954810&amp;amp;redirect_uri=http%3A%2F%2Ftest-id.org/&amp;amp;client_secret=b80c53ef7fcb1363a3ba9a&amp;amp;code=AQDfxYh0xSroZZgpk23rYsCOSrCQV7B3M7ABNHw[...]&lt;/span&gt;&lt;/blockquote&gt;
Token Endpoint Response:&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;access_token=AAEdz3aaEPoBALt9n4sDni6inzlZzVFlfleyFtloUJKVC2fdLlO0xvdeG9&lt;br /&gt;&amp;amp;expires=5178704&lt;/span&gt;&lt;/blockquote&gt;
&lt;br /&gt;
Facebook is also supporting multiple response types such as:&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;https://www.facebook.com/dialog/oauth?&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;client_id=314251861954810&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;amp;redirect_uri=http%3A%2F%2Ftest-id.org/&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;amp;response_type=signed_request%20token&lt;/span&gt;&lt;/blockquote&gt;
Return both the &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;access_token&lt;/span&gt; and &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;signed_request&lt;/span&gt; in the URI fragment.&lt;br /&gt;
&lt;br /&gt;
We looked at Facebook's solution, but felt it had a number pluses and minuses.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;The Good.&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
It meets the design goal of quick &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;user_id&lt;/span&gt; credential delivery to the web client without a extra round trip.&lt;br /&gt;
&lt;br /&gt;
The &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;signed_request&lt;/span&gt; provides a form of implicit audience restriction based on the symmetric signature to prevent replay of tokens at different endpoints. I discuss this attack in&amp;nbsp;&lt;a href="http://www.thread-safe.com/2012/01/problem-with-oauth-for-authentication.html"&gt;The problem with OAuth for Authentication&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;The Bad.&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
The client needs to implement crypto support to use the&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;signed_request&lt;/span&gt;&amp;nbsp;token.&lt;br /&gt;
&lt;br /&gt;
The client requires two additional network round trips to get the profile information.   The reason for that is the &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;signed_request&lt;/span&gt;&amp;nbsp;contains &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;code&lt;/span&gt; and not &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;token&lt;/span&gt;. &amp;nbsp;This is because the &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;signed_request&lt;/span&gt; token is normally stored in the browser as a cookie.  If the access token were in it there would be a possibility of it leaking.  Leaking a long term access token is much worse than a short term session identifier. &amp;nbsp;This necessitates exchanging &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;code&lt;/span&gt; for the &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;access_token&lt;/span&gt;, and then the &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;access_token&lt;/span&gt; for the user information.&lt;br /&gt;
&lt;br /&gt;
With &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;code&lt;/span&gt; inside &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;signed_request&lt;/span&gt; you wind up storing a much larger cookie than required, &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;code&lt;/span&gt; is very short lived keeping it around in the cookie is not useful.&lt;br /&gt;
&lt;br /&gt;
The format Facebook is using for signing is not a standard it doesn't support signing generic JSON, and it has no support for encryption.  We thought using a IETF standard would be good practice and help with library support.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;b&gt;The solution.&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
We decided to modify signed request token by:&lt;br /&gt;
&lt;div&gt;
&lt;ol&gt;
&lt;li&gt;Removing the &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;code&lt;/span&gt; claim from inside the token.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Add a Audience claim &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;aud&amp;nbsp;&lt;/span&gt;that has the client id the token was issued for. (needed for asymmetric signatures)&lt;/li&gt;
&lt;li&gt;Add a &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;nonce&lt;/span&gt; to prevent replay attacks.&lt;/li&gt;
&lt;li&gt;Add a Issuer &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;iss&amp;nbsp;&lt;/span&gt;claim, this is important once you have more than one provider.&lt;/li&gt;
&lt;li&gt;Use the multi token response type to allow the client to ask for any combination of tokens.&lt;/li&gt;
&lt;li&gt;Provide a convenience endpoint to validate the signed token.&lt;/li&gt;
&lt;li&gt;Use a standards based JSON crypto library &lt;a href="http://tools.ietf.org/wg/jose/" target="_blank"&gt;JOSE&lt;/a&gt; and token format &lt;a href="http://tools.ietf.org/html/draft-jones-json-web-token" target="_blank"&gt;JWT&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Rename the token to &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;id_token&lt;/span&gt; to be clearer on it's purpose.&lt;/li&gt;
&lt;/ol&gt;
&lt;h1 class="title entry-title" style="display: table-cell; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 40px; padding-top: 0px; vertical-align: middle; width: 670px;"&gt;







&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;We think this is a cleaner design. The&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;id_token&lt;/span&gt; is now small and can be used by a session management extension or as a cookie. It can also be asymmetrically signed and encrypted to to the client if required for higher security and confidentiality, without forcing changes to OAuth.&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;In reality they are very similar solutions to the same problem.   Assuming that Facebook adopts the final version of OAuth at some point the only real difference will be the token format,  and they are using separate names so could be implemented in parallel by a provider that wanted to.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span"&gt;The other option.&lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;br /&gt;We considered was using the &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;id_token&lt;/span&gt; as the &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;access_token&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;We rejected that option because: &lt;br /&gt;&lt;ol&gt;
&lt;li&gt;Many providers have existing OAuth token formats for there endpoints that would be difficult to change.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;We don't want long term access tokens being stored in the browser as cookies.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;There are clearly separate recipients of the two tokens overloading the semantics of the two tokens would reduce flexibility and increase complexity in the long term.&amp;nbsp;&lt;/li&gt;
&lt;/ol&gt;
Perhaps not everyone agrees with our choices, however as I pointed out previously you can use openID Connect with only the code flow and it will still work without a is_token. &lt;br /&gt;&lt;br /&gt; &lt;a href="http://openid.net/connect/"&gt;OpenID Connect&lt;/a&gt; is a large spec that may be intimidating to some.  I hope these blog posts help implementors already familiar with Facebook Connect get comfortable with the ideas we are introducing. &lt;br /&gt; &lt;br /&gt;John B.&lt;br /&gt;&lt;a href="https://twitter.com/#!/ve7jtb/" target="_blank"&gt;@ve7jtb&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif; font-size: small;"&gt;&lt;/span&gt;&lt;/h1&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2234555082540809604-2994320855893884296?l=www.thread-safe.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Thread-Safe?a=0oC5VgaZhr4:eh_kyIaRbMU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Thread-Safe?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Thread-Safe?a=0oC5VgaZhr4:eh_kyIaRbMU:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Thread-Safe?i=0oC5VgaZhr4:eh_kyIaRbMU:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Thread-Safe?a=0oC5VgaZhr4:eh_kyIaRbMU:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Thread-Safe?i=0oC5VgaZhr4:eh_kyIaRbMU:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Thread-Safe?a=0oC5VgaZhr4:eh_kyIaRbMU:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Thread-Safe?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.thread-safe.com/feeds/2994320855893884296/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.thread-safe.com/2012/02/why-we-need-idtoken-in-openid-connect.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2234555082540809604/posts/default/2994320855893884296?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2234555082540809604/posts/default/2994320855893884296?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Thread-Safe/~3/0oC5VgaZhr4/why-we-need-idtoken-in-openid-connect.html" title="Why we need a id_token in openID Connect &amp; Facebook Connect" /><author><name>John Bradley</name><uri>https://profiles.google.com/113758384073095653585</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-1sJGlVoHT68/AAAAAAAAAAI/AAAAAAAAABY/rJ6sSi8Ds2w/s512-c/photo.jpg" /></author><thr:total>0</thr:total><georss:featurename>Isla de Maipo, Santiago Metropolitan Region, Chile</georss:featurename><georss:point>-33.746456 -70.9</georss:point><georss:box>-33.8520825 -71.0579285 -33.6408295 -70.74207150000001</georss:box><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-sa/2.0/" /><feedburner:origLink>http://www.thread-safe.com/2012/02/why-we-need-idtoken-in-openid-connect.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0YHRnwycCp7ImA9WhRbFk4.&quot;"><id>tag:blogger.com,1999:blog-2234555082540809604.post-437778161152425309</id><published>2012-01-31T16:33:00.000-03:00</published><updated>2012-02-07T13:12:17.298-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-02-07T13:12:17.298-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="identity" /><category scheme="http://www.blogger.com/atom/ns#" term="openid connect" /><category scheme="http://www.blogger.com/atom/ns#" term="oauth" /><title>Solutions for using OAuth 2.0 for Authentication</title><content type="html">In my previous post, I pointed out that OAuth 2.0 alone is an authorization protocol and can't be safely used on its own without adding additional protocol elements.&lt;br /&gt;
&lt;br /&gt;
Some people might cal it a profile of OAuth, &amp;nbsp;however we generally think of a profile in spec terms as a set of restrictions on a specification. &amp;nbsp;As we need to add things to OAuth we are creating a new protocol using a profile of OAuth 2.0.&lt;br /&gt;
&lt;br /&gt;
In fact if we look at the &lt;a href="http://tools.ietf.org/html/draft-ietf-oauth-v2-23#page-11" target="_blank"&gt;OAuth 2.0 specification&lt;/a&gt; itself we see.&lt;br /&gt;
&lt;blockquote&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;OAuth 2.0 provides a rich authorization framework with well-defined&amp;nbsp;security properties.  However, as a rich and highly extensible&amp;nbsp;framework with many optional components, this specification is likely&amp;nbsp;to produce a wide range of non-interoperable implementations.  In&amp;nbsp;addition, this specification leaves a few required components&amp;nbsp;partially or fully undefined (e.g. client registration, authorization&amp;nbsp;server capabilities, endpoint discovery).&amp;nbsp;&lt;/span&gt;&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;   This protocol was design with the clear expectation that future work&amp;nbsp;will define prescriptive profiles and extensions necessary to achieve&amp;nbsp;full web-scale interoperability.&lt;/span&gt;&lt;/blockquote&gt;
&lt;div&gt;
It also has two incompatible token formats &lt;a href="http://tools.ietf.org/html/draft-ietf-oauth-v2-bearer" target="_blank"&gt;Bearer&lt;/a&gt; and &lt;a href="http://tools.ietf.org/html/draft-hammer-oauth-v2-mac-token" target="_blank"&gt;MAC&lt;/a&gt; that you need to choose between before doing anything useful.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
OAuth 2.0 is at the end of the day a toolkit for an authorization protocol designed to be used by many restful protocols. &amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
So lets consider what the minimum amount we would need to specify to make a secure authentication protocol out of OAuth 2.0.&lt;/div&gt;
&lt;div&gt;
&lt;ol&gt;
&lt;li&gt;You need is a protected resource that the Authorization server is protecting.&lt;/li&gt;
&lt;li&gt;The protected resource needs to make a user identifier available to the client.&lt;/li&gt;
&lt;li&gt;To be interoperable with more than one Identity provider you need some concept of a issuer, &amp;nbsp;the &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;user_id&lt;/span&gt; needs to be scoped to the issuer by the client.&lt;/li&gt;
&lt;li&gt;You need to define some authorization rules to say that only the resource owner can grant access to this endpoint.&lt;/li&gt;
&lt;li&gt;You need some way to prevent clients from replying access tokens at other clients to impersonate the user.&lt;/li&gt;
&lt;li&gt;If the protected resource, or resources have other information you need to define a OAuth &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;scope&lt;/span&gt;&amp;nbsp;to separate out the request to login vs other information or API the endpoints may be able to provide.&lt;/li&gt;
&lt;li&gt;Client must provide replay protection of &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;code&lt;/span&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
For OAuth 2.0 you need to profile some things for interoperability and security.&lt;/div&gt;
&lt;div&gt;
&lt;ol&gt;
&lt;li&gt;Use bearer tokens (this presents &lt;a href="http://hueniverse.com/2010/09/oauth-bearer-tokens-are-a-terrible-idea/" target="_blank"&gt;opportunities for token theft&lt;/a&gt; that need mitigation)&lt;/li&gt;
&lt;li&gt;Require TLS for all IdP endpoints.&lt;/li&gt;
&lt;li&gt;Require client to track audience of access token, &amp;nbsp;e.g. just because bad.com asks for a access token from google that you already have for the user, don't just give it to them.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Require preregistration of all clients, so that they have a &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;client_id&lt;/span&gt; and &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;client_secret&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;Only use the &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;code&lt;/span&gt; (formerly known as client-side) flow.&lt;/li&gt;
&lt;li&gt;Make Cross Site Scripting (XSRF) protection a MUST.&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;div&gt;
This is the bear minimum that you need to do. &amp;nbsp;This is not sufficient for many important use cases like Ajax clients.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
To make a real protocol rather than what is effectively a authentication API for a single provider you need discovery of IdP and user identifiers like email addresses and URI. &amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
So if that were the requirement lets consider if &lt;a href="http://openid.net/connect/" target="_blank"&gt;OpenID Connect 1.0&lt;/a&gt; can be used in this simplest of ways.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;ol&gt;
&lt;li&gt;Connect has a user-info endpoint returning a JSON object.&lt;/li&gt;
&lt;li&gt;The &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;user_id&lt;/span&gt; element is always provided by the user-info endpoint.&lt;/li&gt;
&lt;li&gt;There is a Issuer that can be configured manually for every Oauth Authorization server and user-info endpoint. &amp;nbsp;Connect uses a abstract URI identifier to allow IdP to reconfigure there endpoints without breaking clients.&lt;/li&gt;
&lt;li&gt;Connect only provides authorization tokens for the user-info endpoint if approved by the user, and not by a 3rd party like a friend as in some social graphs.&lt;/li&gt;
&lt;li&gt;If the Connect client can elect to only use the OAuth&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;code&lt;/span&gt; flow.&lt;/li&gt;
&lt;li&gt;Connect defines a scope of openid for authentication, other scopes like &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;profile&lt;/span&gt; provide additional claims about the user.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Connect uses &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;nonce&lt;/span&gt; to provide replay protection of &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;id_tokens&lt;/span&gt;, because it supports multiple flows.  A client just using &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;code&lt;/span&gt; could use that to protect itself from replay.&amp;nbsp;&lt;/li&gt;
&lt;/ol&gt;
The Connect specification profiles OAuth 2.0 using Bearer Tokens in the way described,  but allows for flows other than code via additional mitigation's that I will discuss in a later post.&lt;br /&gt;
&lt;br /&gt;
Connect has dynamic Discovery and Registration, but Clients are not required to support that if they have a set of well known IdP that they are willing to restrict themselves to.&lt;br /&gt;
&lt;br /&gt;
So to use Connect like this you would perform a out of band configuration for each of the IdP that the client intends to use.  Preconfigured buttons for each IdP would be provided for each IDP.&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-Jx2hfNCn5Nk/TzFMx2CuyhI/AAAAAAAAACg/0hL5k6N57kQ/s1600/connect+code+flow.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="451" src="http://3.bp.blogspot.com/-Jx2hfNCn5Nk/TzFMx2CuyhI/AAAAAAAAACg/0hL5k6N57kQ/s640/connect+code+flow.jpg" width="640" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;Diagram by Amanda Anganes (mitre.org)&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
Once the user clicks on a button the client stores some state in the users browser and creates a handle for it(regular OAuth 2.0).&lt;/div&gt;
&lt;br /&gt;
It formulates a 302 redirect request to the known Authorization server endpoint of the issuer with it's client_id, and other OAuth 2.0 parameters.&lt;/div&gt;
&lt;div&gt;
&lt;blockquote class="tr_bq"&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;HTTP/1.1 302 Found&lt;br /&gt;Location: https://server.example.com/op/authorize?&lt;br /&gt;response_type=code&lt;br /&gt;&amp;amp;scope=openid&lt;br /&gt;&amp;amp;nonce=&lt;br /&gt;&amp;amp;state=af0ifjsldkj&lt;br /&gt;&amp;amp;client_id=s6BhdRkqt3&lt;br /&gt;&amp;amp;redirect_uri=https%3A%2F%2Fclient.example.com%2Fcb&lt;/span&gt;&lt;/blockquote&gt;
&lt;/div&gt;
&lt;div&gt;
This is just Oauth 2.0 with the addition of a defined scope and nonce parameter. &amp;nbsp;(nonce is used to provide replay protection for &amp;nbsp;id_tokens, &amp;nbsp;we are not using that in this simple example so the value can be empty)&lt;br /&gt;
&lt;br /&gt;
If the user authorizes the openid grant request the client gets back a standard OAuth 2.0 response:&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;HTTP/1.1 302 Found&lt;br /&gt;Location: https://client.example.com/cb?&lt;br /&gt;code=Qcb0Orv1zh30vL1MPRsbm-diHiMwcLyZvn1arpZv-Jxf_11jnpEX3Tgfvk&lt;br /&gt;&amp;amp;state=af0ifjsldkj&lt;/span&gt;&lt;/blockquote&gt;
In OAuth 2.0 the reply doesn't contain any identifying information about who sent it.&lt;br /&gt;
The client needs to lookup the information for state that it stored in a cookie or someplace else to know who the issuer is and verify that the request to the Authorization server came from it and not via XSRF, logging the user in via a iframe in the background.&lt;br /&gt;
&lt;br /&gt;
Once the client knows who the issuer is they send the code and there client secret to the issuer's Token Endpoint via a direct request from the server.&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;POST /token HTTP/1.1&lt;br /&gt;Host: server.example.com&lt;br /&gt;Content-Type: application/x-www-form-urlencoded&lt;br /&gt;Authorization: Basic czZCaGRSa3F0MzpnWDFmQmF0M2JW&lt;br /&gt;grant_type=authorization_code&amp;amp;code=SplxlOBeZQQYbYS6WxSbIA&lt;br /&gt;&amp;amp;redirect_uri=https%3A%2F%2Fclient.example.com%2Fcb&lt;/span&gt;&lt;/blockquote&gt;
This is standard OAuth 2.0 nothing custom.&lt;br /&gt;
&lt;br /&gt;
The response if the http basic authentication of the client_id and client_password are correct is:&lt;br /&gt;
&lt;blockquote&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;HTTP/1.1 200 OK&lt;br /&gt;Content-Type: application/json&lt;br /&gt;Cache-Control: no-store&lt;br /&gt;Pragma: no-cache&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;"access_token": "SlAV32hkKG",&lt;br /&gt;&amp;nbsp;"token_type": "Bearer",&lt;br /&gt;&amp;nbsp;"refresh_token": "8xLOxBtZp8",&lt;br /&gt;&amp;nbsp;"expires_in": 3600,&lt;br /&gt;&amp;nbsp;"id_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOl&lt;br /&gt;wvXC9zZXJ2ZXIuZXhhbXBsZS5jb20iLCJ1c2VyX2lkIjoiMjQ4Mjg5NzYxMDAxIiwiYXVkIj&lt;br /&gt;oiaHR0cDpcL1wvY2xpZW50LmV4YW1wbGUuY29tIiwiZXhwIjoxMzExMjgxOTcwfQ.eDesUD0&lt;br /&gt;vzDH3T1G3liaTNOrfaeWYjuRCEPNXVtaazNQ"&lt;br /&gt;}&lt;/span&gt;&lt;/blockquote&gt;
This is a standard OAuth response with the addition of a &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;id_token&lt;/span&gt; that we are going to ignore for our simple example. (The id_token is a signed token containing the user_id and other authentication information)&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-G6bVKIuPCWA/TzFNMLq2SzI/AAAAAAAAACo/Gvqjc-a77hk/s1600/connect+user-info+request.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="452" src="http://3.bp.blogspot.com/-G6bVKIuPCWA/TzFNMLq2SzI/AAAAAAAAACo/Gvqjc-a77hk/s640/connect+user-info+request.jpg" width="640" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;Diagram by Amanda Anganes (mitre.org)&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
Once I get my access token I can make a API request to the User Info Endpoint.&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;GET /userinfo?schema=openid HTTP/1.1&lt;br /&gt;Host: server.example.com&lt;br /&gt;Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJ ... fQ.8Gj_-sj ... _X&lt;/span&gt;&lt;/blockquote&gt;
The &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;schema=openid&lt;/span&gt; parameter allows this to be added to existing endpoints that may use different schema by default. &amp;nbsp;It is a fixed parameter that can be hard coded.&lt;br /&gt;
&lt;br /&gt;
The response is going to be:&lt;br /&gt;
&lt;blockquote&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;HTTP/1.1 200 OK&lt;br /&gt;Content-Type: application/json&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;"user_id": "248289761001",&lt;br /&gt;}&lt;/span&gt;&lt;/blockquote&gt;
You now have the &amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;user_id&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp;&lt;/span&gt;and know the issuer so can look the user up and long them in.&lt;br /&gt;
&lt;br /&gt;
If I had also asked for the &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;profile&lt;/span&gt;&amp;nbsp;and &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;email&lt;/span&gt; scopes and the user had granted access my response would look like:&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;HTTP/1.1 200 OK&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;Content-Type: application/json&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;{&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt; "user_id": "248289761001",&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt; "name": "Jane Doe"&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt; "given_name": "Jane",&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt; "family_name": "Doe",&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt; "email": "janedoe@example.com",&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt; "picture": "http://example.com/janedoe/me.jpg"&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;}&lt;/span&gt;&lt;/blockquote&gt;
So would this work with Facebook? &lt;br /&gt;
&lt;br /&gt;
No but mostly because Facebook is not supporting the current draft of &lt;a href="http://tools.ietf.org/html/draft-ietf-oauth-v2" target="_blank"&gt;OAuth 2.0&lt;/a&gt; and &lt;a href="http://tools.ietf.org/html/draft-ietf-oauth-v2-bearer" target="_blank"&gt;OAuth Bearer Token&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
However if they updated there version of OAuth it would work with only changes to the &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;scope&lt;/span&gt; asked for and substituting the appropriate endpoint URI.&lt;br /&gt;
&lt;br /&gt;
If we do the same example with the Facebook version of OAuth it would look like:&lt;br /&gt;
&lt;br /&gt;
Authorization Request:&lt;br /&gt;
&lt;div&gt;
&lt;blockquote class="tr_bq"&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;HTTP/1.1 302 Found&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;Location: https://www.facebook.com/dialog/oauth?&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;response_type=code&lt;br /&gt;&amp;amp;client_id=s6BhdRkqt3&lt;br /&gt;&amp;amp;redirect_uri=https%3A%2F%2Fclient.example.com%2Fcb&lt;/span&gt;&lt;/blockquote&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Difference from Connect - Facebook is not supporting state, so lack XSRF protection and force clients to have a different redirect_uri for each provider. &amp;nbsp;It is not a problem for them as they assume only one identity provider. &amp;nbsp;Sending no &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;scope&lt;/span&gt;&amp;nbsp;asks for a basket of default public claims including &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;user_id&lt;/span&gt;. &amp;nbsp; If you want email or address you need to include a request for those &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;scope&lt;/span&gt; in the same way as Connect.&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
Authorization Response:&lt;/div&gt;
&lt;div&gt;
&lt;blockquote class="tr_bq"&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;HTTP/1.1 302 Found&lt;br /&gt;Location: https://client.example.com/cb?&lt;br /&gt;code=Qcb0Orv1zh30vL1MPRsbm-diHiMwcLyZvn1arpZv-Jxf_11jnpEX3Tgfvk&lt;/span&gt;&lt;/blockquote&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;Difference from Connect - Facebook is not supporting state.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
Access Token Request:&lt;/div&gt;
&lt;/div&gt;
&lt;blockquote class="tr_bq"&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;https://graph.facebook.com/oauth/access_token?&lt;br /&gt; client_id=s6BhdRkqt3&lt;br /&gt;&amp;amp;redirect_uri=https%3A%2F%2Fclient.example.com%2Fcb&lt;br /&gt;&amp;amp;client_secret=YOUR_APP_SECRET&lt;br /&gt; &amp;amp;code=Qcb0Orv1zh30vL1MPRsbm-diHiMwcLyZvn1arpZv-Jxf_11jnpEX3Tgfvk&lt;/span&gt;&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Difference from Connect - Facebook is passing the client secret as a query parameter in a GET, This is not allowed in OAuth 2.0 it MUST be sent as HTTP Basic authentication or in the form body of a post to keep it from leaking. &amp;nbsp;Other than the OAuth difference the request is exactly the same.&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
Access Token Response:&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;blockquote class="tr_bq"&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;HTTP/1.1 200 OK&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;Cache-Control: no-store&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;Pragma: no-cache&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;access_token=SlAV32hkKG&amp;amp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;expires_in=5108&lt;/span&gt;&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Difference from Connect - Honestly I don't know where they came up with URL encoding the response in the body. &amp;nbsp; It has never been in OAuth 2.0 as far as I can tell. &amp;nbsp;They are not returning the token type, it is just so wrong. &amp;nbsp; It is the same info just in a wacky format missing some required parameters.&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
Graph API/Protected resource Request:&lt;/div&gt;
&lt;blockquote class="tr_bq"&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt; https://graph.facebook.com/me?access_token=ACCESS_TOKEN&lt;/span&gt;&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Difference from Connect - Facebook is passing the access token as a query parameter in a GET. &amp;nbsp;Another security no-no highly discouraged by OAuth &lt;a href="http://tools.ietf.org/html/draft-ietf-oauth-v2-bearer-15#page-7" target="_blank"&gt;(See sec 2.3)&lt;/a&gt;. &amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
Graph API/Protected Resource Response:&lt;/div&gt;
&lt;blockquote&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;HTTP/1.1 200 OK&lt;br /&gt;Content-Type: application/json&lt;br /&gt;{&lt;br /&gt; "id": "614345449",&lt;br /&gt; "name": "John Bradley",&lt;br /&gt; "first_name": "John",&lt;br /&gt; "last_name": "Bradley",&lt;br /&gt; "link": "https://www.facebook.com/ve7jtb",&lt;br /&gt; "username": "ve7jtb",&lt;br /&gt; "gender": "male",&lt;br /&gt; "locale": "en_GB"&lt;br /&gt;}&lt;/span&gt;&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Difference from Connect - Facebook is returning more info by default, though it is all public by there definition. &amp;nbsp;Small difference in schema. &amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
The Differences are not that large and mostly related to OAuth itself.&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
This is a very limited set of features. &amp;nbsp; For a real protocol we need to support Java Script clients in the browser, session management, fast login without a second network call.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
I will put together another post on how Connect builds on top of OAuth to securely add these missing features.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
John B.&lt;br /&gt;
&lt;a href="https://twitter.com/#!/ve7jtb/" target="_blank"&gt;@ve7jtb&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2234555082540809604-437778161152425309?l=www.thread-safe.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Thread-Safe?a=9SkJ6D70GZo:1LB9bFfdWwY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Thread-Safe?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Thread-Safe?a=9SkJ6D70GZo:1LB9bFfdWwY:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Thread-Safe?i=9SkJ6D70GZo:1LB9bFfdWwY:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Thread-Safe?a=9SkJ6D70GZo:1LB9bFfdWwY:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Thread-Safe?i=9SkJ6D70GZo:1LB9bFfdWwY:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Thread-Safe?a=9SkJ6D70GZo:1LB9bFfdWwY:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Thread-Safe?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.thread-safe.com/feeds/437778161152425309/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.thread-safe.com/2012/01/solutions-for-using-oauth-20-for.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2234555082540809604/posts/default/437778161152425309?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2234555082540809604/posts/default/437778161152425309?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Thread-Safe/~3/9SkJ6D70GZo/solutions-for-using-oauth-20-for.html" title="Solutions for using OAuth 2.0 for Authentication" /><author><name>John Bradley</name><uri>https://profiles.google.com/113758384073095653585</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-1sJGlVoHT68/AAAAAAAAAAI/AAAAAAAAABY/rJ6sSi8Ds2w/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-Jx2hfNCn5Nk/TzFMx2CuyhI/AAAAAAAAACg/0hL5k6N57kQ/s72-c/connect+code+flow.jpg" height="72" width="72" /><thr:total>0</thr:total><georss:featurename>Isla de Maipo, Santiago Metropolitan Region, Chile</georss:featurename><georss:point>-33.746456 -70.9</georss:point><georss:box>-33.8520825 -71.0579285 -33.6408295 -70.74207150000001</georss:box><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-sa/2.0/" /><feedburner:origLink>http://www.thread-safe.com/2012/01/solutions-for-using-oauth-20-for.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEcFRXc_fSp7ImA9WhRbFk4.&quot;"><id>tag:blogger.com,1999:blog-2234555082540809604.post-6382247507094074451</id><published>2012-01-28T17:53:00.000-03:00</published><updated>2012-02-07T13:26:54.945-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-02-07T13:26:54.945-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="openid" /><category scheme="http://www.blogger.com/atom/ns#" term="identity" /><category scheme="http://www.blogger.com/atom/ns#" term="openid connect" /><category scheme="http://www.blogger.com/atom/ns#" term="oauth" /><title>The problem with OAuth for Authentication.</title><content type="html">I want to thank Nat Sakimura for doing a &lt;a href="http://www.sakimura.org/2012/02/1487/" target="_blank"&gt;version of this post in Japanese&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
In some of the feedback I have gotten on the openID Connect spec, the statement is made that Connect is too complicated. &amp;nbsp; That OAuth 2.0 is all you need to do authentication.&lt;br /&gt;
&lt;br /&gt;
Many point to Identity Providers like Facebook to prove there point. &lt;br /&gt;
&lt;br /&gt;
The problem is that OAuth 2.0 is a Delegated Authorization protocol, and not a Authentication protocol.&lt;br /&gt;
This is generally a four party model &amp;nbsp;User, &amp;nbsp;Website, &amp;nbsp;Authorization server, and Protected resource.&lt;br /&gt;
&lt;br /&gt;
This leads people to make what turn out to be very bad security decisions around authentication when they follow the basic OAuth flow.&lt;br /&gt;
&lt;br /&gt;
Part of this is due to the activities being quite different. &amp;nbsp;OAuth provides an access token to a client, so that it can access a protected resource, based on the permission of the resource owner.&lt;br /&gt;
&lt;br /&gt;
I am going to use Facebook as my example, they are not the only ones to use this pattern, but they are the best well known, so make a easy target.(Sorry guys)&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-94wKvhZfIBg/TzFQpiboMsI/AAAAAAAAACw/5tR2IeI4wGo/s1600/OAuth2-2.0_Diagrams+token+grant.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="452" src="http://3.bp.blogspot.com/-94wKvhZfIBg/TzFQpiboMsI/AAAAAAAAACw/5tR2IeI4wGo/s640/OAuth2-2.0_Diagrams+token+grant.jpg" width="640" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;Diagram by Amanda Anganes (mitre.org)&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
In the Facebook Connect case:&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;The Website (client in OAuth speak) redirects the user to Facebook asking for access to the users portion of the Facebook Graph API endpoint.&lt;/li&gt;
&lt;li&gt;Facebook gets the users Authorization to give that access.&lt;/li&gt;
&lt;li&gt;Facebook then redirects the user back to the client passing an access token in the URL fragment.&lt;/li&gt;
&lt;li&gt;The client performs a GET on the Facebook API endpoint using the access token from step 3.&lt;/li&gt;
&lt;li&gt;The Graph API endpoint returns a JSON object that contains a Facebook &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;user_id&lt;/span&gt; and other public and perhaps private information based on what access the user granted.&lt;/li&gt;
&lt;li&gt;The Website logs in user in as the &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;user_id&lt;/span&gt; from the Graph API endpoint.&lt;/li&gt;
&lt;/ol&gt;
The advantage to this is that anyone can read the instructions on the &lt;a href="http://developers.facebook.com/docs/authentication/" target="_blank"&gt;Facebook Developers Page&lt;/a&gt;&amp;nbsp;and make there website a client.&lt;br /&gt;
&lt;br /&gt;
The disadvantage is that they have no security. &amp;nbsp;Not to put too fine a point on it, &lt;b&gt;they have not Authenticated the User.&lt;/b&gt;&amp;nbsp; They have gotten delegated access to the users information.&lt;br /&gt;
&lt;br /&gt;
Now I know many of you are thinking John is just being overly dramatic. &amp;nbsp;This is just a semantic difference that is only important to obsessives. &amp;nbsp;That may be true, but in this case the difference leads to security holes that even Facebook recognizes and attempts to address in there code if not there documentation.&lt;br /&gt;
&lt;br /&gt;
The problem is that the motivations of the participants are different between Authentication and Authorization. &amp;nbsp;In the authorization case the client can be trusted with the access token because it has no real motivation to share it. &amp;nbsp;They could give it to a third party and also grant them access to the information(protected resource), but they can just share the information anyway if they are bad.&lt;br /&gt;
&lt;br /&gt;
In the above Facebook example there is a naive expectation that the access token is coming from the resource owner. &amp;nbsp;Now in the Facebook case that is true only at the original token issuance.&lt;br /&gt;
The user is handing over access tokens all the time to Websites who use those tokens to access the Facebook Graph API.&lt;br /&gt;
&lt;br /&gt;
The hard reality is that people go to questionable websites. &amp;nbsp;One of the things people do at those sites is use Facebook, openID or Twitter to login. &amp;nbsp;This avoids sharing there email and password with the site.&lt;br /&gt;
&lt;br /&gt;
The problem is that in the authentication case Websites do have a motivation to inappropriately reuse the access token. &amp;nbsp; The token is no longer just for accessing the protected resource, it now carries with it the implicit notion that the possessor is the resource owner. &lt;br /&gt;
&lt;br /&gt;
So we wind up in the situation where any site the user loges into with there Facebook account can impersonate that user at any other site that accepts Facebook logins through the &lt;a href="https://developers.facebook.com/docs/authentication/#client-side-flow" target="_blank"&gt;Client-side Flow&lt;/a&gt;(the default for Facebook). &amp;nbsp;The less common &lt;a href="https://developers.facebook.com/docs/authentication/#server-side-flow" target="_blank"&gt;Server-side Flow&lt;/a&gt;&amp;nbsp;is more secure, but more complicated.&lt;br /&gt;
&lt;br /&gt;
The attack really is quite trivial once you have a access token for the given user, you can cut and paste it into a authorization response in the browser.&lt;br /&gt;
&lt;br /&gt;
Some people believe that using the &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;state&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp;&lt;/span&gt;parameter in OAuth protects against token substitution.&lt;br /&gt;
The only binding a browser cookie to state protects against is Cross Site Scripting. &amp;nbsp; In the attack I am proposing the client generates a legitimate request to a bad user agent that captures it and provides a response that includes &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;state&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt; &lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;unchanged from the request.&lt;/span&gt; There is nothing in the OAuth client-side flow that proves the issuer you sent the request to through the browser ever received it and is the one responding. &amp;nbsp;Only the access_token parameter is generated by the Authorization server, all the other parameters are dropped or echoed back. &amp;nbsp; The client has no way to tell who the authorization server thought it was issuing that &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;access_token&lt;/span&gt; to.&lt;br /&gt;
&lt;br /&gt;
This is a security hole that you can drive a house through. &amp;nbsp; As long as you don't have anything worth protecting at the Client websites it works OK, however OpenID Connect needs to address more than the simple no security use case.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://www.sakimura.org/wp-content/uploads/2012/02/big-hole1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="213" src="http://www.sakimura.org/wp-content/uploads/2012/02/big-hole1.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
Traditionally authentication involves three parties User, Relying party Web Site, and Authentication server. &amp;nbsp;The Authentication server produces some sort of token/assertion for the consumption of the Relying Party (RP). &amp;nbsp;This assertion in &lt;a href="http://openid.net/specs/openid-authentication-2_0.html" target="_blank"&gt;OpenID 2.0&lt;/a&gt; and &lt;a href="http://saml.xml.org/saml-specifications" target="_blank"&gt;SAML 2.0&lt;/a&gt; contain a way to identify who (what RP) the token was created for. &amp;nbsp;The RP only accepts tokens addressed to it. &amp;nbsp;This prevents RP's and others from replaying tokens at different RP.&lt;br /&gt;
&lt;br /&gt;
In OAuth the token is intended for the consumption of the protected resource, and intentionally opaque to the client (RP). &amp;nbsp;The RP has no way to tell from the token if it was generated for it or another RP. &lt;br /&gt;
&lt;br /&gt;
You could say the audience for the OAuth token is the protected resource and the audience for a authentication token is the RP. &amp;nbsp; They are not the same endpoint!&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: large;"&gt;How is Connect Different from plain OAuth?&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
We needed to add the appropriate security and semantics for authentication without compromising OAuth's functionality as a Authorization protocol.&lt;br /&gt;
&lt;br /&gt;
One idea we explored was adding a audience claim to the protected resource(User Info Endpoint).&lt;br /&gt;
This requires communicating the OAuth &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;client_id&lt;/span&gt; from the authorization endpoint to the protected resource. &amp;nbsp;The biggest problem is that the RP is required to do a network operation in the background to get the &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;user_id&lt;/span&gt; before logging the user in. &lt;br /&gt;
&lt;br /&gt;
Many RP including Facebook stated that the extra latency in the network round trip was unacceptable.&lt;br /&gt;
&lt;br /&gt;
Now you are thinking how can that be if that is way Facebook is doing?&lt;br /&gt;
&lt;br /&gt;
Well it turns out that they have some undocumented enhancements to get around the latency issue.&lt;br /&gt;
They are using something they call &lt;a href="https://developers.facebook.com/docs/authentication/signed_request/" target="_blank"&gt;signed-request&lt;/a&gt;. &lt;br /&gt;
&lt;br /&gt;
The idea is that they are encapsulating the OAuth &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;code&lt;/span&gt; token inside a "signed" JSON object.&lt;br /&gt;
&lt;br /&gt;
The SDK they provide is looking for &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;user_id&lt;/span&gt; in the signed request and using that to log the user in before doing any back channel OAuth requests.  This provides an implicit audience restriction by the client verifying a symmetric client password used to generate a HMAC over the token.&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
To be clear Facebook is NOT using the &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;signed_request&lt;/span&gt; as the &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;access_token&lt;/span&gt; they are extracting code  from the signed_request and exchanging that for a &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;access_token&lt;/span&gt; at the Token Endpoint.&lt;br /&gt;
&lt;br /&gt;
One thing &lt;a href="http://tools.ietf.org/html/draft-ietf-oauth-v2"&gt;OAuth 2.0&lt;/a&gt; allows is defining new Response Types.  Based on &lt;a href="http://openid.bitbucket.org/oauth-v2-multiple-response-types-1_0.html"&gt;OAuth 2.0 Multiple Response Type Encoding Practices&lt;/a&gt; by Google and Facebook, we decided to use a separate &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;id_token&lt;/span&gt; parameter in the response rather than overload the &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;access_token&lt;/span&gt;.  That allows the tokens to have separate audience restrictions and formats.  Facebook is doing the same thing but are using &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;signed_request&lt;/span&gt; rather than &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;id_token&lt;/span&gt; as the response type.  We both return the extra token fragment encoded win an additional parameter, in Facebooks case &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;signed_request&lt;/span&gt; and in openID's &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;id_token&lt;/span&gt;.&lt;br /&gt;
&lt;br /&gt;
Connect documents having two tokens one for authentication and one for delegated access to protected resources.   Facebook's documentation on this could use some improvements.&lt;br /&gt;
&lt;br /&gt;
Connect is also using a proposed IETF standard for &lt;a href="http://www.blogger.com/goog_1840417246"&gt;Javascript Object Signing and Encryption &lt;/a&gt;&lt;a href="http://tools.ietf.org/id/draft-ietf-jose"&gt;(JOSE)&lt;/a&gt; rather than proprietary method.  We hope that the availability of standard libraries will improve security, and reduce developer effort.&lt;br /&gt;
&lt;br /&gt;
Connect has had to take into consideration that RP will be dealing with multiple Identity Providers, unlike single provider protocols.&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;
When creating a protocol there is always a balance that is struck between having a single tool that is flexible vs multiple highly optimized ones.  I don't think having each identity provider deploy there own incompatible identity layer on top of OAuth is good for RP or adoption.   We came up with a compromise that is not optimized to only serve a single use case, though we have made the simple social login use case no more complicated for the RP than Facebook Connect.&lt;br /&gt;
&lt;br /&gt;
Many of the optional features for higher security and distributed claims will only be used by those sites that need them,  however it will give a clear migration path for sites starting with social login.&lt;br /&gt;
&lt;br /&gt;
The specification looks a bit scary because for interoperability reasons we need to document the server side.  Nat's blogpost on &lt;a href="http://nat.sakimura.org/2012/01/20/openid-connect-nutshell/"&gt;OpenID Connect in a Nutshell&lt;/a&gt; lays out how simple it is for a RP to implement.&lt;br /&gt;
&lt;br /&gt;
I hope this helps explain some of the value that Connect brings to OAuth.&lt;br /&gt;
&lt;br /&gt;
John B.&lt;br /&gt;
&lt;h1 class="title entry-title" style="color: #333333; display: table-cell; font-weight: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 40px; padding-top: 0px; text-align: left; vertical-align: middle; width: 670px;"&gt;





















&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif; font-size: small;"&gt;&lt;a href="https://twitter.com/#!/ve7jtb/" target="_blank"&gt;@ve7jtb&lt;/a&gt;&lt;/span&gt;&lt;/h1&gt;
&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2234555082540809604-6382247507094074451?l=www.thread-safe.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Thread-Safe?a=KFQNx2baQVw:Lx3lb8jV2yI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Thread-Safe?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Thread-Safe?a=KFQNx2baQVw:Lx3lb8jV2yI:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Thread-Safe?i=KFQNx2baQVw:Lx3lb8jV2yI:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Thread-Safe?a=KFQNx2baQVw:Lx3lb8jV2yI:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Thread-Safe?i=KFQNx2baQVw:Lx3lb8jV2yI:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Thread-Safe?a=KFQNx2baQVw:Lx3lb8jV2yI:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Thread-Safe?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.thread-safe.com/feeds/6382247507094074451/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.thread-safe.com/2012/01/problem-with-oauth-for-authentication.html#comment-form" title="6 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2234555082540809604/posts/default/6382247507094074451?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2234555082540809604/posts/default/6382247507094074451?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Thread-Safe/~3/KFQNx2baQVw/problem-with-oauth-for-authentication.html" title="The problem with OAuth for Authentication." /><author><name>John Bradley</name><uri>https://profiles.google.com/113758384073095653585</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-1sJGlVoHT68/AAAAAAAAAAI/AAAAAAAAABY/rJ6sSi8Ds2w/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-94wKvhZfIBg/TzFQpiboMsI/AAAAAAAAACw/5tR2IeI4wGo/s72-c/OAuth2-2.0_Diagrams+token+grant.jpg" height="72" width="72" /><thr:total>6</thr:total><georss:featurename>Isla de Maipo, Santiago Metropolitan Region, Chile</georss:featurename><georss:point>-33.746456 -70.9</georss:point><georss:box>-33.8520825 -71.0579285 -33.6408295 -70.74207150000001</georss:box><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-sa/2.0/" /><feedburner:origLink>http://www.thread-safe.com/2012/01/problem-with-oauth-for-authentication.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0ANSXk8eip7ImA9WhRbFEg.&quot;"><id>tag:blogger.com,1999:blog-2234555082540809604.post-2604782247661009140</id><published>2012-01-26T14:10:00.000-03:00</published><updated>2012-02-05T11:23:18.772-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-02-05T11:23:18.772-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="openid" /><category scheme="http://www.blogger.com/atom/ns#" term="openid connect" /><title>OpenID Connect Scopes and Claims</title><content type="html">We have had a number of people wanting more information on the use of scopes and claims in openID connect.&lt;br /&gt;
&lt;br /&gt;
Nat Sakimura has put together a &lt;a href="http://nat.sakimura.org/2012/01/26/scopes-and-claims-in-openid-connect/" target="_blank"&gt;blog post &lt;/a&gt;explaining some of of the details.&lt;br /&gt;
&lt;br /&gt;
I am starting to see more people coming up with ways to use the aggregated and distributed clams functionality of &lt;a href="http://openid.net/connect/" target="_blank"&gt;Connect&lt;/a&gt; to solve there use cases.&lt;br /&gt;
&lt;br /&gt;
John B.&lt;br /&gt;
&lt;a href="https://twitter.com/#!/ve7jtb/" target="_blank"&gt;@ve7jtb&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2234555082540809604-2604782247661009140?l=www.thread-safe.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Thread-Safe?a=sW8Ntc-mvy8:oZZqbmtPWh0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Thread-Safe?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Thread-Safe?a=sW8Ntc-mvy8:oZZqbmtPWh0:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Thread-Safe?i=sW8Ntc-mvy8:oZZqbmtPWh0:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Thread-Safe?a=sW8Ntc-mvy8:oZZqbmtPWh0:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Thread-Safe?i=sW8Ntc-mvy8:oZZqbmtPWh0:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Thread-Safe?a=sW8Ntc-mvy8:oZZqbmtPWh0:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Thread-Safe?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.thread-safe.com/feeds/2604782247661009140/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.thread-safe.com/2012/01/openid-connect-scopes-and-claims.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2234555082540809604/posts/default/2604782247661009140?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2234555082540809604/posts/default/2604782247661009140?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Thread-Safe/~3/sW8Ntc-mvy8/openid-connect-scopes-and-claims.html" title="OpenID Connect Scopes and Claims" /><author><name>John Bradley</name><uri>https://profiles.google.com/113758384073095653585</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-1sJGlVoHT68/AAAAAAAAAAI/AAAAAAAAABY/rJ6sSi8Ds2w/s512-c/photo.jpg" /></author><thr:total>0</thr:total><georss:featurename>Isla de Maipo, Santiago Metropolitan Region, Chile</georss:featurename><georss:point>-33.746456 -70.9</georss:point><georss:box>-33.8520825 -71.0579285 -33.6408295 -70.74207150000001</georss:box><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-sa/2.0/" /><feedburner:origLink>http://www.thread-safe.com/2012/01/openid-connect-scopes-and-claims.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C08GQH09cSp7ImA9WhRbFEg.&quot;"><id>tag:blogger.com,1999:blog-2234555082540809604.post-4558668722896979555</id><published>2012-01-26T11:01:00.003-03:00</published><updated>2012-02-05T11:23:41.369-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-02-05T11:23:41.369-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="identity" /><category scheme="http://www.blogger.com/atom/ns#" term="oauth" /><title>Facebook diverges from OAuth 2.0 Specification</title><content type="html">&lt;span class="Apple-style-span" style="font-family: Helvetica;"&gt;Currently the method for OAuth clients to get access to the Facebook graph API while the user is not logged in (to the client), is to ask for a special scope of offline-access.&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Helvetica;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Helvetica;"&gt;If the user grants permission the access token will not expire until the user explicitly removes the permission for the client.&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Helvetica;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Helvetica;"&gt;&lt;a href="https://developers.facebook.com/docs/offline-access-deprecation/" target="_blank"&gt;Facebook has announced&lt;/a&gt; that this feature is changing.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;span class="Apple-style-span" style="font-family: Helvetica;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="font-family: Helvetica;"&gt;
It looks like they are modifying there token endpoint for extending access tokens rather than using refresh tokens.&lt;/div&gt;
&lt;div style="font-family: Helvetica;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="font-family: Helvetica;"&gt;
My read of it is that developers will now get offline access without asking. &amp;nbsp;They just need to refresh the access token every 60 days. &amp;nbsp;&lt;/div&gt;
&lt;div style="font-family: Helvetica;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="font-family: Helvetica;"&gt;
The documentation is typical of Facebook so the actual operation may be different.&amp;nbsp;&lt;/div&gt;
&lt;div style="font-family: Helvetica;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="font-family: Helvetica;"&gt;
Using the 'code token' return type with a refresh token would have been OAuth 2.0 compliant.&lt;/div&gt;
&lt;div style="font-family: Helvetica;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="font-family: Helvetica;"&gt;
They seem to have decided to extend OAuth 2.0 in a custom way rather than using a core feature.&lt;/div&gt;
&lt;div style="font-family: Helvetica;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="font-family: Helvetica;"&gt;
I expect the media may jump on the privacy issue.&lt;/div&gt;
&lt;div style="font-family: Helvetica;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="font-family: Helvetica;"&gt;
This may also be part of the normal strategy of announcing something then balking off if people &amp;nbsp;object.&lt;/div&gt;
&lt;div style="font-family: Helvetica;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="font-family: Helvetica;"&gt;
I am philosophical about Facebooks privacy. &amp;nbsp;My real concern with this is the divergence from the OAuth 2.0 specification.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
John B.&lt;br /&gt;
&lt;a href="https://twitter.com/#!/ve7jtb/" target="_blank"&gt;@ve7jtb&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2234555082540809604-4558668722896979555?l=www.thread-safe.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Thread-Safe?a=w_caNzeraYE:sRGTNlGBalk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Thread-Safe?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Thread-Safe?a=w_caNzeraYE:sRGTNlGBalk:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Thread-Safe?i=w_caNzeraYE:sRGTNlGBalk:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Thread-Safe?a=w_caNzeraYE:sRGTNlGBalk:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Thread-Safe?i=w_caNzeraYE:sRGTNlGBalk:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Thread-Safe?a=w_caNzeraYE:sRGTNlGBalk:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Thread-Safe?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.thread-safe.com/feeds/4558668722896979555/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.thread-safe.com/2012/01/facebook-diverges-from-oauth-20.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2234555082540809604/posts/default/4558668722896979555?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2234555082540809604/posts/default/4558668722896979555?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Thread-Safe/~3/w_caNzeraYE/facebook-diverges-from-oauth-20.html" title="Facebook diverges from OAuth 2.0 Specification" /><author><name>John Bradley</name><uri>https://profiles.google.com/113758384073095653585</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-1sJGlVoHT68/AAAAAAAAAAI/AAAAAAAAABY/rJ6sSi8Ds2w/s512-c/photo.jpg" /></author><thr:total>0</thr:total><georss:featurename>Isla de Maipo, Santiago Metropolitan Region, Chile</georss:featurename><georss:point>-33.746456 -70.9</georss:point><georss:box>-33.8520825 -71.0579285 -33.6408295 -70.74207150000001</georss:box><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-sa/2.0/" /><feedburner:origLink>http://www.thread-safe.com/2012/01/facebook-diverges-from-oauth-20.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C08BR308eSp7ImA9WhRbFEg.&quot;"><id>tag:blogger.com,1999:blog-2234555082540809604.post-7295575605245038811</id><published>2012-01-24T23:41:00.001-03:00</published><updated>2012-02-05T11:24:16.371-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-02-05T11:24:16.371-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="openid" /><category scheme="http://www.blogger.com/atom/ns#" term="identity" /><category scheme="http://www.blogger.com/atom/ns#" term="openid connect" /><title>OpenID Connect in a Nutshell</title><content type="html">&lt;br /&gt;
&lt;div class="MsoNormal" style="font-family: Calibri, sans-serif; font-size: 11pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;
&lt;a href="http://nat.sakimura.org/" style="color: blue; text-decoration: underline;"&gt;Nat Sakimura&lt;/a&gt;&amp;nbsp;has written a valuable post describing&amp;nbsp;&lt;a href="http://nat.sakimura.org/2012/01/20/openid-connect-nutshell/" style="color: blue; text-decoration: underline;"&gt;OpenID Connect in a nutshell&lt;/a&gt;.&amp;nbsp; It shows by example how simple it is for relying parties to use basic&amp;nbsp;&lt;a href="http://openid.net/connect/" style="color: blue; text-decoration: underline;"&gt;OpenID Connect&lt;/a&gt;&amp;nbsp;functionality.&amp;nbsp; If you’re involved in OpenID Connect in any way, or are considering becoming involved, his post is well worth reading.&lt;/div&gt;
&lt;div class="MsoNormal" style="font-family: Calibri, sans-serif; font-size: 11pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="font-family: Calibri, sans-serif; font-size: 11pt; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"&gt;
John B.&lt;br /&gt;
&lt;a href="https://twitter.com/#!/ve7jtb/" target="_blank"&gt;@ve7jtb&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2234555082540809604-7295575605245038811?l=www.thread-safe.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Thread-Safe?a=pXOhtKIzk7I:UfiSwkQZpq8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Thread-Safe?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Thread-Safe?a=pXOhtKIzk7I:UfiSwkQZpq8:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Thread-Safe?i=pXOhtKIzk7I:UfiSwkQZpq8:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Thread-Safe?a=pXOhtKIzk7I:UfiSwkQZpq8:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Thread-Safe?i=pXOhtKIzk7I:UfiSwkQZpq8:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Thread-Safe?a=pXOhtKIzk7I:UfiSwkQZpq8:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Thread-Safe?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.thread-safe.com/feeds/7295575605245038811/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.thread-safe.com/2012/01/openid-connect-in-nutshell.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2234555082540809604/posts/default/7295575605245038811?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2234555082540809604/posts/default/7295575605245038811?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Thread-Safe/~3/pXOhtKIzk7I/openid-connect-in-nutshell.html" title="OpenID Connect in a Nutshell" /><author><name>John Bradley</name><uri>https://profiles.google.com/113758384073095653585</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-1sJGlVoHT68/AAAAAAAAAAI/AAAAAAAAABY/rJ6sSi8Ds2w/s512-c/photo.jpg" /></author><thr:total>0</thr:total><georss:featurename>Isla de Maipo, Santiago Metropolitan Region, Chile</georss:featurename><georss:point>-33.746456 -70.9</georss:point><georss:box>-33.8520825 -71.0579285 -33.6408295 -70.74207150000001</georss:box><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-sa/2.0/" /><feedburner:origLink>http://www.thread-safe.com/2012/01/openid-connect-in-nutshell.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0IDQ3o7fSp7ImA9WhRbFEg.&quot;"><id>tag:blogger.com,1999:blog-2234555082540809604.post-1804401496573172809</id><published>2012-01-19T13:33:00.000-03:00</published><updated>2012-02-05T11:19:32.405-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-02-05T11:19:32.405-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="openid" /><category scheme="http://www.blogger.com/atom/ns#" term="FICAM" /><category scheme="http://www.blogger.com/atom/ns#" term="SAML" /><category scheme="http://www.blogger.com/atom/ns#" term="openid connect" /><title>FICAM SAML 2.0 Web SSO Profile updated</title><content type="html">The updated version of &lt;a href="http://csrc.nist.gov/publications/nistpubs/800-63-1/SP-800-63-1.pdf" target="_blank"&gt;SP-800-63-1&lt;/a&gt; is official as of Dec 2011.&lt;br /&gt;
&lt;br /&gt;
The &lt;a href="http://www.idmanagement.gov/documents/SAML20_Web_SSO_Profile.pdf" target="_blank"&gt;FICAM SAML 2.0 Web SSO Profile&lt;/a&gt;&amp;nbsp;has been updated to reflect some clarifications.&lt;br /&gt;
&lt;br /&gt;
The major change is that SAML assertions using the POST binding are no longer required to be encrypted, as long as all of the endpoints are using TLS.&lt;br /&gt;
&lt;br /&gt;
The relevant section 9.2.1 from&amp;nbsp;&lt;a href="http://csrc.nist.gov/publications/nistpubs/800-63-1/SP-800-63-1.pdf" target="_blank"&gt;SP-800-63-1&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class="section"&gt;
&lt;div class="layoutArea"&gt;
&lt;div class="column"&gt;
&lt;ul style="list-style-type: disc;"&gt;
&lt;li style="font-family: 'SymbolMT'; font-size: 12.000000pt;"&gt;
       &lt;span style="font-family: TimesNewRomanPS; font-size: 12pt; font-style: italic;"&gt;Secondary authenticator capture &lt;/span&gt;&lt;span style="font-family: TimesNewRomanPSMT; font-size: 12pt;"&gt;– To mitigate this threat, adequate
protections shall be in place throughout the lifetime of any secondary
authenticators used in the assertion protocol.
&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: TimesNewRomanPSMT; font-size: 12pt;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;

       &lt;ol style="list-style-type: decimal;"&gt;
&lt;li style="font-family: 'TimesNewRomanPSMT'; font-size: 12.000000pt;"&gt;
         &lt;span style="font-family: TimesNewRomanPSMT; font-size: 12pt;"&gt;In order to protect the secondary authenticator while it is in transit
between the Verifier and the Subscriber, the secondary authenticator shall
be sent via a protected session established during the primary
authentication of the Subscriber using his or her token. This requirement is
the same as the requirement in Section 8, regarding the Authentication
Process, to protect sensitive data (in this case the secondary authenticator)
from session hijacking attacks.
&lt;/span&gt;&lt;br /&gt;

        &lt;/li&gt;
&lt;li style="font-family: 'TimesNewRomanPSMT'; font-size: 12.000000pt;"&gt;
         &lt;span style="font-family: TimesNewRomanPSMT; font-size: 12pt;"&gt;In order to protect the secondary authenticator from capture as it is
submitted to the RP, the secondary authenticator shall be used in an
authentication protocol which protects against eavesdropping and man-in-
the-middle attacks as described in Section 8.&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
There is a second factor with respect to XML encryption to consider here as well.&lt;br /&gt;
&lt;br /&gt;
The commonly &lt;a href="http://www.nds.rub.de/media/nds/veroeffentlichungen/2011/10/22/HowToBreakXMLenc.pdf" target="_blank"&gt;AES-CBC encryption is susceptible to a padding oracle attack&lt;/a&gt;.&lt;br /&gt;
In most SAML implementations without additionally signing and verifying the message, the assertion can be decrypted by an attacker.&lt;br /&gt;
&lt;br /&gt;
Perhaps the more interesting aspect to this change, is that the lack of end to end encryption through the browser was the main reason openID 2.0 was limited to only LoA 1.&lt;br /&gt;
&lt;br /&gt;
At some point FICAM may decide to revisit the existing &lt;a href="http://www.idmanagement.gov/documents/ICAM_OpenID20Profile.pdf" target="_blank"&gt;openID 2.0 profile&lt;/a&gt; and allow it to be used at LoA 2. &lt;br /&gt;
&lt;br /&gt;
I think that the &lt;a href="http://openid.net/specs/openid-connect-basic-1_0.html" target="_blank"&gt;openID Connect Basic client profile&lt;/a&gt;&amp;nbsp; now meets all of the revised requirements for LoA 2 as long as the RP is using TLS. &amp;nbsp; With a very small update it could also be suitable for LoA 3.&lt;br /&gt;
&lt;br /&gt;
The full &lt;a href="http://openid.net/specs/openid-connect-standard-1_0.html" target="_blank"&gt;openID Connect spec&lt;/a&gt; supports end to end encryption with integrity that is not susceptible to the padding oracle attack. &amp;nbsp;It was designed to support profiles with the highest security and privacy requirements.&lt;br /&gt;
&lt;br /&gt;
As a start updating the openID profile would encourage openID providers to start looking at Identity proofing and the other LoA 2 issues as they start planning there migrations to Connect.&lt;br /&gt;
&lt;br /&gt;
John B.&lt;br /&gt;
&lt;a href="https://twitter.com/#!/ve7jtb/" target="_blank"&gt;@ve7jtb&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2234555082540809604-1804401496573172809?l=www.thread-safe.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Thread-Safe?a=0UafPl_eNqc:a6-CAQ0wQeI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Thread-Safe?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Thread-Safe?a=0UafPl_eNqc:a6-CAQ0wQeI:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Thread-Safe?i=0UafPl_eNqc:a6-CAQ0wQeI:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Thread-Safe?a=0UafPl_eNqc:a6-CAQ0wQeI:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Thread-Safe?i=0UafPl_eNqc:a6-CAQ0wQeI:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Thread-Safe?a=0UafPl_eNqc:a6-CAQ0wQeI:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Thread-Safe?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.thread-safe.com/feeds/1804401496573172809/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.thread-safe.com/2012/01/ficam-saml-20-web-sso-profile-updated.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2234555082540809604/posts/default/1804401496573172809?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2234555082540809604/posts/default/1804401496573172809?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Thread-Safe/~3/0UafPl_eNqc/ficam-saml-20-web-sso-profile-updated.html" title="FICAM SAML 2.0 Web SSO Profile updated" /><author><name>John Bradley</name><uri>https://profiles.google.com/113758384073095653585</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-1sJGlVoHT68/AAAAAAAAAAI/AAAAAAAAABY/rJ6sSi8Ds2w/s512-c/photo.jpg" /></author><thr:total>0</thr:total><georss:featurename>Isla de Maipo, Santiago Metropolitan Region, Chile</georss:featurename><georss:point>-33.746456 -70.9</georss:point><georss:box>-33.8520825 -71.0579285 -33.6408295 -70.74207150000001</georss:box><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-sa/2.0/" /><feedburner:origLink>http://www.thread-safe.com/2012/01/ficam-saml-20-web-sso-profile-updated.html</feedburner:origLink></entry><entry><title type="text">Links for 2011-09-13 [del.icio.us]</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Thread-Safe/~3/Btf9vUmuyes/ve7jtb" /><updated>2011-09-14T00:00:00-07:00</updated><id>http://del.icio.us/ve7jtb#2011-09-13</id><content type="html">&lt;ul&gt;
&lt;li&gt;&lt;a href="http://cloud-identity.blogspot.com/2010/12/open-source-identity-management.html"&gt;Cloud Security: Open Source Identity Management Software&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content><feedburner:origLink>http://del.icio.us/ve7jtb#2011-09-13</feedburner:origLink></entry><entry><title type="text">Links for 2011-09-10 [del.icio.us]</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Thread-Safe/~3/cxKDpputWZw/ve7jtb" /><updated>2011-09-11T00:00:00-07:00</updated><id>http://del.icio.us/ve7jtb#2011-09-10</id><content type="html">&lt;ul&gt;
&lt;li&gt;&lt;a href="http://cloud-identity.blogspot.com/2010/12/open-source-identity-management.html"&gt;Cloud Security: Open Source Identity Management Software&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content><feedburner:origLink>http://del.icio.us/ve7jtb#2011-09-10</feedburner:origLink></entry><entry><title type="text">Links for 2011-04-26 [del.icio.us]</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Thread-Safe/~3/jREnLDZnBcc/ve7jtb" /><updated>2011-04-27T00:00:00-07:00</updated><id>http://del.icio.us/ve7jtb#2011-04-26</id><content type="html">&lt;ul&gt;
&lt;li&gt;&lt;a href="http://corp.galois.com/blog/2011/1/5/quick-authentication-using-mobile-devices-and-qr-codes.html"&gt;Galois, Inc - Galois Blog - Quick authentication using mobile devices and QR&amp;nbsp;Codes&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content><feedburner:origLink>http://del.icio.us/ve7jtb#2011-04-26</feedburner:origLink></entry><entry><title type="text">Links for 2011-03-03 [del.icio.us]</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Thread-Safe/~3/u2P_ioYoV9w/ve7jtb" /><updated>2011-03-04T00:00:00-08:00</updated><id>http://del.icio.us/ve7jtb#2011-03-03</id><content type="html">&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.cato-at-liberty.org/terror-arrest-does-not-justify-real-id-revival/"&gt;Terror Arrest Does Not Justify REAL ID Revival | Cato @ Liberty&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content><feedburner:origLink>http://del.icio.us/ve7jtb#2011-03-03</feedburner:origLink></entry><entry><title type="text">Links for 2011-01-12 [del.icio.us]</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Thread-Safe/~3/DBnUDjpp4bs/ve7jtb" /><updated>2011-01-13T00:00:00-08:00</updated><id>http://del.icio.us/ve7jtb#2011-01-12</id><content type="html">&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.huffingtonpost.com/susan-landau/post_1538_b_806394.html"&gt;Susan Landau: NIST Leads the Charge on Online Authentication&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content><feedburner:origLink>http://del.icio.us/ve7jtb#2011-01-12</feedburner:origLink></entry><entry><title type="text">Links for 2010-09-14 [del.icio.us]</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Thread-Safe/~3/brnrg7S0rdI/ve7jtb" /><updated>2010-09-15T00:00:00-07:00</updated><id>http://del.icio.us/ve7jtb#2010-09-14</id><content type="html">&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.barcode.com/Latest/mobio-uses-barcodes-to-enhance-game-day.html"&gt;Mobio Uses Barcodes to Enhance Game-Day | Latest&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content><feedburner:origLink>http://del.icio.us/ve7jtb#2010-09-14</feedburner:origLink></entry><entry><title type="text">Links for 2010-08-25 [del.icio.us]</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Thread-Safe/~3/VccbRwfzcRo/ve7jtb" /><updated>2010-08-26T00:00:00-07:00</updated><id>http://del.icio.us/ve7jtb#2010-08-25</id><content type="html">&lt;ul&gt;
&lt;li&gt;&lt;a href="http://rnd.feide.no/simplesaml/module.php/saml2debug/debug.php"&gt;SAML 2.0 Debugger&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content><feedburner:origLink>http://del.icio.us/ve7jtb#2010-08-25</feedburner:origLink></entry></feed>

