atomic_lti 1.2.0 → 1.3.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: 7381dbf24886137688f92e773144dd5194746ad605b426d743221a7ba2ec25ba
4
- data.tar.gz: ebc4d85849a13db6df43c0b6d906af6fe32b453fbbf3cf34934ff647a64d68c8
3
+ metadata.gz: a219867c2a1f19737d0222b0896e30a28144310a6032f1f6419443af37006304
4
+ data.tar.gz: ee72503b3f1066f5e3a5ea710da6d818eb2680d79d60e805c828b8f34ef95917
5
5
  SHA512:
6
- metadata.gz: 129f9b79ae60f4bb7a00db8199c83ee0348a6d2484280f895736e89e9d26cf3531fe9b557072cd07011234675ce658a8dfe6e1227e81442c2cdbcb2dccd4e685
7
- data.tar.gz: 955d5ff4465790e5106d9b551fdcd8b52b8a93cd41c919b16ac1d2c6b31cfd97f2637b8bd64aa5b26cd702e54c90ecb578749c9bc6ce8486057cb163d5978027
6
+ metadata.gz: 49fd684fa99b65a02402d968b2c53741af0ca19594f0a9ab083cc6d9e3e3a2780caeba0f4de3b31db200dcb8fa745d9b1771b0eae1ef7c025ad68baff5e49fb6
7
+ data.tar.gz: 8670e8c13dec604b3af371ad7bff7fb7102be8aac32e32ae0e3ebca80718546e1cab5dfb559f18455bddcd2535032310e6be6b12ad568e9d74b4dc1c29ba25c6
@@ -16,6 +16,19 @@ module AtomicLti
16
16
  errors.push("LTI token is missing required field sub")
17
17
  end
18
18
 
19
+ if decoded_token["aud"].blank?
20
+ errors.push("LTI token is missing required field aud")
21
+ end
22
+
23
+ if decoded_token["aud"].is_a?(Array) && decoded_token["aud"].length > 1
24
+ # OpenID Connect spec specifies the AZP should exist and be an AUD
25
+ if decoded_token["azp"].blank?
26
+ errors.push("LTI token has multiple aud and is missing required field azp")
27
+ elsif decoded_token["aud"].exclude?(decoded_token["azp"])
28
+ errors.push("LTI token azp is not one of the aud's")
29
+ end
30
+ end
31
+
19
32
  if decoded_token[AtomicLti::Definitions::DEPLOYMENT_ID].blank?
20
33
  errors.push(
21
34
  "LTI token is missing required field #{AtomicLti::Definitions::DEPLOYMENT_ID}"
@@ -90,5 +103,17 @@ module AtomicLti
90
103
  false
91
104
  end
92
105
  end
106
+
107
+ def self.client_id(decoded_token)
108
+ if decoded_token["aud"]&.is_a?(Array)
109
+ if decoded_token["aud"].length > 1
110
+ decoded_token["azp"]
111
+ else
112
+ decoded_token["aud"][0]
113
+ end
114
+ else
115
+ decoded_token["aud"]
116
+ end
117
+ end
93
118
  end
94
- end
119
+ end
@@ -27,7 +27,7 @@ module AtomicLti
27
27
  tag: tag,
28
28
  startDateTime: start_date_time,
29
29
  endDateTime: end_date_time,
30
- }
30
+ }.compact
31
31
  attrs["resourceLinkId"] = resource_link_id if resource_link_id
32
32
  if external_tool_url
33
33
  attrs[AtomicLti::Definitions::CANVAS_SUBMISSION_TYPE] = {
@@ -159,7 +159,7 @@ module AtomicLti
159
159
  end
160
160
 
161
161
  def update_install(id_token:)
162
- client_id = id_token["aud"]
162
+ client_id = AtomicLti::Lti.client_id(id_token)
163
163
  iss = id_token["iss"]
164
164
 
165
165
  if client_id.present? && iss.present?
@@ -202,7 +202,7 @@ module AtomicLti
202
202
  end
203
203
 
204
204
  def update_deployment(id_token:)
205
- client_id = id_token["aud"]
205
+ client_id = AtomicLti::Lti.client_id(id_token)
206
206
  iss = id_token["iss"]
207
207
  deployment_id = id_token[AtomicLti::Definitions::DEPLOYMENT_ID]
208
208
  platform_guid = id_token.dig(AtomicLti::Definitions::TOOL_PLATFORM_CLAIM, "guid")
@@ -1,3 +1,3 @@
1
1
  module AtomicLti
2
- VERSION = '1.2.0'
2
+ VERSION = '1.3.0'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: atomic_lti
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.0
4
+ version: 1.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matt Petro
@@ -10,36 +10,36 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2023-03-21 00:00:00.000000000 Z
13
+ date: 2023-03-22 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
- name: rails
16
+ name: pg
17
17
  requirement: !ruby/object:Gem::Requirement
18
18
  requirements:
19
19
  - - "~>"
20
20
  - !ruby/object:Gem::Version
21
- version: 7.0.3
21
+ version: '1.3'
22
22
  type: :runtime
23
23
  prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
25
25
  requirements:
26
26
  - - "~>"
27
27
  - !ruby/object:Gem::Version
28
- version: 7.0.3
28
+ version: '1.3'
29
29
  - !ruby/object:Gem::Dependency
30
- name: pg
30
+ name: rails
31
31
  requirement: !ruby/object:Gem::Requirement
32
32
  requirements:
33
- - - '='
33
+ - - "~>"
34
34
  - !ruby/object:Gem::Version
35
- version: 1.3.5
35
+ version: '7.0'
36
36
  type: :runtime
37
37
  prerelease: false
38
38
  version_requirements: !ruby/object:Gem::Requirement
39
39
  requirements:
40
- - - '='
40
+ - - "~>"
41
41
  - !ruby/object:Gem::Version
42
- version: 1.3.5
42
+ version: '7.0'
43
43
  description: AtomicLti implements the LTI Advantage specification. This gem does contain
44
44
  source code specific to other Atomic Jolt products
45
45
  email: