Single Sign On (authentification centralisée) avec RubyCas

RubyCas-Server est une application sinatra qui respecte la norme CAS (central authentification service). Elle permet le single sign on. (Wiki RubyCas : https://github.com/rubycas/rubycas-server/wiki)

RubyCas-server retient le service qui demande l'authentification mais si l'on effectue quelques manipulations (création de compte par exemple), le redirection vers le service ne sera pas effective. Il n'y a pas grand chose à faire pour palier à ce problème. Il suffit d'activer les sessions dans rubycas-server. Comme il s'agit d'une application sinatra il faut activer les sessions manuellement :

dans le fichier lib/casserver/server.rb

enable :sessions

Ensuite ligne 307 (dans la route get "#{uri_path}/login" do) il faut retenir le service et le surcharger en cas d'autres redirections, remplacer la ligne @service = clean_service_url(params['service']) par

if params['service'].nil? or params['service'].empty? then
@service = clean_service_url(session['service'])
else
session['service'] = params['service']
@service = clean_service_url(params['service'])
end

Maintenant vous aurez la redirection vers le service effective même après une création de compte, un mot de passe oublié ou autre !