warden-auth0 0.4.2 → 0.5.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: 53ff7d4cd272f2a0a1f45dc8fbb761f199b25202b187ec8e0e53aabfeeec1729
4
- data.tar.gz: f605f8c6e8519917fa5b9ccc8049695b3d6b573aa2bb6bc28b2692951626f293
3
+ metadata.gz: 54c3afd13ee677f68ff3d9714dafe2e65618b0676ee572571b4ef5677ac619c9
4
+ data.tar.gz: 25c718da351deef825992ad9173e837a94d24a8cc1d8e087271d59d537fb1c05
5
5
  SHA512:
6
- metadata.gz: c8391f20dd8832db7ad18ee839cf54d8b5351351a300327bc4f262df17ac1615b52c77991e8d32ccd904fcd5e2439dbe7288b3c93cf07c170c88ff8c55381560
7
- data.tar.gz: 564cf79c6e4bd150859779d4ae2dc0fd416cf2efadf83c34e600678070881f702ee0c5a32e92e90fd98d69d085f96ea5f88900716fb5a7b365dd1186417baf06
6
+ metadata.gz: 3d9d3c595aea0c10ea9b60a98ced9be0695fbc26fe04ed90fc3c70ce85521afbc5d4a534b5a39470b1091fd24bb04e7c6de3af381d41c88097193f1c997b23ed
7
+ data.tar.gz: 5280943643893b15dbbdcac569e3a9cb619ddf7d05d775eb7cb20f84f9bd6280e000804c658de12a21e8bee12e595cab6b2861eeb0fa418e58f85600824f28ec
@@ -17,14 +17,12 @@ module Warden
17
17
 
18
18
  def authenticate!
19
19
  raise Errors::WrongIssuer, 'wrong issuer' unless issuer_claim_valid?
20
-
21
20
  raise Errors::WrongAud, 'wrong audience' unless aud_claim_valid?
22
21
 
23
- method = "#{scope}_resolver"
24
- raise "unimplemented resolver #{method}" unless respond_to?(method)
25
-
26
- user = send(method, decoded_token)
22
+ resolver_method = "#{scope}_resolver"
23
+ raise "unimplemented resolver #{resolver_method}" unless respond_to?(resolver_method)
27
24
 
25
+ user = send(resolver_method, decoded_token)
28
26
  raise Warden::Auth0::Errors::NilUser, 'nil user' unless user
29
27
 
30
28
  success!(user)
@@ -35,6 +33,18 @@ module Warden
35
33
 
36
34
  private
37
35
 
36
+ def token
37
+ @token ||= HeaderParser.from_env(env)
38
+ end
39
+
40
+ def token_exists?
41
+ !token.nil?
42
+ end
43
+
44
+ def decoded_token
45
+ TokenDecoder.new.call(token)
46
+ end
47
+
38
48
  def issuer_claim_valid?
39
49
  issuer = configured_issuer
40
50
  issuer_matches?(decoded_token, issuer)
@@ -43,21 +53,17 @@ module Warden
43
53
  end
44
54
 
45
55
  def aud_claim_valid?
46
- aud = configured_aud
47
- aud_matches?(decoded_token, aud)
56
+ audience = configured_aud
57
+ aud_matches?(decoded_token, audience)
48
58
  rescue JWT::DecodeError
49
59
  false
50
60
  end
51
61
 
52
- def decoded_token
53
- TokenDecoder.new.call(token)
54
- end
55
-
56
62
  def configured_aud
57
- configured_aud = Warden::Auth0.config.aud
58
- raise Errors::NoConfiguredAud if configured_aud.nil?
63
+ audience = Warden::Auth0.config.aud
64
+ raise Errors::NoConfiguredAud if audience.nil?
59
65
 
60
- configured_aud
66
+ audience
61
67
  end
62
68
 
63
69
  def configured_issuer
@@ -67,22 +73,32 @@ module Warden
67
73
  configured_issuer
68
74
  end
69
75
 
70
- def token_exists?
71
- !token.nil?
72
- end
76
+ def issuer_matches?(payload, issuer_config)
77
+ token_issuer = payload['iss'].to_s
78
+ return false unless token_issuer
73
79
 
74
- def issuer_matches?(payload, issuer)
75
- payload['iss'] == issuer.to_s
80
+ if issuer_config.is_a?(String)
81
+ return token_issuer == issuer_config.to_s
82
+ elsif issuer_config.is_a?(Array)
83
+ return issuer_config.map(&:to_s).include?(token_issuer)
84
+ end
85
+
86
+ false
76
87
  end
77
88
 
78
- def aud_matches?(payload, aud)
79
- return true if payload['aud'] == aud.to_s
89
+ def aud_matches?(payload, issuer_aud)
90
+ token_audience = payload['aud']
91
+ return false unless token_audience
80
92
 
81
- payload['aud'].is_a?(Array) && payload['aud'].include?(aud)
82
- end
93
+ if issuer_aud.is_a?(String)
94
+ return true if token_audience == issuer_aud.to_s
95
+ return token_audience.is_a?(Array) && token_audience.include?(issuer_aud)
96
+ elsif issuer_aud.is_a?(Array)
97
+ return true if issuer_aud.include?(token_audience)
98
+ return token_audience.is_a?(Array) && (token_audience & issuer_aud).any?
99
+ end
83
100
 
84
- def token
85
- @token ||= HeaderParser.from_env(env)
101
+ false
86
102
  end
87
103
  end
88
104
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Warden
4
4
  module Auth0
5
- VERSION = '0.4.2'
5
+ VERSION = '0.5.0'
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: warden-auth0
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.2
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - 1KOMMA5º
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-09-18 00:00:00.000000000 Z
11
+ date: 2025-06-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: dry-auto_inject