aws-sdk-core 3.185.2 → 3.187.0

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: 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