apple_id_token 0.1.0 → 0.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/.travis.yml +10 -0
- data/Changelog.md +11 -0
- data/README.md +5 -1
- data/apple_id_token.gemspec +8 -5
- data/lib/apple_id_token.rb +3 -6
- data/lib/apple_id_token/version.rb +1 -1
- metadata +28 -13
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ad562cca3077b3d45ecd2d551a6d4abc811041b0ea6c3f421ee65c0b69a23700
|
4
|
+
data.tar.gz: e878cd57f29ee0ec8ec969ee6a2c455e93ac9180f1f7fb43e51445f353832c3d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8004bc943b277f29601951567bd1925af9e1095a4a91c84bbaceb92ec607ddcc032938ea1c4a4cc0bf26decadc0c74dec56f3ec4b6eb416700a5119437fee96d
|
7
|
+
data.tar.gz: 47947f3aceacf3c49f7956ad931e894877bd78cd360b974853660cf5f8385a77ec53fac0900a40236c300fb6b15cb265ce5c036947216717fc4bfe3d859b7a17
|
data/.travis.yml
ADDED
data/Changelog.md
CHANGED
@@ -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
|
-
|
3
|
+
[](https://badge.fury.io/rb/apple_id_token)
|
4
|
+
[](https://travis-ci.org/PexegoUva/rails_apple_signin)
|
5
|
+
[](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
|
|
data/apple_id_token.gemspec
CHANGED
@@ -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', '
|
36
|
-
spec.add_runtime_dependency 'httparty', '
|
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.
|
39
|
-
spec.add_development_dependency "rake", "
|
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', "
|
43
|
+
spec.add_development_dependency 'fakeweb', "~> 1.3.0"
|
44
|
+
spec.add_development_dependency 'openssl', "~> 2.1.2"
|
42
45
|
end
|
data/lib/apple_id_token.rb
CHANGED
@@ -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.
|
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
|
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.
|
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-
|
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:
|
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:
|
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: '
|
145
|
+
version: '2.3'
|
131
146
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
132
147
|
requirements:
|
133
148
|
- - ">="
|