apple_id 0.6.0 → 1.0.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: 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