aws-sdk-core 3.185.2 → 3.187.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: 0117f7cb50c068598c310d1623a7d28eed6639c20d168ecd506fdf48040aafda
4
- data.tar.gz: 676254d312d5f27b19268fb05ec84e269b76488fe7f71c5244a38468a63bdad8
3
+ metadata.gz: 8f2de23253ac2be6021ace7db6553c08dcc6a665328f8df555ea525b82fe1c9c
4
+ data.tar.gz: 76e5cb8b0e6c8b192e0a96e534441c303ae80bc94e74bacb893c6ba66a6f33dd
5
5
  SHA512:
6
- metadata.gz: '08840b98e2ab9cd7e182f0488055ae2f12d3665b08d54fe255c1b2dca17ea4923a4fd5833d8bdb4f71339e1aab015070c4b1ce14c3e7726d5a54a4f158d41e9d'
7
- data.tar.gz: 9e4a2c4e100b241728c930caabf7f1783cdf3d4f99465a0be6f917bcd3de1549ebaf46f023faa271ce892da4e54f2a1d2045b6120de2d4909e8d890c6fbd50a8
6
+ metadata.gz: cffc38b0fc5169f530ad1b5aed041824b74ec3d0c8892a01aee21a2fc50efafcd377106a9e9540fe5d23c949afb036653c5eeecff0c7ccbe2e3e204274779802
7
+ data.tar.gz: '092764014b0059eb4c1889b3ead6354304a5c788d2b7f8c0f02366875f7c218c42733da3f8483bf10634ef4a71cb4e2465491faf143ec05681ab62dc7af737a6'
data/CHANGELOG.md CHANGED
@@ -1,6 +1,18 @@
1
1
  Unreleased Changes
2
2
  ------------------
3
3
 
4
+ 3.187.0 (2023-11-17)
5
+ ------------------
6
+
7
+ * Feature - Updated Aws::STS::Client with the latest API changes.
8
+
9
+ * Feature - Updated Aws::SSOOIDC::Client with the latest API changes.
10
+
11
+ 3.186.0 (2023-11-02)
12
+ ------------------
13
+
14
+ * Feature - Support disabling IMDSv1 in `InstanceProfileCredentials` using `ENV['AWS_EC2_METADATA_V1_DISABLED']`, `ec2_metadata_v1_disabled` shared config, or the `disable_imds_v1` credentials option.
15
+
4
16
  3.185.2 (2023-10-31)
5
17
  ------------------
6
18
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 3.185.2
1
+ 3.187.0
@@ -53,6 +53,8 @@ module Aws
53
53
  # @option options [String] :endpoint_mode ('IPv4') The endpoint mode for
54
54
  # the instance metadata service. This is either 'IPv4' ('169.254.169.254')
55
55
  # or 'IPv6' ('[fd00:ec2::254]').
56
+ # @option options [Boolean] :disable_imds_v1 (false) Disable the use of the
57
+ # legacy EC2 Metadata Service v1.
56
58
  # @option options [String] :ip_address ('169.254.169.254') Deprecated. Use
57
59
  # :endpoint instead. The IP address for the endpoint.
58
60
  # @option options [Integer] :port (80)
@@ -77,6 +79,9 @@ module Aws
77
79
  endpoint_mode = resolve_endpoint_mode(options)
78
80
  @endpoint = resolve_endpoint(options, endpoint_mode)
79
81
  @port = options[:port] || 80
82
+ @disable_imds_v1 = resolve_disable_v1(options)
83
+ # Flag for if v2 flow fails, skip future attempts
84
+ @imds_v1_fallback = false
80
85
  @http_open_timeout = options[:http_open_timeout] || 1
81
86
  @http_read_timeout = options[:http_read_timeout] || 1
82
87
  @http_debug_output = options[:http_debug_output]
@@ -123,6 +128,16 @@ module Aws
123
128
  end
124
129
  end
125
130
 
131
+ def resolve_disable_v1(options)
132
+ value = options[:disable_imds_v1]
133
+ value ||= ENV['AWS_EC2_METADATA_V1_DISABLED']
134
+ value ||= Aws.shared_config.ec2_metadata_v1_disabled(
135
+ profile: options[:profile]
136
+ )
137
+ value = value.to_s.downcase if value
138
+ Aws::Util.str_2_bool(value) || false
139
+ end
140
+
126
141
  def backoff(backoff)
127
142
  case backoff
128
143
  when Proc then backoff
@@ -141,7 +156,7 @@ module Aws
141
156
  # service is responding but is returning invalid JSON documents
142
157
  # in response to the GET profile credentials call.
143
158
  begin
144
- retry_errors([Aws::Json::ParseError, StandardError], max_retries: 3) do
159
+ retry_errors([Aws::Json::ParseError], max_retries: 3) do
145
160
  c = Aws::Json.load(get_credentials.to_s)
146
161
  if empty_credentials?(@credentials)
