omniauth-fishbrain 0.11.2 → 0.11.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: bedfbaf6891f13e4fde627ca255cd69bd2fd662a68fcc0bdc929a81886cd33f6
4
- data.tar.gz: c92b9f4458eda83cd28c7b30dbff8c59576584a9ec159963a9d9ea04b23a4a37
3
+ metadata.gz: 5f50dfb6ad611857363bafd7f98dfd8a26c6241e021b285358a838bdf735e6b5
4
+ data.tar.gz: 64886edd7b774f99c6a58d989471c7c374fa98fb8c087cd8d0fd97cfc19b2dc0
5
5
  SHA512:
6
- metadata.gz: 2a61f6e3c4a649bb40e03b992335191e742bd760f5a372f72711ed09ac58da1fa53116424e9f3ed75a869de4bb1210ea1a5f97626f14c4107ec62c5c0e41bc7c
7
- data.tar.gz: bb2cfe13d12b9706b18739dfd967f63f770a68228bb12148285a26173383bd132660668d4fdd94ac9a3a6ec9daf25701a2cedbda30681f75730a79f2d30edf6a
6
+ metadata.gz: b07f0d861cc9d6cab95ee3e76d44c88d2a7d353de04d29f25c56b15b89b75ecc44515dabeeb382a966b727bde429e319a3ceeb58ebd436f7c9b110c77dc93b1f
7
+ data.tar.gz: 360bd6039fd1c0cc7039c4851997884f9d6c05e81cb594f36b058dd7909b08674307caab358739539498145aaaae957f4a7d32eeaf454009de431f00c5786b0f
@@ -0,0 +1,53 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'omniauth/fishbrain/jwks'
4
+ require 'jwt'
5
+
6
+ module OmniAuth
7
+ module Fishbrain
8
+ class DecodeIdToken
9
+ include Jwks
10
+
11
+ AWS_REGION = 'eu-west-1'
12
+ USER_POOL_ID = 'eu-west-1_TKWveIcYu'
13
+
14
+ attr_reader :client_id, :aws_region, :user_pool_id, :jwt_leeway
15
+
16
+ def initialize(client_id, user_pool_id = USER_POOL_ID, aws_region = AWS_REGION)
17
+ @client_id = client_id
18
+ @user_pool_id = user_pool_id
19
+ @aws_region = aws_region
20
+ @jwt_leeway = 60
21
+ end
22
+
23
+ def decode(raw_id_token)
24
+ JWT.decode(raw_id_token, nil, true, decode_options).first
25
+ end
26
+
27
+ private
28
+
29
+ def decode_options
30
+ {
31
+ iss: iss,
32
+ aud: client_id,
33
+ verify_aud: false,
34
+ verify_expiration: true,
35
+ verify_iat: true,
36
+ verify_iss: true,
37
+ verify_not_before: true,
38
+ leeway: jwt_leeway,
39
+ algorithm: 'RS256',
40
+ jwks: jwks,
41
+ }
42
+ end
43
+
44
+ def iss
45
+ "https://cognito-idp.#{aws_region}.amazonaws.com/#{user_pool_id}"
46
+ end
47
+
48
+ def jwks
49
+ get_json("#{iss}/.well-known/jwks.json")
50
+ end
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'net/http'
4
+ require 'api_cache'
5
+
6
+ module OmniAuth
7
+ module Fishbrain
8
+ module Jwks
9
+ def get_json(uri)
10
+ APICache.get('fishbrain_jwks', cache: 86_400) do # 24 hours
11
+ uri
12
+ .yield_self(&URI.method(:parse))
13
+ .yield_self(&Net::HTTP.method(:get))
14
+ .yield_self { |it| JSON.parse(it, symbolize_names: true) }
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
@@ -1,6 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'date'
4
3
  require 'json'
5
4
 
6
5
  module OmniAuth
@@ -9,15 +8,14 @@ module OmniAuth
9
8
  def premium_status
10
9
  return {} unless id_token['premium_status']
11
10
 
12
- JSON.parse id_token['premium_status']
11
+ JSON.parse(id_token['premium_status'])
13
12
  rescue JSON::ParserError
