Pages enfant
  • Elements de repères OpenID Connect (vs CAS & shibboleth)

Authorization code flow

C'est le plus classique, proche de CAS et/ou proxy CAS :

CASOIDCSAML 2
Server

OP (OpenID Provider) ou Authorization Server

IDP
Service

Client ou RP (Relying Party)

SP
/loginauthorization_endpoint

/serviceValidate

/p3/serviceValidate

token_endpointHTTP Artifact

userinfo_endpointAttribute Query
Paramètres :

serviceclient_id & redirect_uri & state
SAMLRequest
ticket

code

Artifact
gatewayprompt=noneisPassive
renewprompt=loginForceAuthn

acr_valuesAuthnContextClassRef

Un peu similaire :



proxy ticket (valide une fois)access token (valide un certain temps)
PGTrefresh token

Comparé à CAS, le client (service) doit s'enregistrer sur l'IDP pour avoir un "client_id" et un "client_secret".

Autres code flow

Flowresponse_typeresponse_mode
Authorization code"code"query
Implicit"id_token token" ou "id_token"fragment
Hybrid"code id_token" ou "code token" ou "code id_token token"fragment

Dans le cas "response_type=id_token", l'id_token contient toutes les claims demandés par le paramètre "scope".

Dans les autres cas, les claims doivent être récupérés en faisant une requête /userinfo avec l'access token.

response_mode

  • query (CAS, SAML "HTTP Redirect")
  • fragment (implicit grant, #token=xxx, était possible avec CAS < 3.4.4 en mettant un "#" dans l'url "service", mais ne donnait accès qu'au ticket, pas plus)
  • form_post (SAML "HTTP POST")

expérimental : 

http://connect2id.com/products/server/docs/config/core#op-authz-responseModes
https://openid.net/specs/oauth-v2-multiple-response-types-1_0.html

JWT : id_token vs JWT access token

id_token est un JWT, mais ne doit pas être utilisé ailleurs que dans le client. Donc pas dans l'API.

L'access token peut être un JWT (rfc9068) si on le demande au Authorization Server

  • pour Apereo CAS, c'est avec l'option "jwtAccessToken" de "OAuthRegisteredService"
  • pour Keycloak, il semble que les access token soit toujours des JWT

Cf https://auth0.com/blog/id-token-access-token-what-is-the-difference/

Mapping eduPerson attributes to OIDC claims

https://wiki.refeds.org/display/GROUPS/Mapping+SAML+attributes+to+OIDC+Claims

Implémentations OpenID Connect

Apereo CAS

NB : le userinfo_endpoint est /profile


  • Aucune étiquette