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 !