147
162
  @credentials = Credentials.new(
@@ -173,7 +188,6 @@ module Aws
173
188
  end
174
189
  end
175
190
  end
176
-
177
191
  end
178
192
  rescue Aws::Json::ParseError
179
193
  raise Aws::Errors::MetadataParserError
@@ -191,34 +205,14 @@ module Aws
191
205
  open_connection do |conn|
192
206
  # attempt to fetch token to start secure flow first
193
207
  # and rescue to failover
194
- begin
195
- retry_errors(NETWORK_ERRORS, max_retries: @retries) do
196
- unless token_set?
197
- created_time = Time.now
198
- token_value, ttl = http_put(
199
- conn, METADATA_TOKEN_PATH, @token_ttl
200
- )
201
- @token = Token.new(token_value, ttl, created_time) if token_value && ttl
202
- end
203
- end
204
- rescue *NETWORK_ERRORS
205
- # token attempt failed, reset token
206
- # fallback to non-token mode
207
- @token = nil
208
- end
209
-
208
+ fetch_token(conn) unless @imds_v1_fallback
210
209
  token = @token.value if token_set?
211
210
 
212
- begin
213
- metadata = http_get(conn, METADATA_PATH_BASE, token)
214
- profile_name = metadata.lines.first.strip
215
- http_get(conn, METADATA_PATH_BASE + profile_name, token)
216
- rescue TokenExpiredError
217
- # Token has expired, reset it
218
- # The next retry should fetch it
219
- @token = nil
220
- raise Non200Response
221
- end
211
+ # disable insecure flow if we couldn't get token
212
+ # and imds v1 is disabled
213
+ raise TokenRetrivalError if token.nil? && @disable_imds_v1
214
+
215
+ _get_credentials(conn, token)
222
216
  end
223
217
  end
224
218
  rescue
@@ -227,6 +221,36 @@ module Aws
227
221
  end
228
222
  end
229
223
 
224
+ def fetch_token(conn)
225
+ retry_errors(NETWORK_ERRORS, max_retries: @retries) do
226
+ unless token_set?
227
+ created_time = Time.now
228
+ token_value, ttl = http_put(
229
+ conn, METADATA_TOKEN_PATH, @token_ttl
230
+ )
231
+ @token = Token.new(token_value, ttl, created_time) if token_value && ttl
232
+ end
233
+ end
234
+ rescue *NETWORK_ERRORS
235
+ # token attempt failed, reset token
236
+ # fallback to non-token mode
237
+ @token = nil
238
+ @imds_v1_fallback = true
239
+ end
240
+
241
+ # token is optional - if nil, uses v1 (insecure) flow
242
+ def _get_credentials(conn, token)
243
+ metadata = http_get(conn, METADATA_PATH_BASE, token)
244
+ profile_name = metadata.lines.first.strip
245
+ http_get(conn, METADATA_PATH_BASE + profile_name, token)
246
+ rescue TokenExpiredError
247
+ # Token has expired, reset it
248
+ # The next retry should fetch it
249
+ @token = nil
250
+ @imds_v1_fallback = false
251
+ raise Non200Response
252
+ end
253
+
230
254
  def token_set?
231
255
  @token && !@token.expired?
232
256
  end
@@ -276,8 +300,6 @@ module Aws
276
300
  ]
277
301
  when 400
278
302
  raise TokenRetrivalError
279
- when 401
280
- raise TokenExpiredError
281
303
  else
282
304
  raise Non200Response
283
305
  end
@@ -205,6 +205,7 @@ module Aws
205
205
  :use_fips_endpoint,
206
206
  :ec2_metadata_service_endpoint,
207
207
  :ec2_metadata_service_endpoint_mode,
208
+ :ec2_metadata_v1_disabled,
208
209
  :max_attempts,
209
210
  :retry_mode,
210
211
  :adaptive_retry_wait_to_fill,
@@ -605,7 +605,7 @@ module Aws::SSO
605
605
  params: params,
606
606
  config: config)
607
607
  context[:gem_name] = 'aws-sdk-core'
608
- context[:gem_version] = '3.185.2'
608
+ context[:gem_version] = '3.187.0'
609
609
  Seahorse::Client::Request.new(handlers, context)
610
610
  end
611
611
 
data/lib/aws-sdk-sso.rb CHANGED
@@ -54,6 +54,6 @@ require_relative 'aws-sdk-sso/customizations'
54
54
  # @!group service
55
55
  module Aws::SSO
56
56
 
57
- GEM_VERSION = '3.185.2'
57
+ GEM_VERSION = '3.187.0'
58
58
 
59
59
  end
@@ -388,61 +388,64 @@ module Aws::SSOOIDC
388
388
 
389
389
  # @!group API Operations
390
390
 
391
- # Creates and returns an access token for the authorized client. The
392
- # access token issued will be used to fetch short-term credentials for
393
- # the assigned roles in the AWS account.
391
+ # Creates and returns access and refresh tokens for clients that are
392
+ # authenticated using client secrets. The access token can be used to
393
+ # fetch short-term credentials for the assigned AWS accounts or to
394
+ # access application APIs using `bearer` authentication.
394
395
  #
395
396
  # @option params [required, String] :client_id
396
- # The unique identifier string for each client. This value should come
397
- # from the persisted result of the RegisterClient API.
397
+ # The unique identifier string for the client or application. This value
398
+ # comes from the result of the RegisterClient API.
398
399
  #
399
400
  # @option params [required, String] :client_secret
400
401
  # A secret string generated for the client. This value should come from
401
402
  # the persisted result of the RegisterClient API.
402
403
  #
403
404
  # @option params [required, String] :grant_type
404
- # Supports grant types for the authorization code, refresh token, and
405
- # device code request. For device code requests, specify the following
406
- # value:
405
+ # Supports the following OAuth grant types: Device Code and Refresh
406
+ # Token. Specify either of the following values, depending on the grant
407
+ # type that you want:
407
408
  #
408
- # `urn:ietf:params:oauth:grant-type:device_code `
409
+ # * Device Code - `urn:ietf:params:oauth:grant-type:device_code`
410
+ #
411
+ # * Refresh Token - `refresh_token`
409
412
  #
410
413
  # For information about how to obtain the device code, see the
411
414
  # StartDeviceAuthorization topic.
412
415
  #
413
416
  # @option params [String] :device_code
414
- # Used only when calling this API for the device code grant type. This
415
- # short-term code is used to identify this authentication attempt. This
416
- # should come from an in-memory reference to the result of the
417
- # StartDeviceAuthorization API.
417
+ # Used only when calling this API for the Device Code grant type. This
418
+ # short-term code is used to identify this authorization request. This
419
+ # comes from the result of the StartDeviceAuthorization API.
418
420
  #
419
421
  # @option params [String] :code
420
- # The authorization code received from the authorization service. This
421
- # parameter is required to perform an authorization grant request to get
422
- # access to a token.
422
+ # Used only when calling this API for the Authorization Code grant type.
423
+ # The short-term code is used to identify this authorization request.
424
+ # This grant type is currently unsupported for the CreateToken API.
423
425
  #
