omniauth-fishbrain 0.11.0 → 0.11.5
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/README.markdown +2 -2
- data/lib/omniauth-fishbrain/version.rb +1 -1
- data/lib/omniauth/fishbrain/decode_id_token.rb +54 -0
- data/lib/omniauth/fishbrain/premium_status.rb +2 -4
- data/lib/omniauth/fishbrain/verifies_id_token.rb +5 -5
- data/lib/omniauth/strategies/fishbrain.rb +1 -1
- data/lib/omniauth/strategies/fishbrain_id.rb +4 -5
- metadata +5 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1637721816e60eb974b77e438d29b21943e039b2ec6deb97fd621b055ea9b3f9
|
4
|
+
data.tar.gz: 7a25399a0f3cdff975adccbdb46fbf2679417978756fad9336be4e9be26fb9af
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f54afe7e9de9d46401a3c6c387a63a42e2661ccaf81fe674fdd73c840db162a44360e1f4011020d8faa7b191a65ff9073909ef0c498d15a7e09ae544c3e9b35a
|
7
|
+
data.tar.gz: fce1acff0dbc7abbe47f4113c5abb978bd08e8bbc4d6fd59fc62bbe9eaa608caf5175e4490a8369c3f6fa74f81b8e714a5667159e23bbb81ce2e146e5eade613
|
data/README.markdown
CHANGED
@@ -30,11 +30,11 @@ In development/test/staging environments:
|
|
30
30
|
```ruby
|
31
31
|
use OmniAuth::Builder do
|
32
32
|
provider :fishbrain, ENV['FISHBRAIN_CLIENT_ID'], ENV['FISHBRAIN_CLIENT_SECRET'],
|
33
|
-
user_pool_id: 'eu-west-
|
33
|
+
user_pool_id: 'eu-west-1_WlBhbuD6e',
|
34
34
|
client_options: {
|
35
35
|
site: 'https://accounts-staging.fishbrain.com',
|
36
36
|
}
|
37
|
-
provider :fishbrain_id, user_pool_id: 'eu-west-
|
37
|
+
provider :fishbrain_id, user_pool_id: 'eu-west-1_WlBhbuD6e'
|
38
38
|
end
|
39
39
|
```
|
40
40
|
|
@@ -0,0 +1,54 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'net/http'
|
4
|
+
require 'jwt'
|
5
|
+
|
6
|
+
module OmniAuth
|
7
|
+
module Fishbrain
|
8
|
+
class DecodeIdToken
|
9
|
+
AWS_REGION = 'eu-west-1'
|
10
|
+
USER_POOL_ID = 'eu-west-1_TKWveIcYu'
|
11
|
+
|
12
|
+
attr_reader :client_id, :aws_region, :user_pool_id, :jwt_leeway
|
13
|
+
|
14
|
+
def initialize(client_id, user_pool_id = USER_POOL_ID, aws_region = AWS_REGION)
|
15
|
+
@client_id = client_id
|
16
|
+
@user_pool_id = user_pool_id
|
17
|
+
@aws_region = aws_region
|
18
|
+
@jwt_leeway = 60
|
19
|
+
end
|
20
|
+
|
21
|
+
def decode(raw_id_token)
|
22
|
+
JWT.decode(raw_id_token, nil, true, decode_options).first
|
23
|
+
end
|
24
|
+
|
25
|
+
private
|
26
|
+
|
27
|
+
def decode_options
|
28
|
+
{
|
29
|
+
iss: iss,
|
30
|
+
aud: client_id,
|
31
|
+
verify_aud: false,
|
32
|
+
verify_expiration: true,
|
33
|
+
verify_iat: true,
|
34
|
+
verify_iss: true,
|
35
|
+
verify_not_before: true,
|
36
|
+
leeway: jwt_leeway,
|
37
|
+
algorithm: 'RS256',
|
38
|
+
jwks: jwks,
|
39
|
+
}
|
40
|
+
end
|
41
|
+
|
42
|
+
def iss
|
43
|
+
"https://cognito-idp.#{aws_region}.amazonaws.com/#{user_pool_id}"
|
44
|
+
end
|
45
|
+
|
46
|
+
def jwks
|
47
|
+
@_jwks ||= "#{iss}/.well-known/jwks.json"
|
48
|
+
.yield_self(&URI.method(:parse))
|
49
|
+
.yield_self(&Net::HTTP.method(:get))
|
50
|
+
.yield_self { |it| JSON.parse(it, symbolize_names: true) }
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
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
|
11
|
+
JSON.parse(id_token['premium_status'])
|
13
12
|
rescue JSON::ParserError
|
14
13
|
{}
|
15
14
|
end
|
16
15
|
|
17
16
|
def premium?
|
18
|
-
|
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
|
@@ -7,11 +7,11 @@ module OmniAuth
|
|
7
7
|
module Fishbrain
|
8
8
|
module VerifiesIdToken
|
9
9
|
def id_token
|
10
|
-
@_id_token ||=
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
10
|
+
@_id_token ||= if raw_id_token&.strip&.empty?
|
11
|
+
{}
|
12
|
+
else
|
13
|
+
JWT.decode(raw_id_token, nil, true, decode_options).first
|
14
|
+
end
|
15
15
|
end
|
16
16
|
|
17
17
|
def decode_options
|
@@ -16,7 +16,7 @@ module OmniAuth
|
|
16
16
|
token_url: '/oauth2/token',
|
17
17
|
auth_scheme: :basic_auth
|
18
18
|
option :scope, 'email openid profile'
|
19
|
-
option :user_pool_id, 'eu-west-
|
19
|
+
option :user_pool_id, 'eu-west-1_TKWveIcYu'
|
20
20
|
option :aws_region, 'eu-west-1'
|
21
21
|
option :jwt_leeway, 60
|
22
22
|
|
@@ -11,7 +11,7 @@ module OmniAuth
|
|
11
11
|
include OmniAuth::Fishbrain::PremiumStatus
|
12
12
|
|
13
13
|
option :name, 'fishbrain_id'
|
14
|
-
option :user_pool_id, 'eu-west-
|
14
|
+
option :user_pool_id, 'eu-west-1_TKWveIcYu'
|
15
15
|
option :client_id, nil
|
16
16
|
option :aws_region, 'eu-west-1'
|
17
17
|
option :jwt_leeway, 60
|
@@ -37,11 +37,10 @@ module OmniAuth
|
|
37
37
|
end
|
38
38
|
|
39
39
|
def callback_phase
|
40
|
-
if
|
41
|
-
id_token
|
42
|
-
super
|
43
|
-
else
|
40
|
+
if id_token.empty?
|
44
41
|
fail! :missing_id_token
|
42
|
+
else
|
43
|
+
super
|
45
44
|
end
|
46
45
|
rescue JWT::ExpiredSignature
|
47
46
|
fail! :invalid_id_token
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: omniauth-fishbrain
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.11.
|
4
|
+
version: 0.11.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Erik Dalen
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2020-
|
12
|
+
date: 2020-08-17 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: jwt
|
@@ -51,6 +51,7 @@ files:
|
|
51
51
|
- README.markdown
|
52
52
|
- lib/omniauth-fishbrain.rb
|
53
53
|
- lib/omniauth-fishbrain/version.rb
|
54
|
+
- lib/omniauth/fishbrain/decode_id_token.rb
|
54
55
|
- lib/omniauth/fishbrain/premium_status.rb
|
55
56
|
- lib/omniauth/fishbrain/verifies_id_token.rb
|
56
57
|
- lib/omniauth/strategies/fishbrain.rb
|
@@ -67,15 +68,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
67
68
|
requirements:
|
68
69
|
- - ">="
|
69
70
|
- !ruby/object:Gem::Version
|
70
|
-
version:
|
71
|
+
version: 2.5.0
|
71
72
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
72
73
|
requirements:
|
73
74
|
- - ">="
|
74
75
|
- !ruby/object:Gem::Version
|
75
76
|
version: '0'
|
76
77
|
requirements: []
|
77
|
-
|
78
|
-
rubygems_version: 2.7.6
|
78
|
+
rubygems_version: 3.0.3
|
79
79
|
signing_key:
|
80
80
|
specification_version: 4
|
81
81
|
summary: OmniAuth strategy for Fishbrain
|