global_session 3.1.1 → 3.2.0
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 +4 -4
 - data/.ruby-version +1 -0
 - data/VERSION +1 -1
 - data/global_session.gemspec +4 -4
 - data/lib/global_session/rack.rb +22 -5
 - metadata +4 -3
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA1:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: c515a5dcc7b904111d8d920ec99e0ccdce58121f
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 5d64ca49728e08bd110fc597ff5321a951983041
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: ba37377a8a6489d088ca0f835dc61be4bacba59472249802358a686b6500315f438e846a3e73142923fce67cc7b7646de9948577cb73ff22b5aa3d8dba604142
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: a43759e7a9d51b6322c04c41f19821229b35bce347dcf76d1ea3a5f65ccfa60a9cab1112f13a448cd20c390a84cff339cff2a4d9c0c7e940479d0411246bc878
         
     | 
    
        data/.ruby-version
    ADDED
    
    | 
         @@ -0,0 +1 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            2.1.6
         
     | 
    
        data/VERSION
    CHANGED
    
    | 
         @@ -1 +1 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            3. 
     | 
| 
      
 1 
     | 
    
         
            +
            3.2.0
         
     | 
    
        data/global_session.gemspec
    CHANGED
    
    | 
         @@ -2,16 +2,16 @@ 
     | 
|
| 
       2 
2 
     | 
    
         
             
            # DO NOT EDIT THIS FILE DIRECTLY
         
     | 
| 
       3 
3 
     | 
    
         
             
            # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
         
     | 
| 
       4 
4 
     | 
    
         
             
            # -*- encoding: utf-8 -*-
         
     | 
| 
       5 
     | 
    
         
            -
            # stub: global_session 3. 
     | 
| 
      
 5 
     | 
    
         
            +
            # stub: global_session 3.2.0 ruby lib
         
     | 
| 
       6 
6 
     | 
    
         | 
| 
       7 
7 
     | 
    
         
             
            Gem::Specification.new do |s|
         
     | 
| 
       8 
8 
     | 
    
         
             
              s.name = "global_session"
         
     | 
| 
       9 
     | 
    
         
            -
              s.version = "3. 
     | 
| 
      
 9 
     | 
    
         
            +
              s.version = "3.2.0"
         
     | 
| 
       10 
10 
     | 
    
         | 
| 
       11 
11 
     | 
    
         
             
              s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
         
     | 
| 
       12 
12 
     | 
    
         
             
              s.require_paths = ["lib"]
         
     | 
| 
       13 
13 
     | 
    
         
             
              s.authors = ["Tony Spataro"]
         
     | 
| 
       14 
     | 
    
         
            -
              s.date = "2015- 
     | 
| 
      
 14 
     | 
    
         
            +
              s.date = "2015-07-08"
         
     | 
| 
       15 
15 
     | 
    
         
             
              s.description = "This Rack middleware allows several web apps in an authentication domain to share session state, facilitating single sign-on in a distributed web app. It only provides session sharing and does not concern itself with authentication or replication of the user database."
         
     | 
| 
       16 
16 
     | 
    
         
             
              s.email = "support@rightscale.com"
         
     | 
| 
       17 
17 
     | 
    
         
             
              s.extra_rdoc_files = [
         
     | 
| 
         @@ -50,7 +50,7 @@ Gem::Specification.new do |s| 
     | 
|
| 
       50 
50 
     | 
    
         
             
              ]
         
     | 
| 
       51 
51 
     | 
    
         
             
              s.homepage = "https://github.com/rightscale/global_session"
         
     | 
| 
       52 
52 
     | 
    
         
             
              s.licenses = ["MIT"]
         
     | 
| 
       53 
     | 
    
         
            -
              s.rubygems_version = "2.2. 
     | 
| 
      
 53 
     | 
    
         
            +
              s.rubygems_version = "2.2.3"
         
     | 
| 
       54 
