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 +4 -4
- data/lib/warden/auth0/strategy.rb +41 -25
- data/lib/warden/auth0/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 54c3afd13ee677f68ff3d9714dafe2e65618b0676ee572571b4ef5677ac619c9
|
4
|
+
data.tar.gz: 25c718da351deef825992ad9173e837a94d24a8cc1d8e087271d59d537fb1c05
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
-
|
24
|
-
raise "unimplemented resolver #{
|
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
|
-
|
47
|
-
aud_matches?(decoded_token,
|
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
|
-
|
58
|
-
raise Errors::NoConfiguredAud if
|
63
|
+
audience = Warden::Auth0.config.aud
|
64
|
+
raise Errors::NoConfiguredAud if audience.nil?
|
59
65
|
|
60
|
-
|
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
|
71
|
-
|
72
|
-
|
76
|
+
def issuer_matches?(payload, issuer_config)
|
77
|
+
token_issuer = payload['iss'].to_s
|
78
|
+
return false unless token_issuer
|
73
79
|
|
74
|
-
|
75
|
-
|
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,
|
79
|
-
|
89
|
+
def aud_matches?(payload, issuer_aud)
|
90
|
+
token_audience = payload['aud']
|
91
|
+
return false unless token_audience
|
80
92
|
|
81
|
-
|
82
|
-
|
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
|
-
|
85
|
-
@token ||= HeaderParser.from_env(env)
|
101
|
+
false
|
86
102
|
end
|
87
103
|
end
|
88
104
|
end
|
data/lib/warden/auth0/version.rb
CHANGED
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
|
+
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:
|
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
|