424
426
  # @option params [String] :refresh_token
425
- # Currently, `refreshToken` is not yet implemented and is not supported.
427
+ # Used only when calling this API for the Refresh Token grant type. This
428
+ # token is used to refresh short-term tokens, such as the access token,
429
+ # that might expire.
430
+ #
426
431
  # For more information about the features and limitations of the current
427
432
  # IAM Identity Center OIDC implementation, see *Considerations for Using
428
433
  # this Guide* in the [IAM Identity Center OIDC API Reference][1].
429
434
  #
430
- # The token used to obtain an access token in the event that the access
431
- # token is invalid or expired.
432
- #
433
435
  #
434
436
  #
435
437
  # [1]: https://docs.aws.amazon.com/singlesignon/latest/OIDCAPIReference/Welcome.html
436
438
  #
437
439
  # @option params [Array<String>] :scope
438
- # The list of scopes that is defined by the client. Upon authorization,
439
- # this list is used to restrict permissions when granting an access
440
- # token.
440
+ # The list of scopes for which authorization is requested. The access
441
+ # token that is issued is limited to the scopes that are granted. If
442
+ # this value is not specified, IAM Identity Center authorizes all scopes
443
+ # that are configured for the client during the call to RegisterClient.
441
444
  #
442
445
  # @option params [String] :redirect_uri
443
- # The location of the application that will receive the authorization
444
- # code. Users authorize the service to send the request to this
445
- # location.
446
+ # Used only when calling this API for the Authorization Code grant type.
447
+ # This value specifies the location of the client or application that
448
+ # has registered to receive the authorization code.
446
449
  #
447
450
  # @return [Types::CreateTokenResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
448
451
  #
@@ -452,6 +455,44 @@ module Aws::SSOOIDC
452
455
  # * {Types::CreateTokenResponse#refresh_token #refresh_token} => String
453
456
  # * {Types::CreateTokenResponse#id_token #id_token} => String
454
457
  #
458
+ #
459
+ # @example Example: Call OAuth/OIDC /token endpoint for Device Code grant with Secret authentication
460
+ #
461
+ # resp = client.create_token({
462
+ # client_id: "_yzkThXVzLWVhc3QtMQEXAMPLECLIENTID",
463
+ # client_secret: "VERYLONGSECRETeyJraWQiOiJrZXktMTU2NDAyODA5OSIsImFsZyI6IkhTMzg0In0",
464
+ # device_code: "yJraWQiOiJrZXktMTU2Njk2ODA4OCIsImFsZyI6IkhTMzIn0EXAMPLEDEVICECODE",
465
+ # grant_type: "urn:ietf:params:oauth:grant-type:device-code",
466
+ # })
467
+ #
468
+ # resp.to_h outputs the following:
469
+ # {
470
+ # access_token: "aoal-YigITUDiNX1xZwOMXM5MxOWDL0E0jg9P6_C_jKQPxS_SKCP6f0kh1Up4g7TtvQqkMnD-GJiU_S1gvug6SrggAkc0:MGYCMQD3IatVjV7jAJU91kK3PkS/SfA2wtgWzOgZWDOR7sDGN9t0phCZz5It/aes/3C1Zj0CMQCKWOgRaiz6AIhza3DSXQNMLjRKXC8F8ceCsHlgYLMZ7hZidEXAMPLEACCESSTOKEN",
471
+ # expires_in: 1579729529,
472
+ # refresh_token: "aorvJYubGpU6i91YnH7Mfo-AT2fIVa1zCfA_Rvq9yjVKIP3onFmmykuQ7E93y2I-9Nyj-A_sVvMufaLNL0bqnDRtgAkc0:MGUCMFrRsktMRVlWaOR70XGMFGLL0SlcCw4DiYveIiOVx1uK9BbD0gvAddsW3UTLozXKMgIxAJ3qxUvjpnlLIOaaKOoa/FuNgqJVvr9GMwDtnAtlh9iZzAkEXAMPLEREFRESHTOKEN",
473
+ # token_type: "Bearer",
474
+ # }
475
+ #
476
+ # @example Example: Call OAuth/OIDC /token endpoint for Refresh Token grant with Secret authentication
477
+ #
478
+ # resp = client.create_token({
479
+ # client_id: "_yzkThXVzLWVhc3QtMQEXAMPLECLIENTID",
480
+ # client_secret: "VERYLONGSECRETeyJraWQiOiJrZXktMTU2NDAyODA5OSIsImFsZyI6IkhTMzg0In0",
481
+ # grant_type: "refresh_token",
482
+ # refresh_token: "aorvJYubGpU6i91YnH7Mfo-AT2fIVa1zCfA_Rvq9yjVKIP3onFmmykuQ7E93y2I-9Nyj-A_sVvMufaLNL0bqnDRtgAkc0:MGUCMFrRsktMRVlWaOR70XGMFGLL0SlcCw4DiYveIiOVx1uK9BbD0gvAddsW3UTLozXKMgIxAJ3qxUvjpnlLIOaaKOoa/FuNgqJVvr9GMwDtnAtlh9iZzAkEXAMPLEREFRESHTOKEN",
483
+ # scope: [
484
+ # "codewhisperer:completions",
485
+ # ],
486
+ # })
487
+ #
488
+ # resp.to_h outputs the following:
489
+ # {
490
+ # access_token: "aoal-YigITUDiNX1xZwOMXM5MxOWDL0E0jg9P6_C_jKQPxS_SKCP6f0kh1Up4g7TtvQqkMnD-GJiU_S1gvug6SrggAkc0:MGYCMQD3IatVjV7jAJU91kK3PkS/SfA2wtgWzOgZWDOR7sDGN9t0phCZz5It/aes/3C1Zj0CMQCKWOgRaiz6AIhza3DSXQNMLjRKXC8F8ceCsHlgYLMZ7hZidEXAMPLEACCESSTOKEN",
491
+ # expires_in: 1579729529,
492
+ # refresh_token: "aorvJYubGpU6i91YnH7Mfo-AT2fIVa1zCfA_Rvq9yjVKIP3onFmmykuQ7E93y2I-9Nyj-A_sVvMufaLNL0bqnDRtgAkc0:MGUCMFrRsktMRVlWaOR70XGMFGLL0SlcCw4DiYveIiOVx1uK9BbD0gvAddsW3UTLozXKMgIxAJ3qxUvjpnlLIOaaKOoa/FuNgqJVvr9GMwDtnAtlh9iZzAkEXAMPLEREFRESHTOKEN",
493
+ # token_type: "Bearer",
494
+ # }
495
+ #
455
496
  # @example Request syntax with placeholder values
