authi 0.0.5 → 0.0.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/authi.rb +15 -11
  3. metadata +1 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 85bb4178a5b36b8d9e30f753099c860a3882d9b4
4
- data.tar.gz: d3d17263f069c7e9ecff5ba9a59b2c613a41b143
3
+ metadata.gz: 9e50d6f879cd2ab73dff7dcc6d930d6f7d8f30b2
4
+ data.tar.gz: e26725a59eb2fca5c0b713317c9896bd686b4e5f
5
5
  SHA512:
6
- metadata.gz: d39702d636fc2072d9570d0a072fd805462565b0ea2d1d610f4c50c7f67e3f300fdde514b97facfc9d248f368f1f57d6bc309dcfe22028b420e32b00ef63dfff
7
- data.tar.gz: 268b643d624118aee28629a9e4ab86eec9875913f3df96b56ad3eebedcfb9807b088fb73abb1d14b19f20d5ac9c47b8921e77cb7d3c45b15c6089b4222cdc849
6
+ metadata.gz: 68a80a96d9d33f5385b4da8806ce6297ba1d482fc9116d53e151d2994c76bc39eed968e3c75170a9e53d30cddb1fc9a08bbe65d6a133bd9db1956599d67d3f8b
7
+ data.tar.gz: 24b67621d0750cdbdf0b3909528bf93a368dc78731293fbd86d0e2c440140a442ff4419865c4b40e87ac7f14b97b3500cbf58eeb606cef5ae77c07d72ab9fad1
@@ -9,16 +9,20 @@ require 'securerandom'
9
9
  # ===========
10
10
  # A string is first created using your HTTP payload containing all parameters and a preshared key.
11
11
  # This string is then used to create the signature which is a Base64 encoded SHA1 HMAC, using the clients private secret key.
12
- # This signature is then can be added to Authorization HTTP header
13
- # <code>Authorization = Authy.generate_signed_header(params)</code>
14
- # Now add this to to your header
12
+ # This signature is then can be added to Authorization HTTP header
13
+ # <code>Authorization = Authy.generate_signed_header(params)</code>
14
+ # You can pass explicite service name and shared_key as an argument to support multiple API authentication
15
+ # <code>Authorization = Authy.generate_signed_header(params, 'client_1', ENV['client_1_shared_key'])</code>
16
+ # Now add this to to your header
15
17
  # <code>header["Authorization"] = Authorization</code>
16
18
  #
17
19
  # secret_key generated from the server side can be kept inside the a environment variable with name <i>shared_key</i> along with <i>service_name</i> as your service name
18
20
  #
19
- # <i>Server Side API validation</i>
20
- # <code>is_valid = Authy.validate_api(params, request.headers)</code>
21
- # Generating secret key for clients
21
+ # <i>Server Side API validation</i>
22
+ # <code>is_valid = Authy.validate_api(params, request.headers)</code>
23
+ # Pass explicite shared key to support multiple API authentication
24
+ # <code>is_valid = Authy.validate_api(params, request.headers,ENV['client_1_shared_key'])</code>
25
+ # Generating secret key for clients
22
26
  # <code>secret_key = Authy.generate_secret_key</code>
23
27
  module Authy
24
28
  # Create a signed hash using input parameter
@@ -29,7 +33,7 @@ module Authy
29
33
  #
30
34
  # Arguments:
31
35
  # data: (map)
32
- def self.generate_signed_header(data, service_name = ENV['service_name'])
36
+ def self.generate_signed_header(data, service_name = ENV['service_name'], shared_key = ENV['shared_key'])
33
37
  processed_data, deep_lookup_table = Authy.fully_qualified_keys(data)
34
38
  signing_order = processed_data + ',' + 'owning_service,signing_order'
35
39
  request_data = Authy.build_query(processed_data, deep_lookup_table)
@@ -37,9 +41,9 @@ module Authy
37
41
  '&owning_service=' + service_name + '&signing_order=' + \
38
42
  signing_order
39
43
  digest = OpenSSL::Digest.new('sha1')
40
- hmac = OpenSSL::HMAC.digest(digest, ENV['shared_key'], unsigned_data)
44
+ hmac = OpenSSL::HMAC.digest(digest, shared_key, unsigned_data)
41
45
  signed_str = Base64.strict_encode64(hmac)
42
- { 'X-OWNING-SERVICE': ENV['service_name'], 'X-SIGNING-ORDER': signing_order,
46
+ { 'X-OWNING-SERVICE': service_name, 'X-SIGNING-ORDER': signing_order,
43
47
  'X-SIGNATURE': signed_str }
44
48
  end
45
49
 
@@ -80,9 +84,9 @@ module Authy
80
84
  # Arguments:
81
85
  # params: (map)
82
86
  # header
83
- def self.validate_api(params, header)
87
+ def self.validate_api(params, header, shared_key = ENV['shared_key'])
84
88
  owning_service = header['Authorization'][:'X-OWNING-SERVICE']
85
- expected_header = Authy.generate_signed_header(params, owning_service)
89
+ expected_header = Authy.generate_signed_header(params, owning_service, shared_key)
86
90
  expected_header[:'X-SIGNATURE'] == header['Authorization'][:'X-SIGNATURE']
87
91
  end
88
92
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: authi
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nithin Kumar