apple_id_token 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4939bceeb59fbaadb045a5fb1b52285d62791ed776af45a3a93b23eaf5bb8cdc
4
- data.tar.gz: 2f6d35816d03f38bb2b20bb2fa7b2dc7a576a12b2083ee213691174bff6ceded
3
+ metadata.gz: ad562cca3077b3d45ecd2d551a6d4abc811041b0ea6c3f421ee65c0b69a23700
4
+ data.tar.gz: e878cd57f29ee0ec8ec969ee6a2c455e93ac9180f1f7fb43e51445f353832c3d
5
5
  SHA512:
6
- metadata.gz: e418ab733c53f46f448635b908f8b2784e2c73147785f1eb494b2b761c3204e81684d82364d6fc29336d39391bcb1911e7f500ec2bc5a91ce4c92e6c85403a94
7
- data.tar.gz: 072ef93bf08e011f8b3fba113180fff018b2e885554367eeb42fa2aff54b4e96860644efd7dfb64c7d6cee1f09d9732822980e1977fc84b4806be6b84e621973
6
+ metadata.gz: 8004bc943b277f29601951567bd1925af9e1095a4a91c84bbaceb92ec607ddcc032938ea1c4a4cc0bf26decadc0c74dec56f3ec4b6eb416700a5119437fee96d
7
+ data.tar.gz: 47947f3aceacf3c49f7956ad931e894877bd78cd360b974853660cf5f8385a77ec53fac0900a40236c300fb6b15cb265ce5c036947216717fc4bfe3d859b7a17
@@ -0,0 +1,10 @@
1
+ language: ruby
2
+ rvm:
3
+ - 2.3.0
4
+ - 2.4.0
5
+ - 2.5.0
6
+ - 2.6.0
7
+ script:
8
+ - bundle exec rspec
9
+ before_install:
10
+ - gem install bundler
@@ -1,3 +1,14 @@
1
+ ## 0.2.0
2
+
3
+ * Additions
4
+ * Added method `validate` to check integrity of provided Apple token by returning information inside the token as payload.
5
+ * Add rubygems version badge.
6
+ * Add Travis config file for CI.
7
+ * Add build badge.
8
+
9
+ * Improvemens
10
+ * Added break in case payload is retrieved successfully in any iteration to avoid more of them.
11
+
1
12
  ## 0.1.0
2
13
 
3
14
  * Additions
data/README.md CHANGED
@@ -1,6 +1,10 @@
1
1
  # AppleIdToken
2
2
 