456
497
  #
457
498
  # resp = client.create_token({
@@ -482,6 +523,234 @@ module Aws::SSOOIDC
482
523
  req.send_request(options)
483
524
  end
484
525
 
526
+ # Creates and returns access and refresh tokens for clients and
527
+ # applications that are authenticated using IAM entities. The access
528
+ # token can be used to fetch short-term credentials for the assigned AWS
529
+ # accounts or to access application APIs using `bearer` authentication.
530
+ #
531
+ # @option params [required, String] :client_id
532
+ # The unique identifier string for the client or application. This value
533
+ # is an application ARN that has OAuth grants configured.
534
+ #
535
+ # @option params [required, String] :grant_type
536
+ # Supports the following OAuth grant types: Authorization Code, Refresh
537
+ # Token, JWT Bearer, and Token Exchange. Specify one of the following
538
+ # values, depending on the grant type that you want:
539
+ #
540
+ # * Authorization Code - `authorization_code`
541
+ #
542
+ # * Refresh Token - `refresh_token`
543
+ #
544
+ # * JWT Bearer - `urn:ietf:params:oauth:grant-type:jwt-bearer`
545
+ #
546
+ # * Token Exchange - `urn:ietf:params:oauth:grant-type:token-exchange`
547
+ #
548
+ # @option params [String] :code
549
+ # Used only when calling this API for the Authorization Code grant type.
550
+ # This short-term code is used to identify this authorization request.
551
+ # The code is obtained through a redirect from IAM Identity Center to a
552
+ # redirect URI persisted in the Authorization Code GrantOptions for the
553
+ # application.
554
+ #
555
+ # @option params [String] :refresh_token
556
+ # Used only when calling this API for the Refresh Token grant type. This
557
+ # token is used to refresh short-term tokens, such as the access token,
558
+ # that might expire.
559
+ #
560
+ # For more information about the features and limitations of the current
561
+ # IAM Identity Center OIDC implementation, see *Considerations for Using
562
+ # this Guide* in the [IAM Identity Center OIDC API Reference][1].
563
+ #
564
+ #
565
+ #
566
+ # [1]: https://docs.aws.amazon.com/singlesignon/latest/OIDCAPIReference/Welcome.html
567
+ #
568
+ # @option params [String] :assertion
569
+ # Used only when calling this API for the JWT Bearer grant type. This
570
+ # value specifies the JSON Web Token (JWT) issued by a trusted token
571
+ # issuer. To authorize a trusted token issuer, configure the JWT Bearer
572
+ # GrantOptions for the application.
573
+ #
574
+ # @option params [Array<String>] :scope
575
+ # The list of scopes for which authorization is requested. The access
576
+ # token that is issued is limited to the scopes that are granted. If the
577
+ # value is not specified, IAM Identity Center authorizes all scopes
578
+ # configured for the application, including the following default
579
+ # scopes: `openid`, `aws`, `sts:identity_context`.
580
+ #
581
+ # @option params [String] :redirect_uri
582
+ # Used only when calling this API for the Authorization Code grant type.
583
+ # This value specifies the location of the client or application that
584
+ # has registered to receive the authorization code.
585
+ #
586
+ # @option params [String] :subject_token
587
+ # Used only when calling this API for the Token Exchange grant type.
588
+ # This value specifies the subject of the exchange. The value of the
589
+ # subject token must be an access token issued by IAM Identity Center to
590
+ # a different client or application. The access token must have
591
+ # authorized scopes that indicate the requested application as a target
592
+ # audience.
593
+ #
594
+ # @option params [String] :subject_token_type
595
+ # Used only when calling this API for the Token Exchange grant type.
596
+ # This value specifies the type of token that is passed as the subject
597
+ # of the exchange. The following value is supported:
598
+ #
599
+ # * Access Token - `urn:ietf:params:oauth:token-type:access_token`
600
+ #
601
+ # @option params [String] :requested_token_type
602
+ # Used only when calling this API for the Token Exchange grant type.
603
+ # This value specifies the type of token that the requester can receive.
604
+ # The following values are supported:
605
+ #
606
+ # * Access Token - `urn:ietf:params:oauth:token-type:access_token`
607
+ #
608
+ # * Refresh Token - `urn:ietf:params:oauth:token-type:refresh_token`
609
+ #
610
+ # @return [Types::CreateTokenWithIAMResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
611
+ #
612
+ # * {Types::CreateTokenWithIAMResponse#access_token #access_token} => String
613
+ # * {Types::CreateTokenWithIAMResponse#token_type #token_type} => String
614
+ # * {Types::CreateTokenWithIAMResponse#expires_in #expires_in} => Integer
615
+ # * {Types::CreateTokenWithIAMResponse#refresh_token #refresh_token} => String
616
+ # * {Types::CreateTokenWithIAMResponse#id_token #id_token} => String
617
+ # * {Types::CreateTokenWithIAMResponse#issued_token_type #issued_token_type} => String
618
+ # * {Types::CreateTokenWithIAMResponse#scope #scope} => Array&lt;String&gt;
619
+ #
620
+ #
621
+ # @example Example: Call OAuth/OIDC /token endpoint for Authorization Code grant with IAM authentication
622
+ #
623
+ # resp = client.create_token_with_iam({
624
+ # client_id: "arn:aws:sso::123456789012:application/ssoins-111111111111/apl-222222222222",
625
+ # code: "yJraWQiOiJrZXktMTU2Njk2ODA4OCIsImFsZyI6IkhTMzg0In0EXAMPLEAUTHCODE",
626
+ # grant_type: "authorization_code",
627
+ # redirect_uri: "https://mywebapp.example/redirect",
628
+ # scope: [
629
+ # "openid",
630
+ # "aws",
631
+ # "sts:identity_context",
632
+ # ],
633
+ # })
634
+ #
635
+ # resp.to_h outputs the following:
636
+ # {
637
+ # access_token: "aoal-YigITUDiNX1xZwOMXM5MxOWDL0E0jg9P6_C_jKQPxS_SKCP6f0kh1Up4g7TtvQqkMnD-GJiU_S1gvug6SrggAkc0:MGYCMQD3IatVjV7jAJU91kK3PkS/SfA2wtgWzOgZWDOR7sDGN9t0phCZz5It/aes/3C1Zj0CMQCKWOgRaiz6AIhza3DSXQNMLjRKXC8F8ceCsHlgYLMZ7hZidEXAMPLEACCESSTOKEN",
638
+ # expires_in: 1579729529,
639
+ # id_token: "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhd3M6aWRlbnRpdHlfc3RvcmVfaWQiOiJkLTMzMzMzMzMzMzMiLCJzdWIiOiI3MzA0NDhmMi1lMGExLTcwYTctYzk1NC0wMDAwMDAwMDAwMDAiLCJhd3M6aW5zdGFuY2VfYWNjb3VudCI6IjExMTExMTExMTExMSIsInN0czppZGVudGl0eV9jb250ZXh0IjoiRVhBTVBMRUlERU5USVRZQ09OVEVYVCIsInN0czphdWRpdF9jb250ZXh0IjoiRVhBTVBMRUFVRElUQ09OVEVYVCIsImlzcyI6Imh0dHBzOi8vaWRlbnRpdHljZW50ZXIuYW1hem9uYXdzLmNvbS9zc29pbnMtMTExMTExMTExMTExIiwiYXdzOmlkZW50aXR5X3N0b3JlX2FybiI6ImFybjphd3M6aWRlbnRpdHlzdG9yZTo6MTExMTExMTExMTExOmlkZW50aXR5c3RvcmUvZC0zMzMzMzMzMzMzIiwiYXVkIjoiYXJuOmF3czpzc286OjEyMzQ1Njc4OTAxMjphcHBsaWNhdGlvbi9zc29pbnMtMTExMTExMTExMTExL2FwbC0yMjIyMjIyMjIyMjIiLCJhd3M6aW5zdGFuY2VfYXJuIjoiYXJuOmF3czpzc286OjppbnN0YW5jZS9zc29pbnMtMTExMTExMTExMTExIiwiYXdzOmNyZWRlbnRpYWxfaWQiOiJfWlIyTjZhVkJqMjdGUEtheWpfcEtwVjc3QVBERl80MXB4ZXRfWWpJdUpONlVJR2RBdkpFWEFNUExFQ1JFRElEIiwiYXV0aF90aW1lIjoiMjAyMC0wMS0yMlQxMjo0NToyOVoiLCJleHAiOjE1Nzk3Mjk1MjksImlhdCI6MTU3OTcyNTkyOX0.Xyah6qbk78qThzJ41iFU2yfGuRqqtKXHrJYwQ8L9Ip0",
640
+ # issued_token_type: "urn:ietf:params:oauth:token-type:refresh_token",
641
+ # refresh_token: "aorvJYubGpU6i91YnH7Mfo-AT2fIVa1zCfA_Rvq9yjVKIP3onFmmykuQ7E93y2I-9Nyj-A_sVvMufaLNL0bqnDRtgAkc0:MGUCMFrRsktMRVlWaOR70XGMFGLL0SlcCw4DiYveIiOVx1uK9BbD0gvAddsW3UTLozXKMgIxAJ3qxUvjpnlLIOaaKOoa/FuNgqJVvr9GMwDtnAtlh9iZzAkEXAMPLEREFRESHTOKEN",
642
+ # scope: [
643
+ # "openid",
644
+ # "aws",
645
+ # "sts:identity_context",
646
+ # ],
647
+ # token_type: "Bearer",
648
+ # }
649
+ #
650
+ # @example Example: Call OAuth/OIDC /token endpoint for Refresh Token grant with IAM authentication
651
+ #
652
+ # resp = client.create_token_with_iam({
653
+ # client_id: "arn:aws:sso::123456789012:application/ssoins-111111111111/apl-222222222222",
654
+ # grant_type: "refresh_token",
655
+ # refresh_token: "aorvJYubGpU6i91YnH7Mfo-AT2fIVa1zCfA_Rvq9yjVKIP3onFmmykuQ7E93y2I-9Nyj-A_sVvMufaLNL0bqnDRtgAkc0:MGUCMFrRsktMRVlWaOR70XGMFGLL0SlcCw4DiYveIiOVx1uK9BbD0gvAddsW3UTLozXKMgIxAJ3qxUvjpnlLIOaaKOoa/FuNgqJVvr9GMwDtnAtlh9iZzAkEXAMPLEREFRESHTOKEN",
656
+ # })
657
+ #
658
+ # resp.to_h outputs the following:
659
+ # {
660
+ # access_token: "aoal-YigITUDiNX1xZwOMXM5MxOWDL0E0jg9P6_C_jKQPxS_SKCP6f0kh1Up4g7TtvQqkMnD-GJiU_S1gvug6SrggAkc0:MGYCMQD3IatVjV7jAJU91kK3PkS/SfA2wtgWzOgZWDOR7sDGN9t0phCZz5It/aes/3C1Zj0CMQCKWOgRaiz6AIhza3DSXQNMLjRKXC8F8ceCsHlgYLMZ7hZidEXAMPLEACCESSTOKEN",
661
+ # expires_in: 1579729529,
662
+ # issued_token_type: "urn:ietf:params:oauth:token-type:refresh_token",
663
+ # refresh_token: "aorvJYubGpU6i91YnH7Mfo-AT2fIVa1zCfA_Rvq9yjVKIP3onFmmykuQ7E93y2I-9Nyj-A_sVvMufaLNL0bqnDRtgAkc0:MGUCMFrRsktMRVlWaOR70XGMFGLL0SlcCw4DiYveIiOVx1uK9BbD0gvAddsW3UTLozXKMgIxAJ3qxUvjpnlLIOaaKOoa/FuNgqJVvr9GMwDtnAtlh9iZzAkEXAMPLEREFRESHTOKEN",
664
+ # scope: [
665
+ # "openid",
666
+ # "aws",
667
+ # "sts:identity_context",
668
+ # ],
669
+ # token_type: "Bearer",
670
+ # }
671
+ #
672
+ # @example Example: Call OAuth/OIDC /token endpoint for JWT Bearer grant with IAM authentication
673
+ #
674
+ # resp = client.create_token_with_iam({
675
+ # assertion: "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6IjFMVE16YWtpaGlSbGFfOHoyQkVKVlhlV01xbyJ9.eyJ2ZXIiOiIyLjAiLCJpc3MiOiJodHRwczovL2xvZ2luLm1pY3Jvc29mdG9ubGluZS5jb20vOTEyMjA0MGQtNmM2Ny00YzViLWIxMTItMzZhMzA0YjY2ZGFkL3YyLjAiLCJzdWIiOiJBQUFBQUFBQUFBQUFBQUFBQUFBQUFJa3pxRlZyU2FTYUZIeTc4MmJidGFRIiwiYXVkIjoiNmNiMDQwMTgtYTNmNS00NmE3LWI5OTUtOTQwYzc4ZjVhZWYzIiwiZXhwIjoxNTM2MzYxNDExLCJpYXQiOjE1MzYyNzQ3MTEsIm5iZiI6MTUzNjI3NDcxMSwibmFtZSI6IkFiZSBMaW5jb2xuIiwicHJlZmVycmVkX3VzZXJuYW1lIjoiQWJlTGlAbWljcm9zb2Z0LmNvbSIsIm9pZCI6IjAwMDAwMDAwLTAwMDAtMDAwMC02NmYzLTMzMzJlY2E3ZWE4MSIsInRpZCI6IjkxMjIwNDBkLTZjNjctNGM1Yi1iMTEyLTM2YTMwNGI2NmRhZCIsIm5vbmNlIjoiMTIzNTIzIiwiYWlvIjoiRGYyVVZYTDFpeCFsTUNXTVNPSkJjRmF0emNHZnZGR2hqS3Y4cTVnMHg3MzJkUjVNQjVCaXN2R1FPN1lXQnlqZDhpUURMcSFlR2JJRGFreXA1bW5PcmNkcUhlWVNubHRlcFFtUnA2QUlaOGpZIn0.1AFWW-Ck5nROwSlltm7GzZvDwUkqvhSQpm55TQsmVo9Y59cLhRXpvB8n-55HCr9Z6G_31_UbeUkoz612I2j_Sm9FFShSDDjoaLQr54CreGIJvjtmS3EkK9a7SJBbcpL1MpUtlfygow39tFjY7EVNW9plWUvRrTgVk7lYLprvfzw-CIqw3gHC-T7IK_m_xkr08INERBtaecwhTeN4chPC4W3jdmw_lIxzC48YoQ0dB1L9-ImX98Egypfrlbm0IBL5spFzL6JDZIRRJOu8vecJvj1mq-IUhGt0MacxX8jdxYLP-KUu2d9MbNKpCKJuZ7p8gwTL5B7NlUdh_dmSviPWrw",
676
+ # client_id: "arn:aws:sso::123456789012:application/ssoins-111111111111/apl-222222222222",
677
+ # grant_type: "urn:ietf:params:oauth:grant-type:jwt-bearer",
678
+ # })
679
+ #
680
+ # resp.to_h outputs the following:
681
+ # {
682
+ # access_token: "aoal-YigITUDiNX1xZwOMXM5MxOWDL0E0jg9P6_C_jKQPxS_SKCP6f0kh1Up4g7TtvQqkMnD-GJiU_S1gvug6SrggAkc0:MGYCMQD3IatVjV7jAJU91kK3PkS/SfA2wtgWzOgZWDOR7sDGN9t0phCZz5It/aes/3C1Zj0CMQCKWOgRaiz6AIhza3DSXQNMLjRKXC8F8ceCsHlgYLMZ7hZidEXAMPLEACCESSTOKEN",
683
+ # expires_in: 1579729529,
684
+ # id_token: "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhd3M6aWRlbnRpdHlfc3RvcmVfaWQiOiJkLTMzMzMzMzMzMzMiLCJzdWIiOiI3MzA0NDhmMi1lMGExLTcwYTctYzk1NC0wMDAwMDAwMDAwMDAiLCJhd3M6aW5zdGFuY2VfYWNjb3VudCI6IjExMTExMTExMTExMSIsInN0czppZGVudGl0eV9jb250ZXh0IjoiRVhBTVBMRUlERU5USVRZQ09OVEVYVCIsInN0czphdWRpdF9jb250ZXh0IjoiRVhBTVBMRUFVRElUQ09OVEVYVCIsImlzcyI6Imh0dHBzOi8vaWRlbnRpdHljZW50ZXIuYW1hem9uYXdzLmNvbS9zc29pbnMtMTExMTExMTExMTExIiwiYXdzOmlkZW50aXR5X3N0b3JlX2FybiI6ImFybjphd3M6aWRlbnRpdHlzdG9yZTo6MTExMTExMTExMTExOmlkZW50aXR5c3RvcmUvZC0zMzMzMzMzMzMzIiwiYXVkIjoiYXJuOmF3czpzc286OjEyMzQ1Njc4OTAxMjphcHBsaWNhdGlvbi9zc29pbnMtMTExMTExMTExMTExL2FwbC0yMjIyMjIyMjIyMjIiLCJhd3M6aW5zdGFuY2VfYXJuIjoiYXJuOmF3czpzc286OjppbnN0YW5jZS9zc29pbnMtMTExMTExMTExMTExIiwiYXdzOmNyZWRlbnRpYWxfaWQiOiJfWlIyTjZhVkJqMjdGUEtheWpfcEtwVjc3QVBERl80MXB4ZXRfWWpJdUpONlVJR2RBdkpFWEFNUExFQ1JFRElEIiwiYXV0aF90aW1lIjoiMjAyMC0wMS0yMlQxMjo0NToyOVoiLCJleHAiOjE1Nzk3Mjk1MjksImlhdCI6MTU3OTcyNTkyOX0.Xyah6qbk78qThzJ41iFU2yfGuRqqtKXHrJYwQ8L9Ip0",
685
+ # issued_token_type: "urn:ietf:params:oauth:token-type:refresh_token",
686
+ # refresh_token: "aorvJYubGpU6i91YnH7Mfo-AT2fIVa1zCfA_Rvq9yjVKIP3onFmmykuQ7E93y2I-9Nyj-A_sVvMufaLNL0bqnDRtgAkc0:MGUCMFrRsktMRVlWaOR70XGMFGLL0SlcCw4DiYveIiOVx1uK9BbD0gvAddsW3UTLozXKMgIxAJ3qxUvjpnlLIOaaKOoa/FuNgqJVvr9GMwDtnAtlh9iZzAkEXAMPLEREFRESHTOKEN",
687
+ # scope: [
688
+ # "openid",
689
+ # "aws",
690
+ # "sts:identity_context",
691
+ # ],
692
+ # token_type: "Bearer",
693
+ # }
694
+ #
695
+ # @example Example: Call OAuth/OIDC /token endpoint for Token Exchange grant with IAM authentication
696
+ #
697
+ # resp = client.create_token_with_iam({
698
+ # client_id: "arn:aws:sso::123456789012:application/ssoins-111111111111/apl-222222222222",
699
+ # grant_type: "urn:ietf:params:oauth:grant-type:token-exchange",
700
+ # requested_token_type: "urn:ietf:params:oauth:token-type:access_token",
701
+ # subject_token: "aoak-Hig8TUDPNX1xZwOMXM5MxOWDL0E0jg9P6_C_jKQPxS_SKCP6f0kh1Up4g7TtvQqkMnD-GJiU_S1gvug6SrggAkc0:MGYCMQD3IatVjV7jAJU91kK3PkS/SfA2wtgWzOgZWDOR7sDGN9t0phCZz5It/aes/3C1Zj0CMQCKWOgRaiz6AIhza3DSXQNMLjRKXC8F8ceCsHlgYLMZ7hZDIFFERENTACCESSTOKEN",
702
+ # subject_token_type: "urn:ietf:params:oauth:token-type:access_token",
703
+ # })
704
+ #
705
+ # resp.to_h outputs the following:
706
+ # {
707
+ # access_token: "aoal-YigITUDiNX1xZwOMXM5MxOWDL0E0jg9P6_C_jKQPxS_SKCP6f0kh1Up4g7TtvQqkMnD-GJiU_S1gvug6SrggAkc0:MGYCMQD3IatVjV7jAJU91kK3PkS/SfA2wtgWzOgZWDOR7sDGN9t0phCZz5It/aes/3C1Zj0CMQCKWOgRaiz6AIhza3DSXQNMLjRKXC8F8ceCsHlgYLMZ7hZidEXAMPLEACCESSTOKEN",
708
+ # expires_in: 1579729529,
709
+ # id_token: "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhd3M6aWRlbnRpdHlfc3RvcmVfaWQiOiJkLTMzMzMzMzMzMzMiLCJzdWIiOiI3MzA0NDhmMi1lMGExLTcwYTctYzk1NC0wMDAwMDAwMDAwMDAiLCJhd3M6aW5zdGFuY2VfYWNjb3VudCI6IjExMTExMTExMTExMSIsInN0czppZGVudGl0eV9jb250ZXh0IjoiRVhBTVBMRUlERU5USVRZQ09OVEVYVCIsImlzcyI6Imh0dHBzOi8vaWRlbnRpdHljZW50ZXIuYW1hem9uYXdzLmNvbS9zc29pbnMtMTExMTExMTExMTExIiwiYXdzOmlkZW50aXR5X3N0b3JlX2FybiI6ImFybjphd3M6aWRlbnRpdHlzdG9yZTo6MTExMTExMTExMTExOmlkZW50aXR5c3RvcmUvZC0zMzMzMzMzMzMzIiwiYXVkIjoiYXJuOmF3czpzc286OjEyMzQ1Njc4OTAxMjphcHBsaWNhdGlvbi9zc29pbnMtMTExMTExMTExMTExL2FwbC0yMjIyMjIyMjIyMjIiLCJhd3M6aW5zdGFuY2VfYXJuIjoiYXJuOmF3czpzc286OjppbnN0YW5jZS9zc29pbnMtMTExMTExMTExMTExIiwiYXdzOmNyZWRlbnRpYWxfaWQiOiJfWlIyTjZhVkJqMjdGUEtheWpfcEtwVjc3QVBERl80MXB4ZXRfWWpJdUpONlVJR2RBdkpFWEFNUExFQ1JFRElEIiwiYXV0aF90aW1lIjoiMjAyMC0wMS0yMlQxMjo0NToyOVoiLCJleHAiOjE1Nzk3Mjk1MjksImlhdCI6MTU3OTcyNTkyOX0.5SYiW1kMsuUr7nna-l5tlakM0GNbMHvIM2_n0QD23jM",
710
+ # issued_token_type: "urn:ietf:params:oauth:token-type:access_token",
711
+ # scope: [
712
+ # "openid",
713
+ # "aws",
714
+ # "sts:identity_context",
715
+ # ],
716
+ # token_type: "Bearer",
717
+ # }
718
+ #
719
+ # @example Request syntax with placeholder values
720
+ #
721
+ # resp = client.create_token_with_iam({
722
+ # client_id: "ClientId", # required
723
+ # grant_type: "GrantType", # required
724
+ # code: "AuthCode",
725
+ # refresh_token: "RefreshToken",
726
+ # assertion: "Assertion",
727
+ # scope: ["Scope"],
728
+ # redirect_uri: "URI",
729
+ # subject_token: "SubjectToken",
730
+ # subject_token_type: "TokenTypeURI",
731
+ # requested_token_type: "TokenTypeURI",
732
+ # })
733
+ #
734
+ # @example Response structure
735
+ #
736
+ # resp.access_token #=> String
737
+ # resp.token_type #=> String
738
+ # resp.expires_in #=> Integer
739
+ # resp.refresh_token #=> String
740
+ # resp.id_token #=> String
741
+ # resp.issued_token_type #=> String
742
+ # resp.scope #=> Array
743
+ # resp.scope[0] #=> String
744
+ #
745
+ # @see http://docs.aws.amazon.com/goto/WebAPI/sso-oidc-2019-06-10/CreateTokenWithIAM AWS API Documentation
746
+ #
747
+ # @overload create_token_with_iam(params = {})
748
+ # @param [Hash] params ({})
749
+ def create_token_with_iam(params = {}, options = {})
750
+ req = build_request(:create_token_with_iam, params)
751
+ req.send_request(options)
752
+ end
753
+
485
754
  # Registers a client with IAM Identity Center. This allows clients to
