Bonjour à tous,
je suis sur un projet d'intranet et j'ai plusieures contraintes :
- le developper avec ror uniquement (ok, ce n'est pas une contrainte)
- utiliser un server d'authentification CAS aussi nommé SSO
après quelques recherches voici les liens que j'ai trouvé et suivi :
http://developer.csuchico.edu/2006/0...slogin-plugin/
http://www.javaeye.com/post/311262
j'ai donc installé le plugin
installé jruby-openssl
configuré le nom du serveur
lance mon server web (script/server)
http://localhost:3000
il me renvoi vers la page d'authentification du server cas
une fois le login et pass entrés il me renvoi vers une irl du genre :
http://localhost:3000/?ticket=ST-396...cjFh4nZrUnDcml
avec le numéro du ticket en parametre
en retour j'ai l'erreur suivante :
au lieu de l'index de mon controller
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 OpenSSL::SSL::SSLError in ReferencementController#index No message available
le problème se situe donc du côté de mon application, quelqu'un aurait -il une idée ?
voici mes sources
application.rb
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 class ApplicationController < ActionController::Base include CasLogin protected def is_logged_in return true unless session[:user].nil? if is_authenticated? if is_authorized? return true end end return false end private def is_authorized? session[:user] = User.find_by_uid(get_authenticated_user_id) unless session[:user].nil? return true end flash[:notice] = "User not found" return false end endroutes.rb
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77 require 'net/https' class ActionController::Base # :nodoc: public :redirect_to end module CasLogin # The URL of the CAS server to authenticate against. CAS_SERVER_URL = 'blahblah' # The port the CAS server is running on. PORT = 8080 # Temp Valid User @authenticatedUserID = nil # === Returns # [string] validated UserID def get_authenticated_user_id return @authenticatedUserID end protected # - If no ticket is present; they will be redirected to CAS' login screen # - If they do have a ticket, this will try to verify the validity of the ticket # === Returns # [boolean] on success or failure of validating a ticket def is_authenticated? #:doc: # Get the URL the user is trying to access @service = self.url_for() # If there's a ticket try to validate unless params[:ticket].nil? # validate ticket if is_valid_ticket(@service,params[:ticket]) #redirect_to :controller=>"admin" return true else logger.info "Sorry. Your ticket is no longer valid" return false end else redirect_to "https://#{CAS_SERVER_URL}/cas/login?service=#{@service}" return false end # Default Response return false end private # Validates a CAS ticket with the server. # # === Variables: # [service] The URL of the calling service. # [ticket] The CAS ticket returned by the server in the URL. # # === Returns # [boolean] def is_valid_ticket(service,ticket) #:doc: http = Net::HTTP.new(CAS_SERVER_URL, PORT) http.use_ssl = true response = http.get2("/cas/validate?ticket=#{ticket}&service=#{service}") answer, name = response.body.chomp.split("\n") if answer == "yes" @authenticatedUserID = name return true else return false end end end
referencement_controller.rb
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 map.connect '', :controller => "referencement"
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 class ReferencementController < ApplicationController before_filter :is_logged_in end
Partager