rack-cas 0.16.0 → 0.16.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -5
 - data/README.md +11 -2
 - data/lib/rack-cas/configuration.rb +2 -1
 - data/lib/rack-cas/server.rb +2 -1
 - data/lib/rack-cas/version.rb +1 -1
 - data/lib/rack/cas.rb +15 -3
 - metadata +4 -5
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 2 
     | 
    
         
            +
            SHA256:
         
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: af1e3b165fc96ee826408cdb92a8b75efde25142bfe3a723b637427bedd14a8b
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: a81f1d05e4eadedf53aa97bdae224345c0e969370a4b6f399e465b43229793d9
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 763c339ba9e541aa94401135f471b475434816fee5287fb84a1a8adefcd0ed098bcfdfcad64737891c9075aa99cddc173ee75bbc81c6bae464a33f74181a87e3
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 689db6c253c92114a9609ccfa870da73816fc3d684e744a63521d15ee52f814298c8137f7b49bf178ed385c45104ff00aec02f406c96bd9a9a4e2ec1c1cf58eb
         
     | 
    
        data/README.md
    CHANGED
    
    | 
         @@ -18,7 +18,7 @@ One of the included session stores must be used. 
     | 
|
| 
       18 
18 
     | 
    
         | 
| 
       19 
19 
     | 
    
         
             
            Requirements
         
     | 
| 
       20 
20 
     | 
    
         
             
            ============
         
     | 
| 
       21 
     | 
    
         
            -
            * Ruby >=  
     | 
| 
      
 21 
     | 
    
         
            +
            * Ruby >= 2.0
         
     | 
| 
       22 
