mixlib-authentication 3.0.1 → 3.0.4
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/lib/mixlib/authentication.rb +1 -1
 - data/lib/mixlib/authentication/http_authentication_request.rb +1 -1
 - data/lib/mixlib/authentication/signatureverification.rb +1 -1
 - data/lib/mixlib/authentication/signedheaderauth.rb +28 -26
 - data/lib/mixlib/authentication/version.rb +1 -1
 - metadata +2 -2
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA256:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: dfe9207033439727125b97e19e5d0f104f540545f8975fd09952e7d3c33d1912
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: a0105be8a06dc1a6cdbb7e87e86686873e561e714a6ba47c07fc1855ef4acc7a
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: a04e5503e573c71382bc391fe3392419fc1480199a74c5ec757c83fa7dc3ba85cc6ffce01957ef0ada987ddc6e618572bcc8989e0c593ab7c9c055aa6d6d4af2
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 410b2915042706210831ee5258fcb1e998251d289280c49d636dc93fcde357f219eb81ba6283de0fddd532a17ded913aa712db636a6fcb94c9c042b4631b543a
         
     | 
| 
         @@ -22,7 +22,7 @@ module Mixlib 
     | 
|
| 
       22 
22 
     | 
    
         
             
              module Authentication
         
     | 
| 
       23 
23 
     | 
    
         
             
                class HTTPAuthenticationRequest
         
     | 
| 
       24 
24 
     | 
    
         | 
| 
       25 
     | 
    
         
            -
                  MANDATORY_HEADERS =  
     | 
| 
      
 25 
     | 
    
         
            +
                  MANDATORY_HEADERS = %i{x_ops_sign x_ops_userid x_ops_timestamp host x_ops_content_hash}.freeze
         
     | 
| 
       26 
26 
     | 
    
         | 
| 
       27 
27 
     | 
    
         
             
                  attr_reader :request
         
     | 
| 
       28 
28 
     | 
    
         | 
| 
         @@ -203,7 +203,7 @@ module Mixlib 
     | 
|
| 
       203 
203 
     | 
    
         
             
                      # No file_param; we're running in Merb, or it's just not there..
         
     | 
| 
       204 
204 
     | 
    
         
             
                      if file_param.nil?
         
     | 
| 
       205 
205 
     | 
    
         
             
                        hash_param = request.params.values.find { |value| value.respond_to?(:has_key?) } # Hash responds to :has_key? .
         
     | 
| 
       206 
     | 
    
         
            -
                         
     | 
| 
      
 206 
     | 
    
         
            +
                        unless hash_param.nil?
         
     | 
| 
       207 
207 
     | 
    
         
             
                          file_param = hash_param.values.find { |value| value.respond_to?(:read) } # File/Tempfile responds to :read.
         
     | 
| 
       208 
208 
     | 
    
         
             
                        end
         
     | 
| 
       209 
209 
     | 
    
         
             
                      end
         
     | 
| 
         @@ -34,7 +34,7 @@ module Mixlib 
     | 
|
| 
       34 
34 
     | 
    
         
             
                    "1.0" => "sha1",
         
     | 
| 
       35 
35 
     | 
    
         
             
                    "1.1" => "sha1",
         
     | 
| 
       36 
36 
     | 
    
         
             
                    "1.3" => "sha256",
         
     | 
| 
       37 
     | 
    
         
            -
                  }.freeze 
     | 
| 
      
 37 
     | 
    
         
            +
                  }.freeze
         
     | 
| 
       38 
38 
     | 
    
         | 
| 
       39 
39 
     | 
    
         
             
                  # Use of SUPPORTED_ALGORITHMS and SUPPORTED_VERSIONS is deprecated. Use
         
     | 
| 
       40 
40 
     | 
    
         
             
                  # ALGORITHM_FOR_VERSION instead
         
     | 
| 
         @@ -74,15 +74,14 @@ module Mixlib 
     | 
|
| 
       74 
74 
     | 
    
         
             
                  # * `:host`: The host part of the URI
         
     | 
| 
       75 
75 
     | 
    
         
             
                  def self.signing_object(args = {})
         
     | 
| 
       76 