54 
     | 
    
         
             
              s.summary = "Secure single-domain session sharing plugin for Rack and Rails."
         
     | 
| 
       55 
55 
     | 
    
         | 
| 
       56 
56 
     | 
    
         
             
              if s.respond_to? :specification_version then
         
     | 
    
        data/lib/global_session/rack.rb
    CHANGED
    
    | 
         @@ -27,6 +27,8 @@ module GlobalSession 
     | 
|
| 
       27 
27 
     | 
    
         
             
                # Global session middleware.  Note: this class relies on
         
     | 
| 
       28 
28 
     | 
    
         
             
                # Rack::Cookies being used higher up in the chain.
         
     | 
| 
       29 
29 
     | 
    
         
             
                class Middleware
         
     | 
| 
      
 30 
     | 
    
         
            +
                  NUMERIC_HOST      = /^[0-9.]+$/.freeze
         
     | 
| 
      
 31 
     | 
    
         
            +
             
     | 
| 
       30 
32 
     | 
    
         
             
                  LOCAL_SESSION_KEY = "rack.session".freeze
         
     | 
| 
       31 
33 
     | 
    
         | 
| 
       32 
34 
     | 
    
         
             
                  # @return [GlobalSession::Configuration]
         
     | 
| 
         @@ -232,13 +234,15 @@ module GlobalSession 
     | 
|
| 
       232 
234 
     | 
    
         
             
                      value   = session.to_s
         
     | 
| 
       233 
235 
     | 
    
         
             
                      expires = @configuration['ephemeral'] ? nil : session.expired_at
         
     | 
| 
       234 
236 
     | 
    
         
             
                      unless env['rack.cookies'][@cookie_name] == value
         
     | 
| 
      
 237 
     | 
    
         
            +
                        secure = (env['HTTP_X_FORWARDED_PROTO'] == 'https') ||
         
     | 
| 
      
 238 
     | 
    
         
            +
                                 (env['rack.url_scheme'] == 'https')
         
     | 
| 
       235 
239 
     | 
    
         
             
                        env['rack.cookies'][@cookie_name] =
         
     | 
| 
       236 
240 
     | 
    
         
             
                          {
         
     | 
| 
       237 
241 
     | 
    
         
             
                            :value    => value,
         
     | 
| 
       238 
242 
     | 
    
         
             
                            :domain   => cookie_domain(env),
         
     | 
| 
       239 
243 
     | 
    
         
             
                            :expires  => expires,
         
     | 
| 
       240 
244 
     | 
    
         
             
                            :httponly => true,
         
     | 
| 
       241 
     | 
    
         
            -
                            :secure   =>  
     | 
| 
      
 245 
     | 
    
         
            +
                            :secure   => secure,
         
     | 
| 
       242 
246 
     | 
    
         
             
                          }
         
     | 
| 
       243 
247 
     | 
    
         
             
                      end
         
     | 
| 
       244 
248 
     | 
    
         
             
                    else
         
     | 
| 
         @@ -316,14 +320,27 @@ module GlobalSession 
     | 
|
| 
       316 
320 
     | 
    
         
             
                  #
         
     | 
| 
       317 
321 
     | 
    
         
             
                  # @param [Hash] env Rack request environment
         
     | 
| 
       318 
322 
     | 
    
         
             
                  def cookie_domain(env)
         
     | 
| 
      
 323 
     | 
    
         
            +
                    name = env['HTTP_X_FORWARDED_HOST'] || env['SERVER_NAME']
         
     | 
| 
      
 324 
     | 
    
         
            +
             
     | 
| 
       319 
325 
     | 
    
         
             
                    if @configuration['cookie'].has_key?('domain')
         
     | 
| 
       320 
326 
     | 
    
         
             
                      # Use the explicitly provided domain name
         
     | 
| 
       321 
327 
     | 
    
         
             
                      domain = @configuration['cookie']['domain']
         
     | 
| 
      
 328 
     | 
    
         
            +
                    elsif name =~ NUMERIC_HOST
         
     | 
