SSO protocole CAS

De WIKI-BOKEH
Aller à : navigation, rechercher

Bokeh implémente le protocole d'authentification CAS en version 1, 2 et 3.

Vue d'ensemble[ ]

Tous les Bokeh font serveur CAS. Voir: http://wiki.bokeh-library-portal.org/index.php?title=SSO_protocole_CAS#Services_impl.C3.A9ment.C3.A9s

L'URL CAS sera donc :

  • pour CAS 1.0 : [url du bokeh]/cas-server-v10/
  • pour CAS 2.0 : [url du bokeh]/cas-server/
  • pour CAS 3.0 : [url du bokeh]/cas-server-v3/

Par exemple, dans le cas de la médiathèque de Chauny on aura donc:

Note: nous conseillons fortement que votre site soit sécurisé en HTTPS pour mettre en oeuvre cette authentification.


Central Authentication Service, sa vie, son œuvre[ ]

Un fournisseur de contenu veut déterminer si un internaute a le droit d'accéder à son contenu ET on ne souhaite pas transmettre les identifiants des abonnés à ce fournisseur.

Le fournisseur demande donc à Bokeh qui à son tour demande à l'internaute de s'identifier.

Si l'internaute est correctement identifié dans Bokeh, celui-ci confirme au fournisseur que l'internaute a le droit d'accès.

Dans ce scénario le protocole CAS formalise les échanges entre le fournisseur de contenu et Bokeh.

Configuration[ ]

  1. Fourniture de l'url du serveur CAS Bokeh au service tiers qui doit le configurer dans son système d'information (par ex: https://mon.bokeh.fr/cas-server/)
  2. Le service tiers fournis à son tour une adresse d'accès SSO sur sa plateforme (par ex: https://super.contenu.com/sso?id_bib=12)
  3. Cette url peut être insérée dans un article, un menu, etc... ou être déjà prise en charge par un connecteur Bokeh existant, liste des connecteurs dans l'interface d'administration

Services implémentés[ ]

Version 1.0 Version 2.0 Version 3.0
Url du serveur CAS [url du bokeh]/cas-server-v10/ [url du bokeh]/cas-server/ [url du bokeh]/cas-server-v3/
/login Oui Oui Oui
/logout Oui Oui Oui
/validate Oui Oui Oui
/serviceValidate x Oui Oui
/p3/serviceValidate x x Oui
/proxyValidate x x x
/proxy x x x

Service login[ ]

L'URL [adresse du serveur CAS Bokeh]/login?service=http://mon-service.fr va ouvrir le formulaire d'authentification.
Une fois connecté, redirige sur le service avec le ticket généré en paramètre: http://mon-service.fr?ticket=ST-a245417ccc92331d0c81e2f66632a315

Si on retourne sur la page de login alors qu'on est déjà connecté, redirige automatiquement sur l'URL du service.

Bokeh gère le mode gateway, qui permet de s'affranchir de la phase d'authentification et de rediriger directement vers le service demander. Pour celà il suffit de le passer en paramètre lors de l'appel à /login, exemple:

[adresse du serveur CAS Bokeh]/login?service=http://mon-service.fr&gateway=true

Service logout[ ]

Permet de fermer la session.

Affiche un message précisant que la session a été correctement fermée.

On peut aussi donner le paramètre "url" pour rediriger l'utilisateur.

Service validate[ ]

Le service doit recevoir le ticket en paramètre: [Url du serveur CAS Bokeh]/validate?ticket=ST-a245417ccc92331d0c81e2f66632a315&service=http://mon-service.fr

Version 1.0 Version 2.0 Version 3.0
Format de la réponse Si le ticket est valide, retourne
yes<LF>
nom|login|mail|date de naissance<LF>

sinon

no<LF>
Si le ticket est valide retourne
<cas:serviceResponse xmlns:cas='http://www.yale.edu/tp/cas'>
  <cas:authenticationSuccess>
    <cas:user>[Identifiant unique de l'utilisateur dans Bokeh]</cas:user>
    <cas:proxyGrantingTicket>[Ticket]</cas:proxyGrantingTicket>
  </cas:authenticationSuccess>
</cas:serviceResponse>

sinon

<cas:serviceResponse xmlns:cas="http://www.yale.edu/tp/cas">
  <cas:authenticationFailure code="[INVALID_REQUEST | INVALID_TICKET]">
    Ticket [Ticket] not recognized
  </cas:authenticationFailure>
</cas:serviceResponse>
Si le ticket est valide retourne
<cas:serviceResponse xmlns:cas="http://www.yale.edu/tp/cas">
  <cas:authenticationSuccess>
    <cas:user>10</cas:user>
    <cas:proxyGrantingTicket>ST-a51b1ae3e8b2319bba4e90841a40cf4b</cas:proxyGrantingTicket>
    <cas:attributes>
      <cas:lastname>Pouce</cas:lastname>
      <cas:firstname>Tom</cas:firstname>
      <cas:mail>tom@pouce.fr</cas:mail>
      <cas:expire_at>2020-02-12</cas:expire_at>
      <cas:card_number>123XPE</cas:card_number>
      <cas:ils_number>22345</cas:ils_number>
      <cas:site_code>34</cas:site_code>
      <cas:site_label>Gresivaudan</cas:site_label>
      <cas:birth_date>1978-08-02</cas:birth_date>
      <cas:postal_code>38123</cas:postal_code>
      <cas:city>Laval</cas:city>
      <cas:affiliation>supremes</cas:affiliation>
      <cas:affiliation>temptations</cas:affiliation>
    </cas:attributes>
  </cas:authenticationSuccess>
</cas:serviceResponse>

sinon :

<cas:serviceResponse xmlns:cas="http://www.yale.edu/tp/cas">
   <cas:authenticationFailure code="INVALID_REQUEST">
   </cas:authenticationFailure>
</cas:serviceResponse>

Service proxyValidate[ ]

Même comportement que le service validate.