76 
     | 
    
         
             
                    SigningObject.new(args[:http_method],
         
     | 
| 
       77 
     | 
    
         
            -
             
     | 
| 
       78 
     | 
    
         
            -
             
     | 
| 
       79 
     | 
    
         
            -
             
     | 
| 
       80 
     | 
    
         
            -
             
     | 
| 
       81 
     | 
    
         
            -
             
     | 
| 
       82 
     | 
    
         
            -
             
     | 
| 
       83 
     | 
    
         
            -
             
     | 
| 
       84 
     | 
    
         
            -
             
     | 
| 
       85 
     | 
    
         
            -
                                     )
         
     | 
| 
      
 77 
     | 
    
         
            +
                      args[:path],
         
     | 
| 
      
 78 
     | 
    
         
            +
                      args[:body],
         
     | 
| 
      
 79 
     | 
    
         
            +
                      args[:host],
         
     | 
| 
      
 80 
     | 
    
         
            +
                      args[:timestamp],
         
     | 
| 
      
 81 
     | 
    
         
            +
                      args[:user_id],
         
     | 
| 
      
 82 
     | 
    
         
            +
                      args[:file],
         
     | 
| 
      
 83 
     | 
    
         
            +
                      args[:proto_version],
         
     | 
| 
      
 84 
     | 
    
         
            +
                      args[:headers])
         
     | 
| 
       86 
85 
     | 
    
         
             
                  end
         
     | 
| 
       87 
86 
     | 
    
         | 
| 
       88 
87 
     | 
    
         
             
                  def algorithm
         
     | 
| 
         @@ -175,7 +174,7 @@ module Mixlib 
     | 
|
| 
       175 
174 
     | 
    
         
             
                  # ====Parameters
         
     | 
| 
       176 
175 
     | 
    
         
             
                  #
         
     | 
| 
       177 
176 
     | 
    
         
             
                  def canonical_path
         
     | 
