oa-enterprise 0.2.0.beta4 → 0.2.0.beta5

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1 @@
1
+ require 'omniauth/enterprise'
@@ -28,10 +28,10 @@ module OmniAuth
28
28
 
29
29
  def callback_phase
30
30
  ticket = request.params['ticket']
31
- return fail!(:no_ticket) unless ticket
31
+ return fail!(:no_ticket, 'No CAS Ticket') unless ticket
32
32
  validator = ServiceTicketValidator.new(@configuration, callback_url, ticket)
33
33
  @user_info = validator.user_info
34
- return fail!(:invalid_ticket) if @user_info.nil? || @user_info.empty?
34
+ return fail!(:invalid_ticket, 'Invalid CAS Ticket') if @user_info.nil? || @user_info.empty?
35
35
  super
36
36
  end
37
37
 
@@ -41,7 +41,7 @@ module OmniAuth
41
41
  'extra' => @user_info
42
42
  })
43
43
  end
44
-
44
+
45
45
  end
46
46
  end
47
47
  end
@@ -18,6 +18,8 @@ module OmniAuth
18
18
  # @option params [String, nil] :cas_service_validate_url (:cas_server + '/serviceValidate') the
19
19
  # URL to use for validating service tickets; optional if `:cas_server` is
20
20
  # specified, requred otherwise.
21
+ # @option params [Boolean, nil] :disable_ssl_verification disable verification for SSL cert,
22
+ # helpful when you developing with a fake cert.
21
23
  def initialize(params)
22
24
  parse_params params
23
25
  end
@@ -32,16 +34,24 @@ module OmniAuth
32
34
  end
33
35
 
34
36
  # Build a service-validation URL from +service+ and +ticket+.
37
+ # If +service+ has a ticket param, first remove it. URL-encode
38
+ # +service+ and add it and the +ticket+ as paraemters to the
39
+ # CAS serviceValidate URL.
35
40
  #
36
41
  # @param [String] service the service (a.k.a. return-to) URL
37
42
  # @param [String] ticket the ticket to validate
38
43
  #
39
44
  # @return [String] a URL like `http://cas.mycompany.com/serviceValidate?service=...&ticket=...`
40
45
  def service_validate_url(service, ticket)
41
- url = append_service @service_validate_url, service
46
+ service = service.sub(/[?&]ticket=[^?&]+/, '')
47
+ url = append_service(@service_validate_url, service)
42
48
  url << '&ticket=' << Rack::Utils.escape(ticket)
43
49
  end
44
50
 
51
+ def disable_ssl_verification?
52
+ @disable_ssl_verification
53
+ end
54
+
45
55
  private
46
56
 
47
57
  def parse_params(params)
@@ -58,6 +68,8 @@ module OmniAuth
58
68
  @service_validate_url = params[:cas_service_validate_url]
59
69
  @service_validate_url ||= DEFAULT_SERVICE_VALIDATE_URL % params[:cas_server]
60
70
  validate_is_url 'service-validate URL', @service_validate_url
71
+
72
+ @disable_ssl_verification = params[:disable_ssl_verification]
61
73
  end
62
74
 
63
75
  IS_NOT_URL_ERROR_MESSAGE = "%s is not a valid URL"
@@ -14,7 +14,8 @@ module OmniAuth
14
14
  # @param [String] return_to_url the URL of this CAS client service
15
15
  # @param [String] ticket the service ticket to validate
16
16
  def initialize(configuration, return_to_url, ticket)
17
- @uri = URI.parse(configuration.service_validate_url(return_to_url, ticket))
17
+ @configuration = configuration
18
+ @uri = URI.parse(@configuration.service_validate_url(return_to_url, ticket))
18
19
  end
19
20
 
20
21
  # Request validation of the ticket from the CAS server's
@@ -30,7 +31,7 @@ module OmniAuth
30
31
  end
31
32
 
32
33
  private
33
-
34
+
34
35
  # turns an `<cas:authenticationSuccess>` node into a Hash;
35
36
  # returns nil if given nil
36
37
  def parse_user_info(node)
@@ -67,8 +68,9 @@ module OmniAuth
67
68
  result = ''
68
69
  http = Net::HTTP.new(@uri.host, @uri.port)
69
70
  http.use_ssl = @uri.port == 443 || @uri.instance_of?(URI::HTTPS)
71
+ http.verify_mode = OpenSSL::SSL::VERIFY_NONE if http.use_ssl? && @configuration.disable_ssl_verification?
70
72
  http.start do |c|
71
- response = c.get "#{@uri.path}?#{@uri.query}", VALIDATION_REQUEST_HEADERS
73
+ response = c.get "#{@uri.path}?#{@uri.query}", VALIDATION_REQUEST_HEADERS.dup
72
74
  result = response.body
73
75
  end
74
76
  result
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: oa-enterprise
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease: 6
5
- version: 0.2.0.beta4
5
+ version: 0.2.0.beta5
6
6
  platform: ruby
7
7
  authors:
8
8
  - James A. Rosen
@@ -11,7 +11,7 @@ autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
13
 
14
- date: 2011-02-11 00:00:00 -06:00
14
+ date: 2011-03-01 00:00:00 -06:00
15
15
  default_executable:
16
16
  dependencies:
17
17
  - !ruby/object:Gem::Dependency
@@ -21,7 +21,7 @@ dependencies:
21
21
  requirements:
22
22
  - - "="
23
23
  - !ruby/object:Gem::Version
24
- version: 0.2.0.beta4
24
+ version: 0.2.0.beta5
25
25
  type: :runtime
26
26
  prerelease: false
27
27
  version_requirements: *id001
@@ -144,6 +144,7 @@ extensions: []
144
144
  extra_rdoc_files: []
145
145
 
146
146
  files:
147
+ - lib/oa-enterprise.rb
147
148
  - lib/omniauth/enterprise.rb
148
149
  - lib/omniauth/strategies/cas/configuration.rb
149
150
  - lib/omniauth/strategies/cas/service_ticket_validator.rb
@@ -166,7 +167,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
166
167
  requirements:
167
168
  - - ">="
168
169
  - !ruby/object:Gem::Version
169
- hash: -3364161310048939342
170
+ hash: -2736009096566092048
170
171
  segments:
171
172
  - 0
172
173
  version: "0"