3
- This gem is a symple wrapper around Apple Sign In to validate provided tokens from https://developer.apple.com/documentation/sign_in_with_apple/generate_and_validate_tokens. You can also send tokens provided by official Apple library for iOS and Android applications.
3
+ [![Gem Version](https://badge.fury.io/rb/apple_id_token.svg)](https://badge.fury.io/rb/apple_id_token)
4
+ [![Build Status](https://travis-ci.org/PexegoUva/rails_apple_signin.svg?branch=master)](https://travis-ci.org/PexegoUva/rails_apple_signin)
5
+ [![Maintainability](https://api.codeclimate.com/v1/badges/d7038393581f138d71da/maintainability)](https://codeclimate.com/github/PexegoUva/rails_apple_signin/maintainability)
6
+
7
+ This gem is a simple wrapper around Apple Sign In to validate provided tokens from https://developer.apple.com/documentation/sign_in_with_apple/generate_and_validate_tokens. You can also send tokens provided by official Apple library for iOS and Android applications.
4
8
 
5
9
  We make use of JWT Ruby gem -> https://github.com/jwt/ruby-jwt to decode token provided by Apple and also it makes all the validations mentioned here -> https://developer.apple.com/documentation/sign_in_with_apple/sign_in_with_apple_rest_api/verifying_a_user to ensure integrity of provided token.
6
10
 
@@ -14,6 +14,8 @@ Gem::Specification.new do |spec|
14
14
  spec.description = 'Apple Sign In Token utilities; parse and check validity of token'
15
15
  spec.homepage = "https://github.com/PexegoUva/rails_apple_signin"
16
16
 
17
+ spec.required_ruby_version = '>= 2.3'
18
+
17
19
  if spec.respond_to?(:metadata)
18
20
  spec.metadata["homepage_uri"] = spec.homepage
19
21
  spec.metadata["source_code_uri"] = "https://github.com/PexegoUva/rails_apple_signin"
@@ -32,11 +34,12 @@ Gem::Specification.new do |spec|
32
34
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
33
35
  spec.require_paths = ["lib"]
34
36
 
35
- spec.add_runtime_dependency 'jwt', '>= 2.2.1'
36
- spec.add_runtime_dependency 'httparty', '>= 0.17.3'
37
+ spec.add_runtime_dependency 'jwt', '~> 2.2.1'
38
+ spec.add_runtime_dependency 'httparty', '~> 0.17.3'
37
39
 
38
- spec.add_development_dependency "bundler", "~> 1.17"
39
- spec.add_development_dependency "rake", ">= 12.3.3"
40
+ spec.add_development_dependency "bundler", "~> 2.1.4"
41
+ spec.add_development_dependency "rake", "~> 12.3.3"
40
42
  spec.add_development_dependency "rspec", "~> 3.0"
41
- spec.add_development_dependency 'fakeweb', ">= 1.3.0"
43
+ spec.add_development_dependency 'fakeweb', "~> 1.3.0"
44
+ spec.add_development_dependency 'openssl', "~> 2.1.2"
42
45
  end
@@ -47,10 +47,9 @@ module AppleIdToken
47
47
 
48
48
  def check_against_certs(token, aud, public_keys)
49
49
  payload = nil
50
-
51
50
  public_keys.each do |public_key|
52
51
  # As jwk from jwt library needs Hashes with keys as symbols.
53
- public_key = public_key.transform_keys(&:to_sym)
52
+ public_key = Hash[public_key.map{ |k, v| [k.to_sym, v] }]
54
53
 
55
54
  begin
56
55
  jwk = JWT::JWK.import(public_key)
@@ -61,7 +60,7 @@ module AppleIdToken
61
60
  }
62
61
  )
63
62
 
64
- payload = decoded_token.first
63
+ return payload = decoded_token.first
65
64
  rescue JWT::JWKError
66
65
  raise InvalidPublicKeyError, 'Provided public key was invalid'
67
66
  rescue JWT::ExpiredSignature
@@ -70,12 +69,10 @@ module AppleIdToken
70
69
  raise JWTSignatureError, 'Token not verified as issued by Apple'
71
70
  rescue JWT::InvalidAudError
72
71
  raise JWTAudienceError, 'Token audience mismatch'
73
- rescue JWT::DecodeError
72
+ rescue JWT::DecodeError => e
74
73
  nil # Try another public key.
75
74
  end
76
75
  end
77
-
78
- payload
79
76
  end
80
77
  end
81
78
  end
@@ -1,3 +1,3 @@
1
1
  module AppleIdToken
2
- VERSION = "0.1.0"
2
+ VERSION = "0.2.0"
3
3
  end
metadata CHANGED
@@ -1,41 +1,41 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: apple_id_token
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Samuel Villaescusa Vinader
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-05-21 00:00:00.000000000 Z
11
+ date: 2020-05-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: jwt
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ">="
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
19
  version: 2.2.1
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ">="
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: 2.2.1
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: httparty
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ">="
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
33
  version: 0.17.3
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ">="
38
+ - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: 0.17.3
41
41
  - !ruby/object:Gem::Dependency
@@ -44,26 +44,26 @@ dependencies:
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '1.17'
47
+ version: 2.1.4
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '1.17'
54
+ version: 2.1.4
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rake
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - ">="
59
+ - - "~>"
60
60
  - !ruby/object:Gem::Version
61
61
  version: 12.3.3
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - ">="
66
+ - - "~>"
67
67
  - !ruby/object:Gem::Version
68
68
  version: 12.3.3
69
69
  - !ruby/object:Gem::Dependency
@@ -84,16 +84,30 @@ dependencies:
84
84
  name: fakeweb
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - ">="
87
+ - - "~>"
88
88
  - !ruby/object:Gem::Version
89
89
  version: 1.3.0
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - ">="
94
+ - - "~>"
95
95
  - !ruby/object:Gem::Version
96
96
  version: 1.3.0
97
+ - !ruby/object:Gem::Dependency
98
+ name: openssl
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: 2.1.2
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: 2.1.2
97
111
  description: Apple Sign In Token utilities; parse and check validity of token
98
112
  email:
99
113
  - samuelvv22@gmail.com
@@ -102,6 +116,7 @@ extensions: []
102
116
  extra_rdoc_files: []
103
117
  files:
104
118
  - ".gitignore"
119
+ - ".travis.yml"
105
120
  - Changelog.md
106
121
  - Gemfile
107
122
  - LICENSE
@@ -127,7 +142,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
127
142
  requirements:
128
143
  - - ">="
129
144
  - !ruby/object:Gem::Version
130
- version: '0'
145
+ version: '2.3'
131
146
  required_rubygems_version: !ruby/object:Gem::Requirement
132
147
  requirements:
133
148
  - - ">="