Interfacer RubyCas avec une application RubyOnRails et Devise

RubyCas gère exclusivement le Single Sign On (SSO). En aucun cas il ne gère la gestion des utilisateurs (création de compte, mot de passe oublié, compte verrouillé, etc) : pour tout ça il faut une application séparée (ou bien le faire soi même sur l'application sinatra rubyCas). Devise est un gem reconnu qui fait tout ça très bien, pas question de réinventer la roue !

Le problème c'est que de base les authenticators (module de rubyCas de connexion aux données) ne permettent pas de se connecter à une application avec Devise. Vous pouvez par exemple vous connecter en direct à la base de donnée pour hasher le mot de passe avec BCrypt et vérifier que le hash corresponde (Module SQLBcrypt, SQL, SQLEncrypted). Certe ça fonctionne mais vous perdez l'intérêt de Devise (verrouillage de compte, compte non confirmé, etc).

Un développeur a codé un authenticator pour Devise (via l'api REST Json), sa pull-request est en attente sur Github mais comme j'en ai besoin je l'ai testé et ça marche. Ça marche bien ! Voici le lien vers le fichier : https://github.com/atyndall/rubycas-server/blob/054f219e0dd544392c913597c1f0275ac7c85af2/lib/casserver/authenticators/remote_devise.rb

Par contre il y a un bug pour devise >= 2.2.0 donc utilisez la dernière en 2.1. Et n'oubliez pas de lire mon commentaire en bas de la pull-request concernant include_root_in_json (ça vous évitera de chercher quelques heures).

Lien vers la pull-request : https://github.com/rubycas/rubycas-server/pull/155