486
755
  # initiate device authorization. The output should be persisted for
487
756
  # reuse through many authentication requests.
@@ -507,6 +776,26 @@ module Aws::SSOOIDC
507
776
  # * {Types::RegisterClientResponse#authorization_endpoint #authorization_endpoint} => String
508
777
  # * {Types::RegisterClientResponse#token_endpoint #token_endpoint} => String
509
778
  #
779
+ #
780
+ # @example Example: Call OAuth/OIDC /register-client endpoint
781
+ #
782
+ # resp = client.register_client({
783
+ # client_name: "My IDE Plugin",
784
+ # client_type: "public",
785
+ # scopes: [
786
+ # "sso:account:access",
787
+ # "codewhisperer:completions",
788
+ # ],
789
+ # })
790
+ #
791
+ # resp.to_h outputs the following:
792
+ # {
793
+ # client_id: "_yzkThXVzLWVhc3QtMQEXAMPLECLIENTID",
794
+ # client_id_issued_at: 1579725929,
795
+ # client_secret: "VERYLONGSECRETeyJraWQiOiJrZXktMTU2NDAyODA5OSIsImFsZyI6IkhTMzg0In0",
796
+ # client_secret_expires_at: 1587584729,
797
+ # }
798
+ #
510
799
  # @example Request syntax with placeholder values