22 
     | 
    
         
             
            * A working [CAS server](http://casino.rbcas.com)
         
     | 
| 
       23 
23 
     | 
    
         
             
            * An app that [returns a `401 Unauthorized`](#integration) status when authentication is required
         
     | 
| 
       24 
24 
     | 
    
         | 
| 
         @@ -109,7 +109,7 @@ See the [example Sinatra app](https://gist.github.com/adamcrown/a7e7577594690335 
     | 
|
| 
       109 
109 
     | 
    
         | 
| 
       110 
110 
     | 
    
         
             
            ### Single Sign Out ###
         
     | 
| 
       111 
111 
     | 
    
         | 
| 
       112 
     | 
    
         
            -
            You will need to store sessions in session store supported by Rack CAS. 
     | 
| 
      
 112 
     | 
    
         
            +
            You will need to store sessions in session store supported by Rack CAS.
         
     | 
| 
       113 
113 
     | 
    
         | 
| 
       114 
114 
     | 
    
         
             
            #### Active Record ####
         
     | 
| 
       115 
115 
     | 
    
         
             
            Add a migration that looks roughly like
         
     | 
| 
         @@ -168,6 +168,15 @@ a `Rack::Request` object as a parameter. 
     | 
|
| 
       168 
168 
     | 
    
         
             
            use Rack::CAS, server_url: '...', exclude_request_validator: Proc.new { |req| req.env['HTTP_CONTENT_TYPE'] == 'application/json' }
         
     | 
| 
       169 
169 
     | 
    
         
             
            ```
         
     | 
| 
       170 
170 
     | 
    
         | 
| 
      
 171 
     | 
    
         
            +
            Service URL
         
     | 
| 
      
 172 
     | 
    
         
            +
            --------------------
         
     | 
| 
      
 173 
     | 
    
         
            +
             
     | 
| 
      
 174 
     | 
    
         
            +
            Sometimes you need to force the `service=` attribute on login requests, and not just use the request url in an automatic way.
         
     | 
| 
      
 175 
     | 
    
         
            +
             
     | 
| 
      
 176 
     | 
    
         
            +
            ```ruby
         
     | 
| 
      
 177 
     | 
    
         
            +
            use Rack::CAS, service: 'http://anotherexample.com'
         
     | 
| 
      
 178 
     | 
    
         
            +
            ```
         
     | 
| 
      
 179 
     | 
    
         
            +
             
     | 
| 
       171 
180 
     | 
    
         
             
            Ignore 401 Intercept
         
     | 
| 
       172 
181 
     | 
    
         
             
            --------------------
         
     | 
| 
       173 
182 
     | 
    
         | 
| 
         @@ -1,7 +1,8 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            module RackCAS
         
     | 
| 
       2 
2 
     | 
    
         
             
              class Configuration
         
     | 
| 
       3 
3 
     | 
    
         
             
                SETTINGS = [:fake, :fake_attributes, :server_url, :session_store, :exclude_path, :exclude_paths, :extra_attributes_filter,
         
     | 
| 
       4 
     | 
    
         
            -
                            :verify_ssl_cert, :renew, :use_saml_validation, :ignore_intercept_validator, :exclude_request_validator, :protocol 
     | 
| 
      
 4 
     | 
    
         
            +
                            :verify_ssl_cert, :renew, :use_saml_validation, :ignore_intercept_validator, :exclude_request_validator, :protocol,
         
     | 
| 
      
 5 
     | 
    
         
            +
                            :redis_options, :login_url, :service]
         
     | 
| 
       5 
6 
     | 
    
         | 
| 
       6 
7 
     | 
    
         | 
| 
       7 
8 
     | 
    
         
             
                SETTINGS.each do |setting|
         
     | 
    
        data/lib/rack-cas/server.rb
    CHANGED
    
    | 
         @@ -13,7 +13,8 @@ module RackCAS 
     | 
|
| 
       13 
13 
     | 
    
         
             
                  base_params = {service: service_url}
         
     | 
| 
       14 
14 
     | 
    
         
             
                  base_params[:renew] = true if RackCAS.config.renew?
         
     | 
| 
       15 
15 
     | 
    
         | 
| 
       16 
     | 
    
         
            -
                  @url.dup.append_path('login') 
     | 
| 
      
 16 
     | 
    
         
            +
                  url = RackCAS.config.login_url? ? RackCAS::URL.parse(RackCAS.config.login_url) : @url.dup.append_path('login')
         
     | 
| 
      
 17 
     | 
    
         
            +
                  url.add_params(base_params.merge(params))
         
     | 
| 
       17 
18 
     | 
    
         
             
                end
         
     | 
| 
       18 
19 
     | 
    
         | 
| 
       19 
20 
     | 
    
         
             
                def logout_url(params = {})
         
     | 
    
        data/lib/rack-cas/version.rb
    CHANGED
    
    
    
        data/lib/rack/cas.rb
    CHANGED
    
    | 
         @@ -21,16 +21,18 @@ class Rack::CAS 
     | 
|
| 
       21 
21 
     | 
    
         
             
                if cas_request.ticket_validation?
         
     | 
| 
       22 
22 
     | 
    
         
             
                  log env, 'rack-cas: Intercepting ticket validation request.'
         
     | 
| 
       23 
23 
     | 
    
         | 
| 
      
 24 
     | 
    
         
            +
                  service_url = RackCAS.config.service? ? RackCAS.config.service : cas_request.service_url
         
     | 
| 
      
 25 
     | 
    
         
            +
             
     | 
| 
       24 
26 
     | 
    
         
             
                  begin
         
     | 
| 
       25 
27 
     | 
    
         
             
                    user, extra_attrs = get_user(request.url, cas_request.ticket)
         
     | 
| 
       26 
28 
     | 
    
         
             
                  rescue RackCAS::ServiceValidationResponse::TicketInvalidError, RackCAS::SAMLValidationResponse::TicketInvalidError
         
     | 
| 
       27 
29 
     | 
    
         
             
                    log env, 'rack-cas: Invalid ticket. Redirecting to CAS login.'
         
     | 
| 
       28 
30 
     | 
    
         | 
| 
       29 
     | 
    
         
            -
                    return redirect_to server.login_url( 
     | 
| 
      
 31 
     | 
    
         
            +
                    return redirect_to server.login_url(service_url).to_s
         
     | 
| 
       30 
32 
     | 
    
         
             
                  end
         
     | 
| 
       31 
33 
     | 
    
         | 
| 
       32 
34 
     | 
    
         
             
                  store_session request, user, cas_request.ticket, extra_attrs
         
     | 
| 
       33 
     | 
    
         
            -
                  return redirect_to  
     | 
| 
      
 35 
     | 
    
         
            +
                  return redirect_to service_url
         
     | 
| 
       34 
36 
     | 
    
         
             
                end
         
     | 
| 
       35 
37 
     | 
    
         | 
| 
       36 
38 
     | 
    
         
             
                if cas_request.logout?
         
     | 
| 
         @@ -52,7 +54,17 @@ class Rack::CAS 
     | 
|
| 
       52 
54 
     | 
    
         
             
                if response[0] == 401 && !ignore_intercept?(request) # access denied
         
     | 
| 
       53 
55 
     | 
    
         
             
                  log env, 'rack-cas: Intercepting 401 access denied response. Redirecting to CAS login.'
         
     | 
| 
       54 
56 
     | 
    
         | 
| 
       55 
     | 
    
         
            -
                   
     | 
| 
      
 57 
     | 
    
         
            +
                  url = if RackCAS.config.service?
         
     | 
| 
      
 58 
     | 
    
         
            +
                          configured_service_url = RackCAS::URL.parse(RackCAS.config.service)
         
     | 
| 
      
 59 
     | 
    
         
            +
                          request_url            = RackCAS::URL.parse(request.url)
         
     | 
| 
      
 60 
     | 
    
         
            +
                          request_url.host       = configured_service_url.host
         
     | 
| 
      
 61 
     | 
    
         
            +
                          request_url.scheme     = configured_service_url.scheme
         
     | 
| 
      
 62 
     | 
    
         
            +
                          request_url.to_s
         
     | 
| 
      
 63 
     | 
    
         
            +
                        else
         
     | 
| 
      
 64 
     | 
    
         
            +
                          cas_request.service_url
         
     | 
| 
      
 65 
     | 
    
         
            +
                        end
         
     | 
| 
      
 66 
     | 
    
         
            +
             
     | 
| 
      
 67 
     | 
    
         
            +
                  redirect_to server.login_url(url).to_s
         
     | 
| 
       56 
68 
     | 
    
         
             
                else
         
     | 
| 
       57 
69 
     | 
    
         
             
                  response
         
     | 
| 
       58 
70 
     | 
    
         
             
                end
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,14 +1,14 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: rack-cas
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 0.16. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.16.1
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Adam Crownoble
         
     | 
| 
       8 
8 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       9 
9 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
     | 
    
         
            -
            date:  
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2019-04-21 00:00:00.000000000 Z
         
     | 
| 
       12 
12 
     | 
    
         
             
            dependencies:
         
     | 
| 
       13 
13 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       14 
14 
     | 
    
         
             
              name: rack
         
     | 
| 
         @@ -151,15 +151,14 @@ required_ruby_version: !ruby/object:Gem::Requirement 
     | 
|
| 
       151 
151 
     | 
    
         
             
              requirements:
         
     | 
| 
       152 
152 
     | 
    
         
             
              - - ">="
         
     | 
| 
       153 
153 
     | 
    
         
             
                - !ruby/object:Gem::Version
         
     | 
| 
       154 
     | 
    
         
            -
                  version:  
     | 
| 
      
 154 
     | 
    
         
            +
                  version: 2.0.0
         
     | 
| 
       155 
155 
     | 
    
         
             
            required_rubygems_version: !ruby/object:Gem::Requirement
         
     | 
| 
       156 
156 
     | 
    
         
             
              requirements:
         
     | 
| 
       157 
157 
     | 
    
         
             
              - - ">="
         
     | 
| 
       158 
158 
     | 
    
         
             
                - !ruby/object:Gem::Version
         
     | 
| 
       159 
159 
     | 
    
         
             
                  version: '0'
         
     | 
| 
       160 
160 
     | 
    
         
             
            requirements: []
         
     | 
| 
       161 
     | 
    
         
            -
             
     | 
| 
       162 
     | 
    
         
            -
            rubygems_version: 2.6.11
         
     | 
| 
      
 161 
     | 
    
         
            +
            rubygems_version: 3.0.3
         
     | 
| 
       163 
162 
     | 
    
         
             
            signing_key: 
         
     | 
| 
       164 
163 
     | 
    
         
             
            specification_version: 4
         
     | 
| 
       165 
164 
     | 
    
         
             
            summary: Rack-based CAS client
         
     |