[Documentation] Mail FeedConfluence Syndication Feedhttps://www.esup-portail.org/wikiElements de repères OpenID Connect (vs CAS & shibboleth)Pascal Rigauxtag:www.esup-portail.org,2009:page-588087302-172024-03-26T11:42:56Z2016-11-17T13:08:29Z<div class="feed"> <p>
Page
<b>modifié</b> par
<a href=" https://www.esup-portail.org/wiki/display/~prigaux@univ-paris1.fr
">Pascal Rigaux</a>
</p>
<div style="border-top: 1px solid #ddd; border-bottom: 1px solid #ddd; padding: 10px;">
<h1 id="ElementsderepèresOpenIDConnect(vsCAS&shibboleth)-Authorizationcodeflow"><strong>Authorization code flow</strong></h1><p>C'est le plus classique, proche de CAS et/ou proxy CAS :</p><div class="table-wrap"><table class="wrapped confluenceTable"><tbody><tr><th class="confluenceTh">CAS</th><th class="confluenceTh">OIDC</th><th class="confluenceTh">SAML 2</th></tr><tr><td class="confluenceTd">Server</td><td class="confluenceTd"><p>OP (OpenID Provider) ou Authorization Server</p></td><td class="confluenceTd">IDP</td></tr><tr><td class="confluenceTd">Service</td><td class="confluenceTd"><p>Client ou RP (Relying Party)</p></td><td class="confluenceTd">SP</td></tr><tr><td class="confluenceTd">/login</td><td class="confluenceTd">authorization_endpoint</td><td class="confluenceTd"><br/></td></tr><tr><td class="confluenceTd"><p>/serviceValidate</p><p>/p3/serviceValidate</p></td><td class="confluenceTd">token_endpoint</td><td class="confluenceTd">HTTP Artifact</td></tr><tr><td class="confluenceTd"><br/></td><td class="confluenceTd">userinfo_endpoint</td><td class="confluenceTd">Attribute Query</td></tr><tr><td class="confluenceTd"><strong>Paramètres :</strong></td><td class="confluenceTd"><br/></td><td class="confluenceTd"><br/></td></tr><tr><td class="confluenceTd"><code>service</code></td><td class="confluenceTd"><code>client_id</code> & <code>redirect_uri</code> & <code>state</code></td><td class="confluenceTd"><pre><code>SAMLRequest</code></pre></td></tr><tr><td class="confluenceTd"><code>ticket</code></td><td class="confluenceTd"><p><code>code</code></p></td><td class="confluenceTd">Artifact</td></tr><tr><td class="confluenceTd"><code>gateway</code></td><td class="confluenceTd"><code>prompt=none</code></td><td class="confluenceTd"><code>isPassive</code></td></tr><tr><td class="confluenceTd"><code>renew</code></td><td class="confluenceTd"><code>prompt=login</code></td><td class="confluenceTd"><code>ForceAuthn</code></td></tr><tr><td class="confluenceTd"><br/></td><td class="confluenceTd">acr_values</td><td class="confluenceTd">AuthnContextClassRef</td></tr><tr><td class="confluenceTd"><p><strong>Un peu similaire :</strong></p></td><td class="confluenceTd"><br/></td><td class="confluenceTd"><br/></td></tr><tr><td class="confluenceTd">proxy ticket (valide une fois)</td><td class="confluenceTd">access token (valide un certain temps)</td><td class="confluenceTd"><br/></td></tr><tr><td class="confluenceTd">PGT</td><td class="confluenceTd">refresh token</td><td class="confluenceTd"><br/></td></tr></tbody></table></div><p>Comparé à CAS, le client (service) doit s'enregistrer sur l'IDP pour avoir un "<code>client_id</code>" et un "<code>client_secret</code>".</p><h1 id="ElementsderepèresOpenIDConnect(vsCAS&shibboleth)-Autrescodeflow"><strong>Autres code flow</strong></h1><div class="table-wrap"><table class="wrapped confluenceTable"><thead><tr><th class="confluenceTh">Flow</th><th class="confluenceTh">response_type</th><th colspan="1" class="confluenceTh">response_mode</th></tr></thead><tbody><tr><td class="confluenceTd">Authorization code</td><td class="confluenceTd">"<code>code</code>"</td><td colspan="1" class="confluenceTd"><code>query</code></td></tr><tr><td class="confluenceTd">Implicit</td><td class="confluenceTd">"<code>id_token token</code>" ou "<code>id_token</code>"</td><td colspan="1" class="confluenceTd"><code>fragment</code></td></tr><tr><td class="confluenceTd">Hybrid</td><td class="confluenceTd">"<code>code id_token</code>" ou "<code>code token</code>" ou "<code>code id_token token</code>"</td><td colspan="1" class="confluenceTd"><code>fragment</code></td></tr></tbody></table></div><p>Dans le cas "<code>response_type=id_token</code>", l'<code>id_token</code> contient toutes les <a href="http://openid.net/specs/openid-connect-core-1_0.html#StandardClaims" class="external-link" rel="nofollow">claims</a> demandés par le paramètre "<a href="http://openid.net/specs/openid-connect-core-1_0.html#ScopeClaims" class="external-link" rel="nofollow"><code>scope</code></a>".</p><p>Dans les autres cas, les claims doivent être récupérés en faisant une requête <code>/userinfo</code> avec l'access token.</p><h2 id="ElementsderepèresOpenIDConnect(vsCAS&shibboleth)-response_mode">response_mode</h2><ul><li><code>query</code> (CAS, SAML "HTTP Redirect")</li><li><code>fragment</code> (implicit grant, #token=xxx, était possible avec <a href="https://issues.jasig.org/browse/CAS-923" class="external-link" rel="nofollow">CAS < 3.4.4</a> en mettant un "#" dans l'url "service", mais ne donnait accès qu'au ticket, pas plus)</li><li><code>form_post</code> (SAML "HTTP POST")</li></ul><p>expérimental : </p><ul><li>CORS AJAX</li><li><code>postmessage</code> (notamment chez google en non standard avec <code>redirect_uri=postmessage</code> : <a class="external-link" href="http://www.riskcompletefailure.com/2013/03/postmessage-oauth-20.html" rel="nofollow">http://www.riskcompletefailure.com/2013/03/postmessage-oauth-20.html</a>)</li></ul><p><a class="external-link" href="http://connect2id.com/products/server/docs/config/core#op-authz-responseModes" rel="nofollow">http://connect2id.com/products/server/docs/config/core#op-authz-responseModes</a><br/><a class="external-link" href="https://openid.net/specs/oauth-v2-multiple-response-types-1_0.html" rel="nofollow">https://openid.net/specs/oauth-v2-multiple-response-types-1_0.html</a></p><h1 id="ElementsderepèresOpenIDConnect(vsCAS&shibboleth)-MappingeduPersonattributestoOIDCclaims">Mapping eduPerson attributes to OIDC claims</h1><p><a href="https://wiki.refeds.org/display/GROUPS/Mapping+SAML+attributes+to+OIDC+Claims" class="external-link" rel="nofollow">https://wiki.refeds.org/display/GROUPS/Mapping+SAML+attributes+to+OIDC+Claims</a></p><h2 id="ElementsderepèresOpenIDConnect(vsCAS&shibboleth)-ImplémentationsOpenIDConnect">Implémentations OpenID Connect</h2><h3 id="ElementsderepèresOpenIDConnect(vsCAS&shibboleth)-ApereoCAS">Apereo CAS</h3><p>NB : le userinfo_endpoint est /profile</p><p><br/></p>
</div>
<div style="padding: 10px 0;">
<a href="https://www.esup-portail.org/wiki/pages/viewpage.action?pageId=588087302">Afficher en ligne</a>
·
<a href="https://www.esup-portail.org/wiki/pages/diffpagesbyversion.action?pageId=588087302&revisedVersion=17&originalVersion=16">Afficher les changements en ligne</a>
</div>
</div>Pascal Rigaux2016-11-17T13:08:29Z