511
800
  #
512
801
  # resp = client.register_client({
@@ -546,8 +835,9 @@ module Aws::SSOOIDC
546
835
  # come from the persisted result of the RegisterClient API operation.
547
836
  #
548
837
  # @option params [required, String] :start_url
549
- # The URL for the AWS access portal. For more information, see [Using
550
- # the AWS access portal][1] in the *IAM Identity Center User Guide*.
838
+ # The URL for the Amazon Web Services access portal. For more
839
+ # information, see [Using the Amazon Web Services access portal][1] in
840
+ # the *IAM Identity Center User Guide*.
551
841
  #
552
842
  #
553
843
  #
@@ -562,6 +852,25 @@ module Aws::SSOOIDC
562
852
  # * {Types::StartDeviceAuthorizationResponse#expires_in #expires_in} => Integer
563
853
  # * {Types::StartDeviceAuthorizationResponse#interval #interval} => Integer
564
854
  #
855
+ #
856
+ # @example Example: Call OAuth/OIDC /start-device-authorization endpoint
857
+ #
858
+ # resp = client.start_device_authorization({
859
+ # client_id: "_yzkThXVzLWVhc3QtMQEXAMPLECLIENTID",
860
+ # client_secret: "VERYLONGSECRETeyJraWQiOiJrZXktMTU2NDAyODA5OSIsImFsZyI6IkhTMzg0In0",
861
+ # start_url: "https://identitycenter.amazonaws.com/ssoins-111111111111",
862
+ # })
863
+ #
864
+ # resp.to_h outputs the following:
865
+ # {
866
+ # device_code: "yJraWQiOiJrZXktMTU2Njk2ODA4OCIsImFsZyI6IkhTMzIn0EXAMPLEDEVICECODE",
867
+ # expires_in: 1579729529,
868
+ # interval: 1,
869
+ # user_code: "makdfsk83yJraWQiOiJrZXktMTU2Njk2sImFsZyI6IkhTMzIn0EXAMPLEUSERCODE",
870
+ # verification_uri: "https://device.sso.us-west-2.amazonaws.com",
871
+ # verification_uri_complete: "https://device.sso.us-west-2.amazonaws.com?user_code=makdfsk83yJraWQiOiJrZXktMTU2Njk2sImFsZyI6IkhTMzIn0EXAMPLEUSERCODE",
872
+ # }
873
+ #
565
874
  # @example Request syntax with placeholder values
566
875
  #
567
876
  # resp = client.start_device_authorization({
@@ -601,7 +910,7 @@ module Aws::SSOOIDC
601
910
  params: params,
602
911
  config: config)
603
912
  context[:gem_name] = 'aws-sdk-core'
604
- context[:gem_version] = '3.185.2'
913
+ context[:gem_version] = '3.187.0'
605
914
  Seahorse::Client::Request.new(handlers, context)
606
915
  end
607
916