| 
      
 329 
     | 
    
         
            +
                      # Don't set a domain if the browser requested an IP-based host
         
     | 
| 
      
 330 
     | 
    
         
            +
                      domain = nil
         
     | 
| 
       322 
331 
     | 
    
         
             
                    else
         
     | 
| 
       323 
     | 
    
         
            -
                      #  
     | 
| 
       324 
     | 
    
         
            -
                       
     | 
| 
       325 
     | 
    
         
            -
                       
     | 
| 
       326 
     | 
    
         
            -
                       
     | 
| 
      
 332 
     | 
    
         
            +
                      # Guess an appropriate domain for the cookie. Strip one level of
         
     | 
| 
      
 333 
     | 
    
         
            +
                      # subdomain; leave SLDs unmolested; omit domain entirely for
         
     | 
| 
      
 334 
     | 
    
         
            +
                      # one-component domains (e.g. localhost).
         
     | 
| 
      
 335 
     | 
    
         
            +
                      parts  = name.split('.')
         
     | 
| 
      
 336 
     | 
    
         
            +
                      case parts.length
         
     | 
| 
      
 337 
     | 
    
         
            +
                      when 0..1
         
     | 
| 
      
 338 
     | 
    
         
            +
                        domain = nil
         
     | 
| 
      
 339 
     | 
    
         
            +
                      when 2
         
     | 
| 
      
 340 
     | 
    
         
            +
                        domain = parts.join('.')
         
     | 
| 
      
 341 
     | 
    
         
            +
                      else
         
     | 
| 
      
 342 
     | 
    
         
            +
                        domain = parts[1..-1].join('.')
         
     | 
| 
      
 343 
     | 
    
         
            +
                      end
         
     | 
| 
       327 
344 
     | 
    
         
             
                    end
         
     | 
| 
       328 
345 
     | 
    
         | 
| 
       329 
346 
     | 
    
         
             
                    domain
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,14 +1,14 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: global_session
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 3. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 3.2.0
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Tony Spataro
         
     | 
| 
       8 
8 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       9 
9 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
     | 
    
         
            -
            date: 2015- 
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2015-07-08 00:00:00.000000000 Z
         
     | 
| 
       12 
12 
     | 
    
         
             
            dependencies:
         
     | 
| 
       13 
13 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       14 
14 
     | 
    
         
             
              name: json
         
     | 
| 
         @@ -139,6 +139,7 @@ extra_rdoc_files: 
     | 
|
| 
       139 
139 
     | 
    
         
             
            - LICENSE
         
     | 
| 
       140 
140 
     | 
    
         
             
            - README.rdoc
         
     | 
| 
       141 
141 
     | 
    
         
             
            files:
         
     | 
| 
      
 142 
     | 
    
         
            +
            - ".ruby-version"
         
     | 
| 
       142 
143 
     | 
    
         
             
            - ".travis.yml"
         
     | 
| 
       143 
144 
     | 
    
         
             
            - CHANGELOG.rdoc
         
     | 
| 
       144 
145 
     | 
    
         
             
            - LICENSE
         
     | 
| 
         @@ -187,7 +188,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement 
     | 
|
| 
       187 
188 
     | 
    
         
             
                  version: '0'
         
     | 
| 
       188 
189 
     | 
    
         
             
            requirements: []
         
     | 
| 
       189 
190 
     | 
    
         
             
            rubyforge_project: 
         
     | 
| 
       190 
     | 
    
         
            -
            rubygems_version: 2.2. 
     | 
| 
      
 191 
     | 
    
         
            +
            rubygems_version: 2.2.3
         
     | 
| 
       191 
192 
     | 
    
         
             
            signing_key: 
         
     | 
| 
       192 
193 
     | 
    
         
             
            specification_version: 4
         
     | 
| 
       193 
194 
     | 
    
         
             
            summary: Secure single-domain session sharing plugin for Rack and Rails.
         
     |