stytch 3.1.0 → 3.2.1

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: 2534e355696eda17e5f4b8dac2b21335fdd54183c29c9ac694ac8886caceccbd
4
- data.tar.gz: fcf8fea062ec5e2964fb3a32a2154a869b2e8256f6b7331e7aa29f7e52b2d0a8
3
+ metadata.gz: 9ae3fdbca4b9b650bd1efe53244d9752888ec610edfb92393b3c593d638ac219
4
+ data.tar.gz: 49d50b9bf2b9544bfc93b3e586fdf89efeefe3837bd1df07ce9eabdf9df1397c
5
5
  SHA512:
6
- metadata.gz: deb23398868a541f5a0cf46d2314c27e9d50675948d190edc4696457e7dfd79f412a60bcd36140d2cbd2f17267919b1cd46ff60c648abb8a58c12021f27027b4
7
- data.tar.gz: 5f763a8e124baf69867d99b8f80e76cbbe78bfb6d27199be31a097680187d90e24cb69bf66b97580e523b7287f3d41f97a007f5007d729d28d146721c66e314b
6
+ metadata.gz: b2e8a04d1eed6cced36ad8568b52794d3ca33ba181637739ec47553ba44957c72f5e1a1820c2a083005a69b5a204cb7946d73c58c342321bd87bd74a951ceb4f
7
+ data.tar.gz: 145f04af5a49a3a7d40f96fd35c9947e642e192e2d8fc7b572f12ed8d5dc3a22a7e5594bb94b68799fa380d9d233c90266e497ab86463c6ada6cf8144b64df73
@@ -88,6 +88,12 @@ module Stytch
88
88
  session_duration_minutes: session_duration_minutes,
89
89
  )
90
90
  end
91
+ rescue StandardError
92
+ # JWT could not be verified locally. Check with the Stytch API.
93
+ return authenticate(
94
+ session_jwt: session_jwt,
95
+ session_duration_minutes: session_duration_minutes,
96
+ )
91
97
  end
92
98
 
93
99
  # Parse a JWT and verify the signature locally (without calling /authenticate in the API)
@@ -97,7 +103,7 @@ module Stytch
97
103
  def authenticate_jwt_local(session_jwt)
98
104
  issuer = "stytch.com/" + @project_id
99
105
  begin
100
- decoded_token = JWT.decode session_jwt, nil, true,
106
+ decoded_token = JWT.decode session_jwt, nil, true,
101
107
  { jwks: @jwks_loader, iss: issuer, verify_iss: true, aud: @project_id, verify_aud: true, algorithms: ["RS256"]}
102
108
  return decoded_token[0]
103
109
  rescue JWT::InvalidIssuerError
@@ -113,12 +119,14 @@ module Stytch
113
119
 
114
120
  def marshal_jwt_into_session(jwt)
115
121
  stytch_claim = "https://stytch.com/session"
122
+ expires_at = jwt[stytch_claim]["expires_at"] || Time.at(jwt["exp"]).to_datetime.utc.strftime('%Y-%m-%dT%H:%M:%SZ')
116
123
  return {
117
- "session_id" => jwt["jti"],
124
+ "session_id" => jwt[stytch_claim]["id"],
118
125
  "user_id" => jwt["sub"],
119
126
  "started_at" => jwt[stytch_claim]["started_at"],
120
127
  "last_accessed_at" => jwt[stytch_claim]["last_accessed_at"],
121
- "expires_at" => Time.at(jwt["exp"]).to_datetime.iso8601,
128
+ # For JWTs that include it, prefer the inner expires_at claim.
129
+ "expires_at" => expires_at,
122
130
  "attributes" => jwt[stytch_claim]["attributes"],
123
131
  "authentication_factors" => jwt[stytch_claim]["authentication_factors"],
124
132
  }
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Stytch
4
- VERSION = '3.1.0'
4
+ VERSION = '3.2.1'
5
5
  end
data/stytch.gemspec CHANGED
@@ -27,6 +27,8 @@ Gem::Specification.new do |spec|
27
27
 
28
28
  spec.add_dependency 'faraday', '>= 0.17.0', '< 2.0'
29
29
  spec.add_dependency 'faraday_middleware', '>= 0.14.0', '< 2.0'
30
- spec.add_dependency 'jwt', '>= 2.3.0'
31
30
  spec.add_dependency 'json-jwt', '>=1.13.0'
31
+ spec.add_dependency 'jwt', '>= 2.3.0'
32
+
33
+ spec.add_development_dependency 'test-unit', '>=3.5.3'
32
34
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: stytch
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.1.0
4
+ version: 3.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - stytch
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-04-26 00:00:00.000000000 Z
11
+ date: 2022-05-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -50,6 +50,20 @@ dependencies:
50
50
  - - "<"
51
51
  - !ruby/object:Gem::Version
52
52
  version: '2.0'
53
+ - !ruby/object:Gem::Dependency
54
+ name: json-jwt
55
+ requirement: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - ">="
58
+ - !ruby/object:Gem::Version
59
+ version: 1.13.0
60
+ type: :runtime
61
+ prerelease: false
62
+ version_requirements: !ruby/object:Gem::Requirement
63
+ requirements:
64
+ - - ">="
65
+ - !ruby/object:Gem::Version
66
+ version: 1.13.0
53
67
  - !ruby/object:Gem::Dependency
54
68
  name: jwt
55
69
  requirement: !ruby/object:Gem::Requirement
@@ -65,20 +79,20 @@ dependencies:
65
79
  - !ruby/object:Gem::Version
66
80
  version: 2.3.0
67
81
  - !ruby/object:Gem::Dependency
68
- name: json-jwt
82
+ name: test-unit
69
83
  requirement: !ruby/object:Gem::Requirement
70
84
  requirements:
71
85
  - - ">="
72
86
  - !ruby/object:Gem::Version
73
- version: 1.13.0
74
- type: :runtime
87
+ version: 3.5.3
88
+ type: :development
75
89
  prerelease: false
76
90
  version_requirements: !ruby/object:Gem::Requirement
77
91
  requirements:
78
92
  - - ">="
79
93
  - !ruby/object:Gem::Version
80
- version: 1.13.0
81
- description:
94
+ version: 3.5.3
95
+ description:
82
96
  email:
83
97
  - support@stytch.com
84
98
  executables: []
@@ -118,7 +132,7 @@ licenses:
118
132
  metadata:
119
133
  homepage_uri: https://stytch.com
120
134
  source_code_uri: https://github.com/stytchauth/stytch-ruby
121
- post_install_message:
135
+ post_install_message:
122
136
  rdoc_options: []
123
137
  require_paths:
124
138
  - lib
@@ -133,8 +147,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
133
147
  - !ruby/object:Gem::Version
134
148
  version: '0'
135
149
  requirements: []
136
- rubygems_version: 3.0.3.1
137
- signing_key:
150
+ rubygems_version: 3.1.6
151
+ signing_key:
138
152
  specification_version: 4
139
153
  summary: Stytch Ruby Gem
140
154
  test_files: []