authi 0.0.5 → 0.0.6

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.
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