aws-sdk-core 3.214.0 → 3.217.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +46 -0
- data/VERSION +1 -1
- data/lib/aws-sdk-core/arn.rb +1 -3
- data/lib/aws-sdk-core/cbor/decoder.rb +0 -2
- data/lib/aws-sdk-core/cbor/encoder.rb +2 -2
- data/lib/aws-sdk-core/log/param_formatter.rb +7 -3
- data/lib/aws-sdk-core/plugins/checksum_algorithm.rb +332 -170
- data/lib/aws-sdk-core/plugins/http_checksum.rb +2 -8
- data/lib/aws-sdk-core/plugins/user_agent.rb +10 -1
- data/lib/aws-sdk-core/shared_config.rb +2 -0
- data/lib/aws-sdk-sso/client.rb +24 -1
- data/lib/aws-sdk-sso.rb +1 -1
- data/lib/aws-sdk-ssooidc/client.rb +48 -19
- data/lib/aws-sdk-ssooidc/types.rb +20 -15
- data/lib/aws-sdk-ssooidc.rb +1 -1
- data/lib/aws-sdk-sts/client.rb +35 -13
- data/lib/aws-sdk-sts/types.rb +5 -6
- data/lib/aws-sdk-sts.rb +1 -1
- data/lib/seahorse/client/response.rb +2 -0
- 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: 0d69c30847ca1ab026b4cd1ebc6f8aa452037d53cf18944c5a9b2e809bc22705
|
4
|
+
data.tar.gz: c5879a155441effb02965b96f0db25af0425888e5bac3b87efda1d3d16d05457
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 20b8d0eaea9e5db24d3a766c7c38628265a7c4690e816eea05eb30477e515005a43f91ada69c26271137f7d9d7f1c5f0f292443b80a706eece29f9b67bd8ee60
|
7
|
+
data.tar.gz: b6d7887ed9893431e0f2f165d9fc7bc2bfb223e5a08a9f87c55087c518b3d7dcfb732e902a1909ce872865a58e6b25c77cb2f994c3fe495ebec041480f06ea41
|
data/CHANGELOG.md
CHANGED
@@ -1,6 +1,52 @@
|
|
1
1
|
Unreleased Changes
|
2
2
|
------------------
|
3
3
|
|
4
|
+
3.217.0 (2025-01-24)
|
5
|
+
------------------
|
6
|
+
|
7
|
+
* Feature - Updated Aws::SSOOIDC::Client with the latest API changes.
|
8
|
+
|
9
|
+
* Feature - Fixed typos in the descriptions.
|
10
|
+
|
11
|
+
3.216.1 (2025-01-22)
|
12
|
+
------------------
|
13
|
+
|
14
|
+
* Issue - Use epoch seconds instead of milliseconds in cbor encode/decode.
|
15
|
+
|
16
|
+
* Issue - Add handling of block in response delegation (#3169).
|
17
|
+
|
18
|
+
3.216.0 (2025-01-15)
|
19
|
+
------------------
|
20
|
+
|
21
|
+
* Feature - Updated Aws::STS::Client with the latest API changes.
|
22
|
+
|
23
|
+
* Feature - Updated Aws::SSOOIDC::Client with the latest API changes.
|
24
|
+
|
25
|
+
* Feature - Updated Aws::SSO::Client with the latest API changes.
|
26
|
+
|
27
|
+
* Feature - Always calculate request checksums for operations that support or require it. Supported config options are `when_supported` and `when_required`. The default value is `when_supported`. This option is configured in code with `:request_checksum_calculation`, in the shared config file as `request_checksum_calculation`, and in the ENV as `ENV['AWS_REQUEST_CHECKSUM_CALCULATION']`.
|
28
|
+
|
29
|
+
* Feature - Always validate response checksums for operations that support or require it. Supported config options are `when_supported` and `when_required`. The default value is `when_supported`. This option is configured in code with `:response_checksum_validation`, in the shared config file as `response_checksum_validation`, and in the ENV as `ENV['AWS_RESPONSE_CHECKSUM_VALIDATION']`.
|
30
|
+
|
31
|
+
* Feature - Support CRC64NVME checksums through the `aws-crt` gem.
|
32
|
+
|
33
|
+
3.215.1 (2025-01-14)
|
34
|
+
------------------
|
35
|
+
|
36
|
+
* Issue - Fixed error when attempting to log an unlinked tempfile.
|
37
|
+
|
38
|
+
3.215.0 (2025-01-10)
|
39
|
+
------------------
|
40
|
+
|
41
|
+
* Feature - Updated Aws::STS::Client with the latest API changes.
|
42
|
+
|
43
|
+
* Feature - Fixed typos in the descriptions.
|
44
|
+
|
45
|
+
3.214.1 (2024-12-28)
|
46
|
+
------------------
|
47
|
+
|
48
|
+
* Issue - Fix documentation that references a non-existent method.
|
49
|
+
|
4
50
|
3.214.0 (2024-11-25)
|
5
51
|
------------------
|
6
52
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
3.
|
1
|
+
3.217.0
|
data/lib/aws-sdk-core/arn.rb
CHANGED
@@ -24,9 +24,7 @@ module Aws
|
|
24
24
|
# arn.resource
|
25
25
|
# # => foo/bar
|
26
26
|
#
|
27
|
-
#
|
28
|
-
# @see Aws::ARNParser#parse_resource
|
29
|
-
#
|
27
|
+
# @see ARNParser
|
30
28
|
# @see https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html#genref-arns
|
31
29
|
class ARN
|
32
30
|
|
@@ -51,13 +51,17 @@ module Aws
|
|
51
51
|
when String then summarize_string(value)
|
52
52
|
when Hash then '{' + summarize_hash(value) + '}'
|
53
53
|
when Array then summarize_array(value)
|
54
|
-
when File then summarize_file(value
|
55
|
-
when Pathname then
|
54
|
+
when File then summarize_file(value)
|
55
|
+
when Pathname then summarize_filepath(value)
|
56
56
|
else value.inspect
|
57
57
|
end
|
58
58
|
end
|
59
59
|
|
60
|
-
def summarize_file(
|
60
|
+
def summarize_file(file)
|
61
|
+
"#<File:#{file.path} (#{file.size} bytes)>"
|
62
|
+
end
|
63
|
+
|
64
|
+
def summarize_filepath(path)
|
61
65
|
"#<File:#{path} (#{File.size(path)} bytes)>"
|
62
66
|
end
|
63
67
|
|
@@ -13,34 +13,131 @@ module Aws
|
|
13
13
|
begin
|
14
14
|
require 'aws-crt'
|
15
15
|
supported << 'CRC32C'
|
16
|
+
supported << 'CRC64NVME' if Aws::Crt::GEM_VERSION >= '0.3.0'
|
16
17
|
rescue LoadError
|
18
|
+
# Ignored
|
17
19
|
end
|
18
20
|
supported
|
19
21
|
end.freeze
|
20
22
|
|
21
|
-
|
22
|
-
|
23
|
-
|
23
|
+
CRT_ALGORITHMS = %w[CRC32C CRC64NVME].freeze
|
24
|
+
|
25
|
+
# Priority order of checksum algorithms to validate responses against.
|
26
|
+
# Remove any algorithms not supported by client (ie, depending on CRT availability).
|
27
|
+
# This list was chosen based on average performance.
|
28
|
+
CHECKSUM_ALGORITHM_PRIORITIES = %w[CRC32 CRC32C CRC64NVME SHA1 SHA256] & CLIENT_ALGORITHMS
|
24
29
|
|
25
30
|
# byte size of checksums, used in computing the trailer length
|
26
31
|
CHECKSUM_SIZE = {
|
27
|
-
'CRC32' =>
|
28
|
-
'CRC32C' =>
|
29
|
-
'
|
30
|
-
|
31
|
-
|
32
|
+
'CRC32' => 9,
|
33
|
+
'CRC32C' => 9,
|
34
|
+
'CRC64NVME' => 13,
|
35
|
+
# SHA functions need 1 byte padding because of how they are encoded
|
36
|
+
'SHA1' => 28 + 1,
|
37
|
+
'SHA256' => 44 + 1
|
38
|
+
}.freeze
|
39
|
+
|
40
|
+
DEFAULT_CHECKSUM = 'CRC32'
|
41
|
+
|
42
|
+
option(:request_checksum_calculation,
|
43
|
+
doc_default: 'when_supported',
|
44
|
+
doc_type: 'String',
|
45
|
+
docstring: <<~DOCS) do |cfg|
|
46
|
+
Determines when a checksum will be calculated for request payloads. Values are:
|
47
|
+
|
48
|
+
* `when_supported` - (default) When set, a checksum will be
|
49
|
+
calculated for all request payloads of operations modeled with the
|
50
|
+
`httpChecksum` trait where `requestChecksumRequired` is `true` and/or a
|
51
|
+
`requestAlgorithmMember` is modeled.
|
52
|
+
* `when_required` - When set, a checksum will only be calculated for
|
53
|
+
request payloads of operations modeled with the `httpChecksum` trait where
|
54
|
+
`requestChecksumRequired` is `true` or where a `requestAlgorithmMember`
|
55
|
+
is modeled and supplied.
|
56
|
+
DOCS
|
57
|
+
resolve_request_checksum_calculation(cfg)
|
58
|
+
end
|
32
59
|
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
60
|
+
option(:response_checksum_validation,
|
61
|
+
doc_default: 'when_supported',
|
62
|
+
doc_type: 'String',
|
63
|
+
docstring: <<~DOCS) do |cfg|
|
64
|
+
Determines when checksum validation will be performed on response payloads. Values are:
|
65
|
+
|
66
|
+
* `when_supported` - (default) When set, checksum validation is performed on all
|
67
|
+
response payloads of operations modeled with the `httpChecksum` trait where
|
68
|
+
`responseAlgorithms` is modeled, except when no modeled checksum algorithms
|
69
|
+
are supported.
|
70
|
+
* `when_required` - When set, checksum validation is not performed on
|
71
|
+
response payloads of operations unless the checksum algorithm is supported and
|
72
|
+
the `requestValidationModeMember` member is set to `ENABLED`.
|
73
|
+
DOCS
|
74
|
+
resolve_response_checksum_validation(cfg)
|
75
|
+
end
|
38
76
|
|
39
|
-
|
77
|
+
class << self
|
78
|
+
def digest_for_algorithm(algorithm)
|
79
|
+
case algorithm
|
80
|
+
when 'CRC32'
|
81
|
+
Digest.new(Zlib.method(:crc32), 'N')
|
82
|
+
when 'CRC32C'
|
83
|
+
Digest.new(Aws::Crt::Checksums.method(:crc32c), 'N')
|
84
|
+
when 'CRC64NVME'
|
85
|
+
Digest.new(Aws::Crt::Checksums.method(:crc64nvme), 'Q>')
|
86
|
+
when 'SHA1'
|
87
|
+
::Digest::SHA1.new
|
88
|
+
when 'SHA256'
|
89
|
+
::Digest::SHA256.new
|
90
|
+
else
|
91
|
+
raise ArgumentError,
|
92
|
+
"#{algorithm} is not a supported checksum algorithm."
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
# The trailer size (in bytes) is the overhead (0, \r, \n) + the trailer
|
97
|
+
# name + the bytesize of the base64 encoded checksum.
|
98
|
+
def trailer_length(algorithm, location_name)
|
99
|
+
7 + location_name.size + CHECKSUM_SIZE[algorithm]
|
100
|
+
end
|
40
101
|
|
41
|
-
|
42
|
-
|
102
|
+
private
|
103
|
+
|
104
|
+
def resolve_request_checksum_calculation(cfg)
|
105
|
+
mode = ENV['AWS_REQUEST_CHECKSUM_CALCULATION'] ||
|
106
|
+
Aws.shared_config.request_checksum_calculation(profile: cfg.profile) ||
|
107
|
+
'when_supported'
|
108
|
+
mode = mode.downcase
|
109
|
+
unless %w[when_supported when_required].include?(mode)
|
110
|
+
raise ArgumentError,
|
111
|
+
'expected :request_checksum_calculation or' \
|
112
|
+
" ENV['AWS_REQUEST_CHECKSUM_CALCULATION'] to be " \
|
113
|
+
'`when_supported` or `when_required`.'
|
114
|
+
end
|
115
|
+
mode
|
116
|
+
end
|
117
|
+
|
118
|
+
def resolve_response_checksum_validation(cfg)
|
119
|
+
mode = ENV['AWS_RESPONSE_CHECKSUM_VALIDATION'] ||
|
120
|
+
Aws.shared_config.response_checksum_validation(profile: cfg.profile) ||
|
121
|
+
'when_supported'
|
122
|
+
mode = mode.downcase
|
123
|
+
unless %w[when_supported when_required].include?(mode)
|
124
|
+
raise ArgumentError,
|
125
|
+
'expected :response_checksum_validation or' \
|
126
|
+
" ENV['AWS_RESPONSE_CHECKSUM_VALIDATION'] to be " \
|
127
|
+
'`when_supported` or `when_required`.'
|
128
|
+
end
|
129
|
+
mode
|
130
|
+
end
|
131
|
+
end
|
132
|
+
|
133
|
+
# Interface for computing digests on request/response bodies
|
134
|
+
# which may be files, strings or IO like objects.
|
135
|
+
# Applies only to digest functions that produce 32 or 64 bit
|
136
|
+
# integer checksums (eg CRC32 or CRC64).
|
137
|
+
class Digest
|
138
|
+
def initialize(digest_fn, directive)
|
43
139
|
@digest_fn = digest_fn
|
140
|
+
@directive = directive
|
44
141
|
@value = 0
|
45
142
|
end
|
46
143
|
|
@@ -49,125 +146,223 @@ module Aws
|
|
49
146
|
end
|
50
147
|
|
51
148
|
def base64digest
|
52
|
-
Base64.encode64([@value].pack(
|
149
|
+
Base64.encode64([@value].pack(@directive)).chomp
|
53
150
|
end
|
54
151
|
end
|
55
152
|
|
56
153
|
def add_handlers(handlers, _config)
|
57
154
|
handlers.add(OptionHandler, step: :initialize)
|
58
|
-
#
|
59
|
-
# built but before it is signed
|
155
|
+
# Priority is set low to ensure the checksum is computed AFTER the
|
156
|
+
# request is built but before it is signed.
|
60
157
|
handlers.add(ChecksumHandler, priority: 15, step: :build)
|
61
158
|
end
|
62
159
|
|
63
|
-
private
|
64
|
-
|
65
|
-
def self.request_algorithm_selection(context)
|
66
|
-
return unless context.operation.http_checksum
|
67
|
-
|
68
|
-
input_member = context.operation.http_checksum['requestAlgorithmMember']
|
69
|
-
context.params[input_member.to_sym]&.upcase if input_member
|
70
|
-
end
|
71
|
-
|
72
|
-
def self.request_validation_mode(context)
|
73
|
-
return unless context.operation.http_checksum
|
74
|
-
|
75
|
-
input_member = context.operation.http_checksum['requestValidationModeMember']
|
76
|
-
context.params[input_member.to_sym] if input_member
|
77
|
-
end
|
78
|
-
|
79
|
-
def self.operation_response_algorithms(context)
|
80
|
-
return unless context.operation.http_checksum
|
81
|
-
|
82
|
-
context.operation.http_checksum['responseAlgorithms']
|
83
|
-
end
|
84
|
-
|
85
|
-
|
86
|
-
# @api private
|
87
160
|
class OptionHandler < Seahorse::Client::Handler
|
88
161
|
def call(context)
|
89
162
|
context[:http_checksum] ||= {}
|
90
163
|
|
91
|
-
#
|
92
|
-
if
|
93
|
-
|
94
|
-
if (request_input == 'CRC32C')
|
95
|
-
raise ArgumentError, "CRC32C requires crt support - install the aws-crt gem for support."
|
96
|
-
else
|
97
|
-
raise ArgumentError, "#{request_input} is not a supported checksum algorithm."
|
98
|
-
end
|
99
|
-
end
|
100
|
-
end
|
101
|
-
|
102
|
-
# validate response configuration
|
103
|
-
if (ChecksumAlgorithm.request_validation_mode(context))
|
104
|
-
# Compute an ordered list as the union between priority supported and the
|
105
|
-
# operation's modeled response algorithms.
|
106
|
-
validation_list = CHECKSUM_ALGORITHM_PRIORITIES &
|
107
|
-
ChecksumAlgorithm.operation_response_algorithms(context)
|
108
|
-
context[:http_checksum][:validation_list] = validation_list
|
164
|
+
# Set validation mode to enabled when supported.
|
165
|
+
if context.config.response_checksum_validation == 'when_supported'
|
166
|
+
enable_request_validation_mode(context)
|
109
167
|
end
|
110
168
|
|
111
169
|
@handler.call(context)
|
112
170
|
end
|
171
|
+
|
172
|
+
private
|
173
|
+
|
174
|
+
def enable_request_validation_mode(context)
|
175
|
+
return unless context.operation.http_checksum
|
176
|
+
|
177
|
+
input_member = context.operation.http_checksum['requestValidationModeMember']
|
178
|
+
context.params[input_member.to_sym] ||= 'ENABLED' if input_member
|
179
|
+
end
|
113
180
|
end
|
114
181
|
|
115
|
-
# @api private
|
116
182
|
class ChecksumHandler < Seahorse::Client::Handler
|
117
|
-
|
118
183
|
def call(context)
|
184
|
+
algorithm = nil
|
119
185
|
if should_calculate_request_checksum?(context)
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
'in' => checksum_request_in(context),
|
127
|
-
'name' => "x-amz-checksum-#{request_algorithm_input.downcase}"
|
186
|
+
algorithm = choose_request_algorithm!(context)
|
187
|
+
request_algorithm = {
|
188
|
+
algorithm: algorithm,
|
189
|
+
in: checksum_request_in(context),
|
190
|
+
name: "x-amz-checksum-#{algorithm.downcase}",
|
191
|
+
request_algorithm_header: request_algorithm_header(context)
|
128
192
|
}
|
129
193
|
|
130
|
-
|
194
|
+
context[:http_checksum][:request_algorithm] = request_algorithm
|
195
|
+
calculate_request_checksum(context, request_algorithm)
|
131
196
|
end
|
132
197
|
|
133
198
|
if should_verify_response_checksum?(context)
|
134
199
|
add_verify_response_checksum_handlers(context)
|
135
200
|
end
|
136
201
|
|
137
|
-
@handler.call(context)
|
202
|
+
with_metrics(context.config, algorithm) { @handler.call(context) }
|
138
203
|
end
|
139
204
|
|
140
205
|
private
|
141
206
|
|
142
|
-
def
|
207
|
+
def with_metrics(config, algorithm, &block)
|
208
|
+
metrics = []
|
209
|
+
add_request_config_metric(config, metrics)
|
210
|
+
add_response_config_metric(config, metrics)
|
211
|
+
add_request_checksum_metrics(algorithm, metrics)
|
212
|
+
Aws::Plugins::UserAgent.metric(*metrics, &block)
|
213
|
+
end
|
214
|
+
|
215
|
+
def add_request_config_metric(config, metrics)
|
216
|
+
case config.request_checksum_calculation
|
217
|
+
when 'when_supported'
|
218
|
+
metrics << 'FLEXIBLE_CHECKSUMS_REQ_WHEN_SUPPORTED'
|
219
|
+
when 'when_required'
|
220
|
+
metrics << 'FLEXIBLE_CHECKSUMS_REQ_WHEN_REQUIRED'
|
221
|
+
end
|
222
|
+
end
|
223
|
+
|
224
|
+
def add_response_config_metric(config, metrics)
|
225
|
+
case config.response_checksum_validation
|
226
|
+
when 'when_supported'
|
227
|
+
metrics << 'FLEXIBLE_CHECKSUMS_RES_WHEN_SUPPORTED'
|
228
|
+
when 'when_required'
|
229
|
+
metrics << 'FLEXIBLE_CHECKSUMS_RES_WHEN_REQUIRED'
|
230
|
+
end
|
231
|
+
end
|
232
|
+
|
233
|
+
def add_request_checksum_metrics(algorithm, metrics)
|
234
|
+
case algorithm
|
235
|
+
when 'CRC32'
|
236
|
+
metrics << 'FLEXIBLE_CHECKSUMS_REQ_CRC32'
|
237
|
+
when 'CRC32C'
|
238
|
+
metrics << 'FLEXIBLE_CHECKSUMS_REQ_CRC32C'
|
239
|
+
when 'CRC64NVME'
|
240
|
+
metrics << 'FLEXIBLE_CHECKSUMS_REQ_CRC64'
|
241
|
+
when 'SHA1'
|
242
|
+
metrics << 'FLEXIBLE_CHECKSUMS_REQ_SHA1'
|
243
|
+
when 'SHA256'
|
244
|
+
metrics << 'FLEXIBLE_CHECKSUMS_REQ_SHA256'
|
245
|
+
end
|
246
|
+
end
|
247
|
+
|
248
|
+
def request_algorithm_selection(context)
|
249
|
+
return unless context.operation.http_checksum
|
250
|
+
|
251
|
+
input_member = context.operation.http_checksum['requestAlgorithmMember']
|
252
|
+
context.params[input_member.to_sym] ||= DEFAULT_CHECKSUM if input_member
|
253
|
+
end
|
254
|
+
|
255
|
+
def request_algorithm_header(context)
|
256
|
+
input_member = context.operation.http_checksum['requestAlgorithmMember']
|
257
|
+
shape = context.operation.input.shape.member(input_member)
|
258
|
+
shape.location_name if shape && shape.location == 'header'
|
259
|
+
end
|
260
|
+
|
261
|
+
def request_validation_mode(context)
|
262
|
+
return unless context.operation.http_checksum
|
263
|
+
|
264
|
+
input_member = context.operation.http_checksum['requestValidationModeMember']
|
265
|
+
context.params[input_member.to_sym] if input_member
|
266
|
+
end
|
267
|
+
|
268
|
+
def operation_response_algorithms(context)
|
269
|
+
return unless context.operation.http_checksum
|
270
|
+
|
271
|
+
context.operation.http_checksum['responseAlgorithms']
|
272
|
+
end
|
273
|
+
|
274
|
+
def checksum_required?(context)
|
275
|
+
(http_checksum = context.operation.http_checksum) &&
|
276
|
+
(checksum_required = http_checksum['requestChecksumRequired']) &&
|
277
|
+
(checksum_required && context.config.request_checksum_calculation == 'when_required')
|
278
|
+
end
|
279
|
+
|
280
|
+
def checksum_optional?(context)
|
143
281
|
context.operation.http_checksum &&
|
144
|
-
|
145
|
-
context[:default_request_checksum_algorithm])
|
282
|
+
context.config.request_checksum_calculation != 'when_required'
|
146
283
|
end
|
147
284
|
|
148
|
-
def
|
149
|
-
|
285
|
+
def checksum_provided_as_header?(headers)
|
286
|
+
headers.any? { |k, _| k.start_with?('x-amz-checksum-') }
|
287
|
+
end
|
288
|
+
|
289
|
+
def should_calculate_request_checksum?(context)
|
290
|
+
!checksum_provided_as_header?(context.http_request.headers) &&
|
291
|
+
request_algorithm_selection(context) &&
|
292
|
+
(checksum_required?(context) || checksum_optional?(context))
|
293
|
+
end
|
294
|
+
|
295
|
+
def choose_request_algorithm!(context)
|
296
|
+
algorithm = request_algorithm_selection(context).upcase
|
297
|
+
return algorithm if CLIENT_ALGORITHMS.include?(algorithm)
|
298
|
+
|
299
|
+
if CRT_ALGORITHMS.include?(algorithm)
|
300
|
+
raise ArgumentError,
|
301
|
+
'CRC32C and CRC64NVME requires CRT support ' \
|
302
|
+
'- install the aws-crt gem'
|
303
|
+
end
|
304
|
+
|
305
|
+
raise ArgumentError,
|
306
|
+
"#{algorithm} is not a supported checksum algorithm."
|
307
|
+
end
|
308
|
+
|
309
|
+
def checksum_request_in(context)
|
310
|
+
if context.operation['unsignedPayload'] ||
|
311
|
+
context.operation['authtype'] == 'v4-unsigned-body'
|
312
|
+
'trailer'
|
313
|
+
else
|
314
|
+
'header'
|
315
|
+
end
|
150
316
|
end
|
151
317
|
|
152
318
|
def calculate_request_checksum(context, checksum_properties)
|
153
|
-
|
319
|
+
headers = context.http_request.headers
|
320
|
+
if (algorithm_header = checksum_properties[:request_algorithm_header])
|
321
|
+
headers[algorithm_header] = checksum_properties[:algorithm]
|
322
|
+
end
|
323
|
+
case checksum_properties[:in]
|
154
324
|
when 'header'
|
155
|
-
|
156
|
-
body = context.http_request.body_contents
|
157
|
-
if body
|
158
|
-
context.http_request.headers[header_name] ||=
|
159
|
-
ChecksumAlgorithm.calculate_checksum(checksum_properties['algorithm'], body)
|
160
|
-
end
|
325
|
+
apply_request_checksum(context, headers, checksum_properties)
|
161
326
|
when 'trailer'
|
162
|
-
apply_request_trailer_checksum(context, checksum_properties)
|
327
|
+
apply_request_trailer_checksum(context, headers, checksum_properties)
|
328
|
+
else
|
329
|
+
# nothing
|
330
|
+
end
|
331
|
+
end
|
332
|
+
|
333
|
+
def apply_request_checksum(context, headers, checksum_properties)
|
334
|
+
header_name = checksum_properties[:name]
|
335
|
+
body = context.http_request.body_contents
|
336
|
+
headers[header_name] = calculate_checksum(
|
337
|
+
checksum_properties[:algorithm],
|
338
|
+
body
|
339
|
+
)
|
340
|
+
end
|
341
|
+
|
342
|
+
def calculate_checksum(algorithm, body)
|
343
|
+
digest = ChecksumAlgorithm.digest_for_algorithm(algorithm)
|
344
|
+
if body.respond_to?(:read)
|
345
|
+
update_in_chunks(digest, body)
|
346
|
+
else
|
347
|
+
digest.update(body)
|
348
|
+
end
|
349
|
+
digest.base64digest
|
350
|
+
end
|
351
|
+
|
352
|
+
def update_in_chunks(digest, io)
|
353
|
+
loop do
|
354
|
+
chunk = io.read(CHUNK_SIZE)
|
355
|
+
break unless chunk
|
356
|
+
|
357
|
+
digest.update(chunk)
|
163
358
|
end
|
359
|
+
io.rewind
|
164
360
|
end
|
165
361
|
|
166
|
-
def apply_request_trailer_checksum(context, checksum_properties)
|
167
|
-
location_name = checksum_properties[
|
362
|
+
def apply_request_trailer_checksum(context, headers, checksum_properties)
|
363
|
+
location_name = checksum_properties[:name]
|
168
364
|
|
169
365
|
# set required headers
|
170
|
-
headers = context.http_request.headers
|
171
366
|
headers['Content-Encoding'] = 'aws-chunked'
|
172
367
|
headers['X-Amz-Content-Sha256'] = 'STREAMING-UNSIGNED-PAYLOAD-TRAILER'
|
173
368
|
headers['X-Amz-Trailer'] = location_name
|
@@ -176,121 +371,88 @@ module Aws
|
|
176
371
|
# to set the Content-Length header (set by content_length plugin).
|
177
372
|
# This means we cannot use Transfer-Encoding=chunked
|
178
373
|
|
179
|
-
|
374
|
+
unless context.http_request.body.respond_to?(:size)
|
180
375
|
raise Aws::Errors::ChecksumError, 'Could not determine length of the body'
|
181
376
|
end
|
182
377
|
headers['X-Amz-Decoded-Content-Length'] = context.http_request.body.size
|
183
378
|
|
184
379
|
context.http_request.body = AwsChunkedTrailerDigestIO.new(
|
185
380
|
context.http_request.body,
|
186
|
-
checksum_properties[
|
381
|
+
checksum_properties[:algorithm],
|
187
382
|
location_name
|
188
383
|
)
|
189
384
|
end
|
190
385
|
|
386
|
+
def should_verify_response_checksum?(context)
|
387
|
+
request_validation_mode(context) == 'ENABLED'
|
388
|
+
end
|
389
|
+
|
191
390
|
# Add events to the http_response to verify the checksum as its read
|
192
391
|
# This prevents the body from being read multiple times
|
193
392
|
# verification is done only once a successful response has completed
|
194
393
|
def add_verify_response_checksum_handlers(context)
|
195
|
-
|
196
|
-
checksum_context
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
expected = headers[header_name]
|
201
|
-
|
202
|
-
unless context[:http_checksum][:skip_on_suffix] && /-[\d]+$/.match(expected)
|
203
|
-
checksum_context[:algorithm] = algorithm
|
204
|
-
checksum_context[:header_name] = header_name
|
205
|
-
checksum_context[:digest] = ChecksumAlgorithm.digest_for_algorithm(algorithm)
|
206
|
-
checksum_context[:expected] = expected
|
207
|
-
end
|
208
|
-
end
|
209
|
-
end
|
394
|
+
checksum_context = {}
|
395
|
+
add_verify_response_headers_handler(context, checksum_context)
|
396
|
+
add_verify_response_data_handler(context, checksum_context)
|
397
|
+
add_verify_response_success_handler(context, checksum_context)
|
398
|
+
end
|
210
399
|
|
211
|
-
|
212
|
-
|
400
|
+
def add_verify_response_headers_handler(context, checksum_context)
|
401
|
+
validation_list = CHECKSUM_ALGORITHM_PRIORITIES &
|
402
|
+
operation_response_algorithms(context)
|
403
|
+
context[:http_checksum][:validation_list] = validation_list
|
404
|
+
|
405
|
+
context.http_response.on_headers do |_status, headers|
|
406
|
+
header_name, algorithm = response_header_to_verify(
|
407
|
+
headers,
|
408
|
+
validation_list
|
409
|
+
)
|
410
|
+
next unless header_name
|
411
|
+
|
412
|
+
expected = headers[header_name]
|
413
|
+
next if context[:http_checksum][:skip_on_suffix] && /-\d+$/.match(expected)
|
414
|
+
|
415
|
+
checksum_context[:algorithm] = algorithm
|
416
|
+
checksum_context[:header_name] = header_name
|
417
|
+
checksum_context[:digest] = ChecksumAlgorithm.digest_for_algorithm(algorithm)
|
418
|
+
checksum_context[:expected] = expected
|
213
419
|
end
|
420
|
+
end
|
214
421
|
|
215
|
-
|
216
|
-
|
217
|
-
|
422
|
+
def add_verify_response_data_handler(context, checksum_context)
|
423
|
+
context.http_response.on_data do |chunk|
|
424
|
+
checksum_context[:digest]&.update(chunk)
|
425
|
+
end
|
426
|
+
end
|
218
427
|
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
"computed: #{computed}, expected: #{checksum_context[:expected]}"
|
223
|
-
end
|
428
|
+
def add_verify_response_success_handler(context, checksum_context)
|
429
|
+
context.http_response.on_success do
|
430
|
+
next unless checksum_context[:digest]
|
224
431
|
|
432
|
+
computed = checksum_context[:digest].base64digest
|
433
|
+
if computed == checksum_context[:expected]
|
225
434
|
context[:http_checksum][:validated] = checksum_context[:algorithm]
|
435
|
+
else
|
436
|
+
raise Aws::Errors::ChecksumError,
|
437
|
+
"Checksum validation failed on #{checksum_context[:header_name]} "\
|
438
|
+
"computed: #{computed}, expected: #{checksum_context[:expected]}"
|
226
439
|
end
|
227
440
|
end
|
228
441
|
end
|
229
442
|
|
230
|
-
# returns nil if no headers to verify
|
231
443
|
def response_header_to_verify(headers, validation_list)
|
232
444
|
validation_list.each do |algorithm|
|
233
|
-
header_name = "x-amz-checksum-#{algorithm}"
|
445
|
+
header_name = "x-amz-checksum-#{algorithm.downcase}"
|
234
446
|
return [header_name, algorithm] if headers[header_name]
|
235
447
|
end
|
236
448
|
nil
|
237
449
|
end
|
238
|
-
|
239
|
-
# determine where (header vs trailer) a request checksum should be added
|
240
|
-
def checksum_request_in(context)
|
241
|
-
if context.operation['unsignedPayload'] ||
|
242
|
-
context.operation['authtype'] == 'v4-unsigned-body'
|
243
|
-
'trailer'
|
244
|
-
else
|
245
|
-
'header'
|
246
|
-
end
|
247
|
-
end
|
248
|
-
|
249
|
-
end
|
250
|
-
|
251
|
-
def self.calculate_checksum(algorithm, body)
|
252
|
-
digest = ChecksumAlgorithm.digest_for_algorithm(algorithm)
|
253
|
-
if body.respond_to?(:read)
|
254
|
-
ChecksumAlgorithm.update_in_chunks(digest, body)
|
255
|
-
else
|
256
|
-
digest.update(body)
|
257
|
-
end
|
258
|
-
digest.base64digest
|
259
|
-
end
|
260
|
-
|
261
|
-
def self.digest_for_algorithm(algorithm)
|
262
|
-
case algorithm
|
263
|
-
when 'CRC32'
|
264
|
-
Digest32.new(Zlib.method(:crc32))
|
265
|
-
when 'CRC32C'
|
266
|
-
# this will only be used if input algorithm is CRC32C AND client supports it (crt available)
|
267
|
-
Digest32.new(Aws::Crt::Checksums.method(:crc32c))
|
268
|
-
when 'SHA1'
|
269
|
-
Digest::SHA1.new
|
270
|
-
when 'SHA256'
|
271
|
-
Digest::SHA256.new
|
272
|
-
end
|
273
|
-
end
|
274
|
-
|
275
|
-
# The trailer size (in bytes) is the overhead + the trailer name +
|
276
|
-
# the length of the base64 encoded checksum
|
277
|
-
def self.trailer_length(algorithm, location_name)
|
278
|
-
CHECKSUM_SIZE[algorithm] + location_name.size
|
279
|
-
end
|
280
|
-
|
281
|
-
def self.update_in_chunks(digest, io)
|
282
|
-
loop do
|
283
|
-
chunk = io.read(CHUNK_SIZE)
|
284
|
-
break unless chunk
|
285
|
-
digest.update(chunk)
|
286
|
-
end
|
287
|
-
io.rewind
|
288
450
|
end
|
289
451
|
|
290
452
|
# Wrapper for request body that implements application-layer
|
291
453
|
# chunking with Digest computed on chunks + added as a trailer
|
292
454
|
class AwsChunkedTrailerDigestIO
|
293
|
-
CHUNK_SIZE =
|
455
|
+
CHUNK_SIZE = 16_384
|
294
456
|
|
295
457
|
def initialize(io, algorithm, location_name)
|
296
458
|
@io = io
|
@@ -331,7 +493,7 @@ module Aws
|
|
331
493
|
else
|
332
494
|
trailers = {}
|
333
495
|
trailers[@location_name] = @digest.base64digest
|
334
|
-
trailers = trailers.map { |k,v| "#{k}:#{v}"}.join("\r\n")
|
496
|
+
trailers = trailers.map { |k,v| "#{k}:#{v}" }.join("\r\n")
|
335
497
|
@trailer_io = StringIO.new("0\r\n#{trailers}\r\n\r\n")
|
336
498
|
chunk = @trailer_io.read(length, buf)
|
337
499
|
end
|
@@ -11,8 +11,8 @@ module Aws
|
|
11
11
|
CHUNK_SIZE = 1 * 1024 * 1024 # one MB
|
12
12
|
|
13
13
|
def call(context)
|
14
|
-
if
|
15
|
-
!context[:
|
14
|
+
if context.operation.http_checksum_required &&
|
15
|
+
!context[:http_checksum][:request_algorithm] && # skip in favor of flexible checksum
|
16
16
|
!context[:s3_express_endpoint] # s3 express endpoints do not support md5
|
17
17
|
body = context.http_request.body
|
18
18
|
context.http_request.headers['Content-Md5'] ||= md5(body)
|
@@ -22,12 +22,6 @@ module Aws
|
|
22
22
|
|
23
23
|
private
|
24
24
|
|
25
|
-
def checksum_required?(context)
|
26
|
-
context.operation.http_checksum_required ||
|
27
|
-
(context.operation.http_checksum &&
|
28
|
-
context.operation.http_checksum['requestChecksumRequired'])
|
29
|
-
end
|
30
|
-
|
31
25
|
# @param [File, Tempfile, IO#read, String] value
|
32
26
|
# @return [String<MD5>]
|
33
27
|
def md5(value)
|
@@ -25,7 +25,16 @@ module Aws
|
|
25
25
|
"ACCOUNT_ID_MODE_DISABLED": "Q",
|
26
26
|
"ACCOUNT_ID_MODE_REQUIRED": "R",
|
27
27
|
"SIGV4A_SIGNING": "S",
|
28
|
-
"RESOLVED_ACCOUNT_ID": "T"
|
28
|
+
"RESOLVED_ACCOUNT_ID": "T",
|
29
|
+
"FLEXIBLE_CHECKSUMS_REQ_CRC32" : "U",
|
30
|
+
"FLEXIBLE_CHECKSUMS_REQ_CRC32C" : "V",
|
31
|
+
"FLEXIBLE_CHECKSUMS_REQ_CRC64" : "W",
|
32
|
+
"FLEXIBLE_CHECKSUMS_REQ_SHA1" : "X",
|
33
|
+
"FLEXIBLE_CHECKSUMS_REQ_SHA256" : "Y",
|
34
|
+
"FLEXIBLE_CHECKSUMS_REQ_WHEN_SUPPORTED" : "Z",
|
35
|
+
"FLEXIBLE_CHECKSUMS_REQ_WHEN_REQUIRED" : "a",
|
36
|
+
"FLEXIBLE_CHECKSUMS_RES_WHEN_SUPPORTED" : "b",
|
37
|
+
"FLEXIBLE_CHECKSUMS_RES_WHEN_REQUIRED" : "c"
|
29
38
|
}
|
30
39
|
METRICS
|
31
40
|
|
data/lib/aws-sdk-sso/client.rb
CHANGED
@@ -257,11 +257,34 @@ module Aws::SSO
|
|
257
257
|
# Used when loading credentials from the shared credentials file
|
258
258
|
# at HOME/.aws/credentials. When not specified, 'default' is used.
|
259
259
|
#
|
260
|
+
# @option options [String] :request_checksum_calculation ("when_supported")
|
261
|
+
# Determines when a checksum will be calculated for request payloads. Values are:
|
262
|
+
#
|
263
|
+
# * `when_supported` - (default) When set, a checksum will be
|
264
|
+
# calculated for all request payloads of operations modeled with the
|
265
|
+
# `httpChecksum` trait where `requestChecksumRequired` is `true` and/or a
|
266
|
+
# `requestAlgorithmMember` is modeled.
|
267
|
+
# * `when_required` - When set, a checksum will only be calculated for
|
268
|
+
# request payloads of operations modeled with the `httpChecksum` trait where
|
269
|
+
# `requestChecksumRequired` is `true` or where a `requestAlgorithmMember`
|
270
|
+
# is modeled and supplied.
|
271
|
+
#
|
260
272
|
# @option options [Integer] :request_min_compression_size_bytes (10240)
|
261
273
|
# The minimum size in bytes that triggers compression for request
|
262
274
|
# bodies. The value must be non-negative integer value between 0
|
263
275
|
# and 10485780 bytes inclusive.
|
264
276
|
#
|
277
|
+
# @option options [String] :response_checksum_validation ("when_supported")
|
278
|
+
# Determines when checksum validation will be performed on response payloads. Values are:
|
279
|
+
#
|
280
|
+
# * `when_supported` - (default) When set, checksum validation is performed on all
|
281
|
+
# response payloads of operations modeled with the `httpChecksum` trait where
|
282
|
+
# `responseAlgorithms` is modeled, except when no modeled checksum algorithms
|
283
|
+
# are supported.
|
284
|
+
# * `when_required` - When set, checksum validation is not performed on
|
285
|
+
# response payloads of operations unless the checksum algorithm is supported and
|
286
|
+
# the `requestValidationModeMember` member is set to `ENABLED`.
|
287
|
+
#
|
265
288
|
# @option options [Proc] :retry_backoff
|
266
289
|
# A proc or lambda used for backoff. Defaults to 2**retries * retry_base_delay.
|
267
290
|
# This option is only used in the `legacy` retry mode.
|
@@ -669,7 +692,7 @@ module Aws::SSO
|
|
669
692
|
tracer: tracer
|
670
693
|
)
|
671
694
|
context[:gem_name] = 'aws-sdk-core'
|
672
|
-
context[:gem_version] = '3.
|
695
|
+
context[:gem_version] = '3.217.0'
|
673
696
|
Seahorse::Client::Request.new(handlers, context)
|
674
697
|
end
|
675
698
|
|
data/lib/aws-sdk-sso.rb
CHANGED
@@ -257,11 +257,34 @@ module Aws::SSOOIDC
|
|
257
257
|
# Used when loading credentials from the shared credentials file
|
258
258
|
# at HOME/.aws/credentials. When not specified, 'default' is used.
|
259
259
|
#
|
260
|
+
# @option options [String] :request_checksum_calculation ("when_supported")
|
261
|
+
# Determines when a checksum will be calculated for request payloads. Values are:
|
262
|
+
#
|
263
|
+
# * `when_supported` - (default) When set, a checksum will be
|
264
|
+
# calculated for all request payloads of operations modeled with the
|
265
|
+
# `httpChecksum` trait where `requestChecksumRequired` is `true` and/or a
|
266
|
+
# `requestAlgorithmMember` is modeled.
|
267
|
+
# * `when_required` - When set, a checksum will only be calculated for
|
268
|
+
# request payloads of operations modeled with the `httpChecksum` trait where
|
269
|
+
# `requestChecksumRequired` is `true` or where a `requestAlgorithmMember`
|
270
|
+
# is modeled and supplied.
|
271
|
+
#
|
260
272
|
# @option options [Integer] :request_min_compression_size_bytes (10240)
|
261
273
|
# The minimum size in bytes that triggers compression for request
|
262
274
|
# bodies. The value must be non-negative integer value between 0
|
263
275
|
# and 10485780 bytes inclusive.
|
264
276
|
#
|
277
|
+
# @option options [String] :response_checksum_validation ("when_supported")
|
278
|
+
# Determines when checksum validation will be performed on response payloads. Values are:
|
279
|
+
#
|
280
|
+
# * `when_supported` - (default) When set, checksum validation is performed on all
|
281
|
+
# response payloads of operations modeled with the `httpChecksum` trait where
|
282
|
+
# `responseAlgorithms` is modeled, except when no modeled checksum algorithms
|
283
|
+
# are supported.
|
284
|
+
# * `when_required` - When set, checksum validation is not performed on
|
285
|
+
# response payloads of operations unless the checksum algorithm is supported and
|
286
|
+
# the `requestValidationModeMember` member is set to `ENABLED`.
|
287
|
+
#
|
265
288
|
# @option options [Proc] :retry_backoff
|
266
289
|
# A proc or lambda used for backoff. Defaults to 2**retries * retry_base_delay.
|
267
290
|
# This option is only used in the `legacy` retry mode.
|
@@ -449,7 +472,7 @@ module Aws::SSOOIDC
|
|
449
472
|
|
450
473
|
# Creates and returns access and refresh tokens for clients that are
|
451
474
|
# authenticated using client secrets. The access token can be used to
|
452
|
-
# fetch short-
|
475
|
+
# fetch short-lived credentials for the assigned AWS accounts or to
|
453
476
|
# access application APIs using `bearer` authentication.
|
454
477
|
#
|
455
478
|
# @option params [required, String] :client_id
|
@@ -461,30 +484,28 @@ module Aws::SSOOIDC
|
|
461
484
|
# the persisted result of the RegisterClient API.
|
462
485
|
#
|
463
486
|
# @option params [required, String] :grant_type
|
464
|
-
# Supports the following OAuth grant types:
|
465
|
-
# Token. Specify
|
466
|
-
# type that you want:
|
487
|
+
# Supports the following OAuth grant types: Authorization Code, Device
|
488
|
+
# Code, and Refresh Token. Specify one of the following values,
|
489
|
+
# depending on the grant type that you want:
|
490
|
+
#
|
491
|
+
# * Authorization Code - `authorization_code`
|
467
492
|
#
|
468
493
|
# * Device Code - `urn:ietf:params:oauth:grant-type:device_code`
|
469
494
|
#
|
470
495
|
# * Refresh Token - `refresh_token`
|
471
496
|
#
|
472
|
-
# For information about how to obtain the device code, see the
|
473
|
-
# StartDeviceAuthorization topic.
|
474
|
-
#
|
475
497
|
# @option params [String] :device_code
|
476
498
|
# Used only when calling this API for the Device Code grant type. This
|
477
|
-
# short-
|
499
|
+
# short-lived code is used to identify this authorization request. This
|
478
500
|
# comes from the result of the StartDeviceAuthorization API.
|
479
501
|
#
|
480
502
|
# @option params [String] :code
|
481
503
|
# Used only when calling this API for the Authorization Code grant type.
|
482
|
-
# The short-
|
483
|
-
# This grant type is currently unsupported for the CreateToken API.
|
504
|
+
# The short-lived code is used to identify this authorization request.
|
484
505
|
#
|
485
506
|
# @option params [String] :refresh_token
|
486
507
|
# Used only when calling this API for the Refresh Token grant type. This
|
487
|
-
# token is used to refresh short-
|
508
|
+
# token is used to refresh short-lived tokens, such as the access token,
|
488
509
|
# that might expire.
|
489
510
|
#
|
490
511
|
# For more information about the features and limitations of the current
|
@@ -590,7 +611,7 @@ module Aws::SSOOIDC
|
|
590
611
|
|
591
612
|
# Creates and returns access and refresh tokens for clients and
|
592
613
|
# applications that are authenticated using IAM entities. The access
|
593
|
-
# token can be used to fetch short-
|
614
|
+
# token can be used to fetch short-lived credentials for the assigned
|
594
615
|
# Amazon Web Services accounts or to access application APIs using
|
595
616
|
# `bearer` authentication.
|
596
617
|
#
|
@@ -613,14 +634,14 @@ module Aws::SSOOIDC
|
|
613
634
|
#
|
614
635
|
# @option params [String] :code
|
615
636
|
# Used only when calling this API for the Authorization Code grant type.
|
616
|
-
# This short-
|
637
|
+
# This short-lived code is used to identify this authorization request.
|
617
638
|
# The code is obtained through a redirect from IAM Identity Center to a
|
618
639
|
# redirect URI persisted in the Authorization Code GrantOptions for the
|
619
640
|
# application.
|
620
641
|
#
|
621
642
|
# @option params [String] :refresh_token
|
622
643
|
# Used only when calling this API for the Refresh Token grant type. This
|
623
|
-
# token is used to refresh short-
|
644
|
+
# token is used to refresh short-lived tokens, such as the access token,
|
624
645
|
# that might expire.
|
625
646
|
#
|
626
647
|
# For more information about the features and limitations of the current
|
@@ -823,9 +844,10 @@ module Aws::SSOOIDC
|
|
823
844
|
req.send_request(options)
|
824
845
|
end
|
825
846
|
|
826
|
-
# Registers a client with IAM Identity Center. This allows
|
827
|
-
#
|
828
|
-
#
|
847
|
+
# Registers a public client with IAM Identity Center. This allows
|
848
|
+
# clients to perform authorization using the authorization
|
849
|
+
# code grant with Proof Key for Code Exchange (PKCE) or the device
|
850
|
+
# code grant.
|
829
851
|
#
|
830
852
|
# @option params [required, String] :client_name
|
831
853
|
# The friendly name of the client.
|
@@ -847,7 +869,14 @@ module Aws::SSOOIDC
|
|
847
869
|
# @option params [Array<String>] :grant_types
|
848
870
|
# The list of OAuth 2.0 grant types that are defined by the client. This
|
849
871
|
# list is used to restrict the token granting flows available to the
|
850
|
-
# client.
|
872
|
+
# client. Supports the following OAuth 2.0 grant types: Authorization
|
873
|
+
# Code, Device Code, and Refresh Token.
|
874
|
+
#
|
875
|
+
# * Authorization Code - `authorization_code`
|
876
|
+
#
|
877
|
+
# * Device Code - `urn:ietf:params:oauth:grant-type:device_code`
|
878
|
+
#
|
879
|
+
# * Refresh Token - `refresh_token`
|
851
880
|
#
|
852
881
|
# @option params [String] :issuer_url
|
853
882
|
# The IAM Identity Center Issuer URL associated with an instance of IAM
|
@@ -1022,7 +1051,7 @@ module Aws::SSOOIDC
|
|
1022
1051
|
tracer: tracer
|
1023
1052
|
)
|
1024
1053
|
context[:gem_name] = 'aws-sdk-core'
|
1025
|
-
context[:gem_version] = '3.
|
1054
|
+
context[:gem_version] = '3.217.0'
|
1026
1055
|
Seahorse::Client::Request.new(handlers, context)
|
1027
1056
|
end
|
1028
1057
|
|
@@ -64,34 +64,32 @@ module Aws::SSOOIDC
|
|
64
64
|
# @return [String]
|
65
65
|
#
|
66
66
|
# @!attribute [rw] grant_type
|
67
|
-
# Supports the following OAuth grant types:
|
68
|
-
# Token. Specify
|
69
|
-
# grant type that you want:
|
67
|
+
# Supports the following OAuth grant types: Authorization Code, Device
|
68
|
+
# Code, and Refresh Token. Specify one of the following values,
|
69
|
+
# depending on the grant type that you want:
|
70
|
+
#
|
71
|
+
# * Authorization Code - `authorization_code`
|
70
72
|
#
|
71
73
|
# * Device Code - `urn:ietf:params:oauth:grant-type:device_code`
|
72
74
|
#
|
73
75
|
# * Refresh Token - `refresh_token`
|
74
|
-
#
|
75
|
-
# For information about how to obtain the device code, see the
|
76
|
-
# StartDeviceAuthorization topic.
|
77
76
|
# @return [String]
|
78
77
|
#
|
79
78
|
# @!attribute [rw] device_code
|
80
79
|
# Used only when calling this API for the Device Code grant type. This
|
81
|
-
# short-
|
82
|
-
# comes from the result of the StartDeviceAuthorization API.
|
80
|
+
# short-lived code is used to identify this authorization request.
|
81
|
+
# This comes from the result of the StartDeviceAuthorization API.
|
83
82
|
# @return [String]
|
84
83
|
#
|
85
84
|
# @!attribute [rw] code
|
86
85
|
# Used only when calling this API for the Authorization Code grant
|
87
|
-
# type. The short-
|
88
|
-
# request.
|
89
|
-
# CreateToken API.
|
86
|
+
# type. The short-lived code is used to identify this authorization
|
87
|
+
# request.
|
90
88
|
# @return [String]
|
91
89
|
#
|
92
90
|
# @!attribute [rw] refresh_token
|
93
91
|
# Used only when calling this API for the Refresh Token grant type.
|
94
|
-
# This token is used to refresh short-
|
92
|
+
# This token is used to refresh short-lived tokens, such as the access
|
95
93
|
# token, that might expire.
|
96
94
|
#
|
97
95
|
# For more information about the features and limitations of the
|
@@ -217,7 +215,7 @@ module Aws::SSOOIDC
|
|
217
215
|
#
|
218
216
|
# @!attribute [rw] code
|
219
217
|
# Used only when calling this API for the Authorization Code grant
|
220
|
-
# type. This short-
|
218
|
+
# type. This short-lived code is used to identify this authorization
|
221
219
|
# request. The code is obtained through a redirect from IAM Identity
|
222
220
|
# Center to a redirect URI persisted in the Authorization Code
|
223
221
|
# GrantOptions for the application.
|
@@ -225,7 +223,7 @@ module Aws::SSOOIDC
|
|
225
223
|
#
|
226
224
|
# @!attribute [rw] refresh_token
|
227
225
|
# Used only when calling this API for the Refresh Token grant type.
|
228
|
-
# This token is used to refresh short-
|
226
|
+
# This token is used to refresh short-lived tokens, such as the access
|
229
227
|
# token, that might expire.
|
230
228
|
#
|
231
229
|
# For more information about the features and limitations of the
|
@@ -606,7 +604,14 @@ module Aws::SSOOIDC
|
|
606
604
|
# @!attribute [rw] grant_types
|
607
605
|
# The list of OAuth 2.0 grant types that are defined by the client.
|
608
606
|
# This list is used to restrict the token granting flows available to
|
609
|
-
# the client.
|
607
|
+
# the client. Supports the following OAuth 2.0 grant types:
|
608
|
+
# Authorization Code, Device Code, and Refresh Token.
|
609
|
+
#
|
610
|
+
# * Authorization Code - `authorization_code`
|
611
|
+
#
|
612
|
+
# * Device Code - `urn:ietf:params:oauth:grant-type:device_code`
|
613
|
+
#
|
614
|
+
# * Refresh Token - `refresh_token`
|
610
615
|
# @return [Array<String>]
|
611
616
|
#
|
612
617
|
# @!attribute [rw] issuer_url
|
data/lib/aws-sdk-ssooidc.rb
CHANGED
data/lib/aws-sdk-sts/client.rb
CHANGED
@@ -259,11 +259,34 @@ module Aws::STS
|
|
259
259
|
# Used when loading credentials from the shared credentials file
|
260
260
|
# at HOME/.aws/credentials. When not specified, 'default' is used.
|
261
261
|
#
|
262
|
+
# @option options [String] :request_checksum_calculation ("when_supported")
|
263
|
+
# Determines when a checksum will be calculated for request payloads. Values are:
|
264
|
+
#
|
265
|
+
# * `when_supported` - (default) When set, a checksum will be
|
266
|
+
# calculated for all request payloads of operations modeled with the
|
267
|
+
# `httpChecksum` trait where `requestChecksumRequired` is `true` and/or a
|
268
|
+
# `requestAlgorithmMember` is modeled.
|
269
|
+
# * `when_required` - When set, a checksum will only be calculated for
|
270
|
+
# request payloads of operations modeled with the `httpChecksum` trait where
|
271
|
+
# `requestChecksumRequired` is `true` or where a `requestAlgorithmMember`
|
272
|
+
# is modeled and supplied.
|
273
|
+
#
|
262
274
|
# @option options [Integer] :request_min_compression_size_bytes (10240)
|
263
275
|
# The minimum size in bytes that triggers compression for request
|
264
276
|
# bodies. The value must be non-negative integer value between 0
|
265
277
|
# and 10485780 bytes inclusive.
|
266
278
|
#
|
279
|
+
# @option options [String] :response_checksum_validation ("when_supported")
|
280
|
+
# Determines when checksum validation will be performed on response payloads. Values are:
|
281
|
+
#
|
282
|
+
# * `when_supported` - (default) When set, checksum validation is performed on all
|
283
|
+
# response payloads of operations modeled with the `httpChecksum` trait where
|
284
|
+
# `responseAlgorithms` is modeled, except when no modeled checksum algorithms
|
285
|
+
# are supported.
|
286
|
+
# * `when_required` - When set, checksum validation is not performed on
|
287
|
+
# response payloads of operations unless the checksum algorithm is supported and
|
288
|
+
# the `requestValidationModeMember` member is set to `ENABLED`.
|
289
|
+
#
|
267
290
|
# @option options [Proc] :retry_backoff
|
268
291
|
# A proc or lambda used for backoff. Defaults to 2**retries * retry_base_delay.
|
269
292
|
# This option is only used in the `legacy` retry mode.
|
@@ -831,7 +854,7 @@ module Aws::STS
|
|
831
854
|
# The regex used to validate this parameter is a string of characters
|
832
855
|
# consisting of upper- and lower-case alphanumeric characters with no
|
833
856
|
# spaces. You can also include underscores or any of the following
|
834
|
-
# characters:
|
857
|
+
# characters: +=,.@-. You cannot use a value that begins with the text
|
835
858
|
# `aws:`. This prefix is reserved for Amazon Web Services internal use.
|
836
859
|
#
|
837
860
|
#
|
@@ -1514,8 +1537,9 @@ module Aws::STS
|
|
1514
1537
|
# authenticating the user who is using your application with a web
|
1515
1538
|
# identity provider before the application makes an
|
1516
1539
|
# `AssumeRoleWithWebIdentity` call. Timestamps in the token must be
|
1517
|
-
# formatted as either an integer or a long integer.
|
1518
|
-
#
|
1540
|
+
# formatted as either an integer or a long integer. Tokens must be
|
1541
|
+
# signed using either RSA keys (RS256, RS384, or RS512) or ECDSA keys
|
1542
|
+
# (ES256, ES384, or ES512).
|
1519
1543
|
#
|
1520
1544
|
# @option params [String] :provider_id
|
1521
1545
|
# The fully qualified host component of the domain name of the OAuth 2.0
|
@@ -1708,14 +1732,14 @@ module Aws::STS
|
|
1708
1732
|
end
|
1709
1733
|
|
1710
1734
|
# Returns a set of short term credentials you can use to perform
|
1711
|
-
# privileged tasks
|
1735
|
+
# privileged tasks on a member account in your organization.
|
1712
1736
|
#
|
1713
|
-
# Before you can launch a privileged session, you must have
|
1714
|
-
#
|
1715
|
-
#
|
1716
|
-
#
|
1737
|
+
# Before you can launch a privileged session, you must have centralized
|
1738
|
+
# root access in your organization. For steps to enable this feature,
|
1739
|
+
# see [Centralize root access for member accounts][1] in the *IAM User
|
1740
|
+
# Guide*.
|
1717
1741
|
#
|
1718
|
-
# <note markdown="1"> The global endpoint is not supported for AssumeRoot. You must send
|
1742
|
+
# <note markdown="1"> The STS global endpoint is not supported for AssumeRoot. You must send
|
1719
1743
|
# this request to a Regional STS endpoint. For more information, see
|
1720
1744
|
# [Endpoints][2].
|
1721
1745
|
#
|
@@ -1737,9 +1761,7 @@ module Aws::STS
|
|
1737
1761
|
# @option params [required, Types::PolicyDescriptorType] :task_policy_arn
|
1738
1762
|
# The identity based policy that scopes the session to the privileged
|
1739
1763
|
# tasks that can be performed. You can use one of following Amazon Web
|
1740
|
-
# Services managed policies to scope root session actions.
|
1741
|
-
# additional customer managed policies to further limit the permissions
|
1742
|
-
# for the root session.
|
1764
|
+
# Services managed policies to scope root session actions.
|
1743
1765
|
#
|
1744
1766
|
# * [IAMAuditRootUserCredentials][1]
|
1745
1767
|
#
|
@@ -2573,7 +2595,7 @@ module Aws::STS
|
|
2573
2595
|
tracer: tracer
|
2574
2596
|
)
|
2575
2597
|
context[:gem_name] = 'aws-sdk-core'
|
2576
|
-
context[:gem_version] = '3.
|
2598
|
+
context[:gem_version] = '3.217.0'
|
2577
2599
|
Seahorse::Client::Request.new(handlers, context)
|
2578
2600
|
end
|
2579
2601
|
|
data/lib/aws-sdk-sts/types.rb
CHANGED
@@ -291,7 +291,7 @@ module Aws::STS
|
|
291
291
|
# The regex used to validate this parameter is a string of characters
|
292
292
|
# consisting of upper- and lower-case alphanumeric characters with no
|
293
293
|
# spaces. You can also include underscores or any of the following
|
294
|
-
# characters:
|
294
|
+
# characters: +=,.@-. You cannot use a value that begins with the text
|
295
295
|
# `aws:`. This prefix is reserved for Amazon Web Services internal
|
296
296
|
# use.
|
297
297
|
#
|
@@ -717,8 +717,9 @@ module Aws::STS
|
|
717
717
|
# token by authenticating the user who is using your application with
|
718
718
|
# a web identity provider before the application makes an
|
719
719
|
# `AssumeRoleWithWebIdentity` call. Timestamps in the token must be
|
720
|
-
# formatted as either an integer or a long integer.
|
721
|
-
# RSA
|
720
|
+
# formatted as either an integer or a long integer. Tokens must be
|
721
|
+
# signed using either RSA keys (RS256, RS384, or RS512) or ECDSA keys
|
722
|
+
# (ES256, ES384, or ES512).
|
722
723
|
# @return [String]
|
723
724
|
#
|
724
725
|
# @!attribute [rw] provider_id
|
@@ -961,9 +962,7 @@ module Aws::STS
|
|
961
962
|
# @!attribute [rw] task_policy_arn
|
962
963
|
# The identity based policy that scopes the session to the privileged
|
963
964
|
# tasks that can be performed. You can use one of following Amazon Web
|
964
|
-
# Services managed policies to scope root session actions.
|
965
|
-
# additional customer managed policies to further limit the
|
966
|
-
# permissions for the root session.
|
965
|
+
# Services managed policies to scope root session actions.
|
967
966
|
#
|
968
967
|
# * [IAMAuditRootUserCredentials][1]
|
969
968
|
#
|
data/lib/aws-sdk-sts.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: aws-sdk-core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.
|
4
|
+
version: 3.217.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Amazon Web Services
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2025-01-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: jmespath
|