apple_id 0.6.0 → 1.0.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1653f825ddc4e3d854ecbae7ddbc50b9c476ffb6f8ce47b65f5ef5da6f27a3a2
4
- data.tar.gz: c850280ffd663ad634eb00abaeca1ff31ddc7da9c4744ef0ba5bf1627703c306
3
+ metadata.gz: 0e9aeb4597a1a98ef66341021c5587910e618d8b3ad37e355c44abf2a9105803
4
+ data.tar.gz: 312203fe9cf4ce80ed4b48cff8a024d7a83c03b0b7fda6b9895b9203a83efcd1
5
5
  SHA512:
6
- metadata.gz: 766ecaa71fd4973a73505393e66c27880eaf7c36ffae2a1c2c0e01432086532fe5e59b0958bb5f6344cb3e7e0e0beb4e7243a811899ad28796e481ae60148735
7
- data.tar.gz: 1be4e33bc46e15bced007b8f0288964bcf76d0becb7b67e988f0aca554e982834a421335e981941a4102ebe154bf4c33d178173510ed4fd59eeabee0691a3a7f
6
+ metadata.gz: 48e60bc4416e5516576b1e61386a72e40e27bc905e026d84444c247dfe1d226b6855abc0157a0955f90847d818c93cf7b33aab5fe8266214c1917ecf89502a04
7
+ data.tar.gz: 71d120ad10a5179b6925b7014cc37758a238b63544594f21bfec4bd49bca1cd4510fda334a7f7b6590e572e1f56b8cb43967000304ebbcf2edd2721d47f44f81
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.6.0
1
+ 1.0.0
data/lib/apple_id.rb CHANGED
@@ -54,3 +54,4 @@ end
54
54
  require 'apple_id/client'
55
55
  require 'apple_id/access_token'
56
56
  require 'apple_id/id_token'
57
+ require 'apple_id/jwks'
@@ -34,15 +34,8 @@ module AppleID
34
34
 
35
35
  private
36
36
 
37
- def jwks
38
- @jwks ||= JSON.parse(
39
- OpenIDConnect.http_client.get_content(JWKS_URI)
40
- ).with_indifferent_access
41
- JSON::JWK::Set.new @jwks[:keys]
42
- end
43
-
44
37
  def verify_signature!
45
- original_jwt.verify! jwks
38
+ original_jwt.verify! AppleID::JWKS.fetch(original_jwt.kid)
46
39
  rescue
47
40
  raise VerificationFailed, 'Signature Verification Failed'
48
41
  end
@@ -0,0 +1,27 @@
1
+ module AppleID
2
+ class JWKS
3
+ class Cache
4
+ def fetch(cache_key)
5
+ yield
6
+ end
7
+ end
8
+
9
+ def self.cache=(cache)
10
+ @@cache = cache
11
+ end
12
+ def self.cache
13
+ @@cache
14
+ end
15
+ self.cache = Cache.new
16
+
17
+ def self.fetch(cache_key)
18
+ jwks = cache.fetch("apple_id:jwks:#{cache_key}") do
19
+ JSON::JWK::Set.new(
20
+ JSON.parse(
21
+ OpenIDConnect.http_client.get_content(JWKS_URI)
22
+ ).with_indifferent_access[:keys]
23
+ )
24
+ end
25
+ end
26
+ end
27
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: apple_id
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.0
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - nov
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-03-25 00:00:00.000000000 Z
11
+ date: 2020-05-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rack-oauth2
@@ -145,6 +145,7 @@ files:
145
145
  - lib/apple_id/access_token.rb
146
146
  - lib/apple_id/client.rb
147
147
  - lib/apple_id/id_token.rb
148
+ - lib/apple_id/jwks.rb
148
149
  homepage: https://github.com/nov/apple_id
149
150
  licenses:
150
151
  - MIT