| 
       178 
     | 
    
         
            -
                    p = path.gsub( 
     | 
| 
      
 177 
     | 
    
         
            +
                    p = path.gsub(%r{/+}, "/")
         
     | 
| 
       179 
178 
     | 
    
         
             
                    p.length > 1 ? p.chomp("/") : p
         
     | 
| 
       180 
179 
     | 
    
         
             
                  end
         
     | 
| 
       181 
180 
     | 
    
         | 
| 
         @@ -191,6 +190,7 @@ module Mixlib 
     | 
|
| 
       191 
190 
     | 
    
         
             
                    else
         
     | 
| 
       192 
191 
     | 
    
         
             
                      @hashed_body_digest = digest
         
     | 
| 
       193 
192 
     | 
    
         
             
                    end
         
     | 
| 
      
 193 
     | 
    
         
            +
             
     | 
| 
       194 
194 
     | 
    
         
             
                    # Hash the file object if it was passed in, otherwise hash based on
         
     | 
| 
       195 
195 
     | 
    
         
             
                    # the body.
         
     | 
| 
       196 
196 
     | 
    
         
             
                    # TODO: tim 2009-12-28: It'd be nice to just remove this special case,
         
     | 
| 
         @@ -283,11 +283,13 @@ module Mixlib 
     | 
|
| 
       283 
283 
     | 
    
         
             
                        do_sign_ssh_agent(rsa_key, string_to_sign)
         
     | 
| 
       284 
284 
     | 
    
         
             
                      else
         
     | 
| 
       285 
285 
     | 
    
         
             
                        raise AuthenticationError, "RSA private key is required to sign requests, but a public key was provided" unless rsa_key.private?
         
     | 
| 
      
 286 
     | 
    
         
            +
             
     | 
| 
       286 
287 
     | 
    
         
             
                        rsa_key.sign(digest.new, string_to_sign)
         
     | 
| 
       287 
288 
     | 
    
         
             
                      end
         
     | 
| 
       288 
289 
     | 
    
         
             
                    else
         
     | 
| 
       289 
290 
     | 
    
         
             
                      raise AuthenticationError, "Agent signing mode requires signing protocol version 1.3 or newer" if use_ssh_agent
         
     | 
| 
       290 
291 
     | 
    
         
             
                      raise AuthenticationError, "RSA private key is required to sign requests, but a public key was provided" unless rsa_key.private?
         
     | 
| 
      
 292 
     | 
    
         
            +
             
     | 
| 
       291 
293 
     | 
    
         
             
                      rsa_key.private_encrypt(string_to_sign)
         
     | 
| 
       292 
294 
     | 
    
         
             
                    end
         
     | 
| 
       293 
295 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -339,25 +341,25 @@ module Mixlib 
     | 
|
| 
       339 
341 
     | 
    
         
             
                # generate a request signature. `SignedHeaderAuth.signing_object()`
         
     | 
| 
       340 
342 
     | 
    
         
             
                # provides a more convenient interface to the constructor.
         
     | 
| 
       341 
343 
     | 
    
         
             
                SigningObject = Struct.new(:http_method, :path, :body, :host,
         
     | 
| 
       342 
     | 
    
         
            -
             
     | 
| 
       343 
     | 
    
         
            -
             
     | 
| 
      
 344 
     | 
    
         
            +
                  :timestamp, :user_id, :file, :proto_version,
         
     | 
| 
      
 345 
     | 
    
         
            +
                  :headers) do
         
     | 
| 
       344 
346 
     | 
    
         | 
| 
       345 
     | 
    
         
            -
             
     | 
| 
      
 347 
     | 
    
         
            +
                    include SignedHeaderAuth
         
     | 
| 
       346 
348 
     | 
    
         | 
| 
       347 
     | 
    
         
            -
             
     | 
| 
       348 
     | 
    
         
            -
             
     | 
| 
       349 
     | 
    
         
            -
             
     | 
| 
      
 349 
     | 
    
         
            +
                    def proto_version
         
     | 
| 
      
 350 
     | 
    
         
            +
                      (self[:proto_version] || SignedHeaderAuth::DEFAULT_PROTO_VERSION).to_s
         
     | 
| 
      
 351 
     | 
    
         
            +
                    end
         
     | 
| 
       350 
352 
     | 
    
         | 
| 
       351 
     | 
    
         
            -
             
     | 
| 
       352 
     | 
    
         
            -
             
     | 
| 
       353 
     | 
    
         
            -
             
     | 
| 
       354 
     | 
    
         
            -
             
     | 
| 
       355 
     | 
    
         
            -
             
     | 
| 
       356 
     | 
    
         
            -
             
     | 
| 
       357 
     | 
    
         
            -
             
     | 
| 
       358 
     | 
    
         
            -
             
     | 
| 
      
 353 
     | 
    
         
            +
                    def server_api_version
         
     | 
| 
      
 354 
     | 
    
         
            +
                      key = (self[:headers] || {}).keys.select do |k|
         
     | 
| 
      
 355 
     | 
    
         
            +
                        k.casecmp("x-ops-server-api-version") == 0
         
     | 
| 
      
 356 
     | 
    
         
            +
                      end.first
         
     | 
| 
      
 357 
     | 
    
         
            +
                      if key
         
     | 
| 
      
 358 
     | 
    
         
            +
                        self[:headers][key]
         
     | 
| 
      
 359 
     | 
    
         
            +
                      else
         
     | 
| 
      
 360 
     | 
    
         
            +
                        DEFAULT_SERVER_API_VERSION
         
     | 
| 
      
 361 
     | 
    
         
            +
                      end
         
     | 
| 
       359 
362 
     | 
    
         
             
                    end
         
     | 
| 
       360 
363 
     | 
    
         
             
                  end
         
     | 
| 
       361 
     | 
    
         
            -
                end
         
     | 
| 
       362 
364 
     | 
    
         
             
              end
         
     | 
| 
       363 
365 
     | 
    
         
             
            end
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,14 +1,14 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: mixlib-authentication
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 3.0. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 3.0.4
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Chef Software, Inc.
         
     | 
| 
       8 
8 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       9 
9 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
     | 
    
         
            -
            date: 2019- 
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2019-10-31 00:00:00.000000000 Z
         
     | 
| 
       12 
12 
     | 
    
         
             
            dependencies: []
         
     | 
| 
       13 
13 
     | 
    
         
             
            description: Mixes in simple per-request authentication
         
     | 
| 
       14 
14 
     | 
    
         
             
            email: info@chef.io
         
     |