14
13
  {}
15
14
  end
16
15
 
17
16
  def premium?
18
- DateTime.rfc3339(premium_status['premium_end_date']) > DateTime.now
17
+ Time.xmlschema(premium_status['end_date']) > Time.new.utc
19
18
  rescue ArgumentError
20
- # if format was wrong
21
19
  false
22
20
  end
23
21
  end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'net/http'
3
+ require 'omniauth/fishbrain/jwks'
4
4
  require 'jwt'
5
5
 
6
6
  module OmniAuth
@@ -34,11 +34,7 @@ module OmniAuth
34
34
  end
35
35
 
36
36
  def jwks
37
- @_jwks ||= \
38
- "#{iss}/.well-known/jwks.json"
39
- .yield_self(&URI.method(:parse))
40
- .yield_self(&Net::HTTP.method(:get))
41
- .yield_self { |it| JSON.parse(it, symbolize_names: true) }
37
+ get_json("#{iss}/.well-known/jwks.json")
42
38
  end
43
39
  end
44
40
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module OmniAuth
4
4
  module Fishbrain
5
- VERSION = '0.11.2'
5
+ VERSION = '0.11.6'
6
6
  end
7
7
  end
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'omniauth/fishbrain/jwks'
3
4
  require 'omniauth-fishbrain/version'
4
5
  require 'omniauth/strategies/fishbrain'
5
6
  require 'omniauth/strategies/fishbrain_id'
metadata CHANGED
@@ -1,16 +1,30 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: omniauth-fishbrain
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.11.2
4
+ version: 0.11.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Erik Dalen
8
8
  - Fishbrain AB
9
- autorequire:
9
+ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2020-04-06 00:00:00.000000000 Z
12
+ date: 2021-08-30 00:00:00.000000000 Z
13
13
  dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: api_cache
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - "~>"
19
+ - !ruby/object:Gem::Version
20
+ version: 0.3.0
21
+ type: :runtime
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - "~>"
26
+ - !ruby/object:Gem::Version
27
+ version: 0.3.0
14
28
  - !ruby/object:Gem::Dependency
15
29
  name: jwt
16
30
  requirement: !ruby/object:Gem::Requirement
@@ -39,7 +53,7 @@ dependencies:
39
53
  - - "~>"
40
54
  - !ruby/object:Gem::Version
41
55
  version: '1.6'
42
- description:
56
+ description:
43
57
  email:
44
58
  - erik.dalen@fishbrain.com
45
59
  - developer@fishbrain.com
@@ -51,6 +65,8 @@ files:
51
65
  - README.markdown
52
66
  - lib/omniauth-fishbrain.rb
53
67
  - lib/omniauth-fishbrain/version.rb
68
+ - lib/omniauth/fishbrain/decode_id_token.rb
69
+ - lib/omniauth/fishbrain/jwks.rb
54
70
  - lib/omniauth/fishbrain/premium_status.rb
55
71
  - lib/omniauth/fishbrain/verifies_id_token.rb
56
72
  - lib/omniauth/strategies/fishbrain.rb
@@ -59,7 +75,7 @@ homepage: https://github.com/fishbrain/omniauth-fishbrain
59
75
  licenses:
60
76
  - MIT
61
77
  metadata: {}
62
- post_install_message:
78
+ post_install_message:
63
79
  rdoc_options: []
64
80
  require_paths:
65
81
  - lib
@@ -67,15 +83,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
67
83
  requirements:
68
84
  - - ">="
69
85
  - !ruby/object:Gem::Version
70
- version: '0'
86
+ version: 2.5.0
71
87
  required_rubygems_version: !ruby/object:Gem::Requirement
72
88
  requirements:
73
89
  - - ">="
74
90
  - !ruby/object:Gem::Version
75
91
  version: '0'
76
92
  requirements: []
77
- rubygems_version: 3.1.2
78
- signing_key:
93
+ rubygems_version: 3.2.3
94
+ signing_key:
79
95
  specification_version: 4
80
96
  summary: OmniAuth strategy for Fishbrain
81
97
  test_files: []