Mercurial > repos > shellac > guppy_basecaller
comparison env/lib/python3.7/site-packages/boto/cognito/identity/layer1.py @ 5:9b1c78e6ba9c draft default tip
"planemo upload commit 6c0a8142489327ece472c84e558c47da711a9142"
| author | shellac |
|---|---|
| date | Mon, 01 Jun 2020 08:59:25 -0400 |
| parents | 79f47841a781 |
| children |
comparison
equal
deleted
inserted
replaced
| 4:79f47841a781 | 5:9b1c78e6ba9c |
|---|---|
| 1 # Copyright (c) 2014 Amazon.com, Inc. or its affiliates. All Rights Reserved | |
| 2 # | |
| 3 # Permission is hereby granted, free of charge, to any person obtaining a | |
| 4 # copy of this software and associated documentation files (the | |
| 5 # "Software"), to deal in the Software without restriction, including | |
| 6 # without limitation the rights to use, copy, modify, merge, publish, dis- | |
| 7 # tribute, sublicense, and/or sell copies of the Software, and to permit | |
| 8 # persons to whom the Software is furnished to do so, subject to the fol- | |
| 9 # lowing conditions: | |
| 10 # | |
| 11 # The above copyright notice and this permission notice shall be included | |
| 12 # in all copies or substantial portions of the Software. | |
| 13 # | |
| 14 # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS | |
| 15 # OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABIL- | |
| 16 # ITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT | |
| 17 # SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, | |
| 18 # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | |
| 19 # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS | |
| 20 # IN THE SOFTWARE. | |
| 21 # | |
| 22 | |
| 23 import boto | |
| 24 from boto.compat import json | |
| 25 from boto.connection import AWSQueryConnection | |
| 26 from boto.regioninfo import RegionInfo | |
| 27 from boto.exception import JSONResponseError | |
| 28 from boto.cognito.identity import exceptions | |
| 29 | |
| 30 | |
| 31 class CognitoIdentityConnection(AWSQueryConnection): | |
| 32 """ | |
| 33 Amazon Cognito | |
| 34 Amazon Cognito is a web service that delivers scoped temporary | |
| 35 credentials to mobile devices and other untrusted environments. | |
| 36 Amazon Cognito uniquely identifies a device and supplies the user | |
| 37 with a consistent identity over the lifetime of an application. | |
| 38 | |
| 39 Using Amazon Cognito, you can enable authentication with one or | |
| 40 more third-party identity providers (Facebook, Google, or Login | |
| 41 with Amazon), and you can also choose to support unauthenticated | |
| 42 access from your app. Cognito delivers a unique identifier for | |
| 43 each user and acts as an OpenID token provider trusted by AWS | |
| 44 Security Token Service (STS) to access temporary, limited- | |
| 45 privilege AWS credentials. | |
| 46 | |
| 47 To provide end-user credentials, first make an unsigned call to | |
| 48 GetId. If the end user is authenticated with one of the supported | |
| 49 identity providers, set the `Logins` map with the identity | |
| 50 provider token. `GetId` returns a unique identifier for the user. | |
| 51 | |
| 52 Next, make an unsigned call to GetOpenIdToken, which returns the | |
| 53 OpenID token necessary to call STS and retrieve AWS credentials. | |
| 54 This call expects the same `Logins` map as the `GetId` call, as | |
| 55 well as the `IdentityID` originally returned by `GetId`. The token | |
| 56 returned by `GetOpenIdToken` can be passed to the STS operation | |
| 57 `AssumeRoleWithWebIdentity`_ to retrieve AWS credentials. | |
| 58 """ | |
| 59 APIVersion = "2014-06-30" | |
| 60 DefaultRegionName = "us-east-1" | |
| 61 DefaultRegionEndpoint = "cognito-identity.us-east-1.amazonaws.com" | |
| 62 ServiceName = "CognitoIdentity" | |
| 63 TargetPrefix = "AWSCognitoIdentityService" | |
| 64 ResponseError = JSONResponseError | |
| 65 | |
| 66 _faults = { | |
| 67 "LimitExceededException": exceptions.LimitExceededException, | |
| 68 "ResourceConflictException": exceptions.ResourceConflictException, | |
| 69 "DeveloperUserAlreadyRegisteredException": exceptions.DeveloperUserAlreadyRegisteredException, | |
| 70 "TooManyRequestsException": exceptions.TooManyRequestsException, | |
| 71 "InvalidParameterException": exceptions.InvalidParameterException, | |
| 72 "ResourceNotFoundException": exceptions.ResourceNotFoundException, | |
| 73 "InternalErrorException": exceptions.InternalErrorException, | |
| 74 "NotAuthorizedException": exceptions.NotAuthorizedException, | |
| 75 } | |
| 76 | |
| 77 | |
| 78 def __init__(self, **kwargs): | |
| 79 region = kwargs.pop('region', None) | |
| 80 if not region: | |
| 81 region = RegionInfo(self, self.DefaultRegionName, | |
| 82 self.DefaultRegionEndpoint) | |
| 83 | |
| 84 if 'host' not in kwargs or kwargs['host'] is None: | |
| 85 kwargs['host'] = region.endpoint | |
| 86 | |
| 87 super(CognitoIdentityConnection, self).__init__(**kwargs) | |
| 88 self.region = region | |
| 89 | |
| 90 def _required_auth_capability(self): | |
| 91 return ['hmac-v4'] | |
| 92 | |
| 93 def create_identity_pool(self, identity_pool_name, | |
| 94 allow_unauthenticated_identities, | |
| 95 supported_login_providers=None, | |
| 96 developer_provider_name=None, | |
| 97 open_id_connect_provider_ar_ns=None): | |
| 98 """ | |
| 99 Creates a new identity pool. The identity pool is a store of | |
| 100 user identity information that is specific to your AWS | |
| 101 account. The limit on identity pools is 60 per account. | |
| 102 | |
| 103 :type identity_pool_name: string | |
| 104 :param identity_pool_name: A string that you provide. | |
| 105 | |
| 106 :type allow_unauthenticated_identities: boolean | |
| 107 :param allow_unauthenticated_identities: TRUE if the identity pool | |
| 108 supports unauthenticated logins. | |
| 109 | |
| 110 :type supported_login_providers: map | |
| 111 :param supported_login_providers: Optional key:value pairs mapping | |
| 112 provider names to provider app IDs. | |
| 113 | |
| 114 :type developer_provider_name: string | |
| 115 :param developer_provider_name: The "domain" by which Cognito will | |
| 116 refer to your users. This name acts as a placeholder that allows | |
| 117 your backend and the Cognito service to communicate about the | |
| 118 developer provider. For the `DeveloperProviderName`, you can use | |
| 119 letters as well as period ( `.`), underscore ( `_`), and dash ( | |
| 120 `-`). | |
| 121 Once you have set a developer provider name, you cannot change it. | |
| 122 Please take care in setting this parameter. | |
| 123 | |
| 124 :type open_id_connect_provider_ar_ns: list | |
| 125 :param open_id_connect_provider_ar_ns: | |
| 126 | |
| 127 """ | |
| 128 params = { | |
| 129 'IdentityPoolName': identity_pool_name, | |
| 130 'AllowUnauthenticatedIdentities': allow_unauthenticated_identities, | |
| 131 } | |
| 132 if supported_login_providers is not None: | |
| 133 params['SupportedLoginProviders'] = supported_login_providers | |
| 134 if developer_provider_name is not None: | |
| 135 params['DeveloperProviderName'] = developer_provider_name | |
| 136 if open_id_connect_provider_ar_ns is not None: | |
| 137 params['OpenIdConnectProviderARNs'] = open_id_connect_provider_ar_ns | |
| 138 return self.make_request(action='CreateIdentityPool', | |
| 139 body=json.dumps(params)) | |
| 140 | |
| 141 def delete_identity_pool(self, identity_pool_id): | |
| 142 """ | |
| 143 Deletes a user pool. Once a pool is deleted, users will not be | |
| 144 able to authenticate with the pool. | |
| 145 | |
| 146 :type identity_pool_id: string | |
| 147 :param identity_pool_id: An identity pool ID in the format REGION:GUID. | |
| 148 | |
| 149 """ | |
| 150 params = {'IdentityPoolId': identity_pool_id, } | |
| 151 return self.make_request(action='DeleteIdentityPool', | |
| 152 body=json.dumps(params)) | |
| 153 | |
| 154 def describe_identity_pool(self, identity_pool_id): | |
| 155 """ | |
| 156 Gets details about a particular identity pool, including the | |
| 157 pool name, ID description, creation date, and current number | |
| 158 of users. | |
| 159 | |
| 160 :type identity_pool_id: string | |
| 161 :param identity_pool_id: An identity pool ID in the format REGION:GUID. | |
| 162 | |
| 163 """ | |
| 164 params = {'IdentityPoolId': identity_pool_id, } | |
| 165 return self.make_request(action='DescribeIdentityPool', | |
| 166 body=json.dumps(params)) | |
| 167 | |
| 168 def get_id(self, account_id, identity_pool_id, logins=None): | |
| 169 """ | |
| 170 Generates (or retrieves) a Cognito ID. Supplying multiple | |
| 171 logins will create an implicit linked account. | |
| 172 | |
| 173 :type account_id: string | |
| 174 :param account_id: A standard AWS account ID (9+ digits). | |
| 175 | |
| 176 :type identity_pool_id: string | |
| 177 :param identity_pool_id: An identity pool ID in the format REGION:GUID. | |
| 178 | |
| 179 :type logins: map | |
| 180 :param logins: A set of optional name-value pairs that map provider | |
| 181 names to provider tokens. | |
| 182 The available provider names for `Logins` are as follows: | |
| 183 | |
| 184 + Facebook: `graph.facebook.com` | |
| 185 + Google: `accounts.google.com` | |
| 186 + Amazon: `www.amazon.com` | |
| 187 | |
| 188 """ | |
| 189 params = { | |
| 190 'AccountId': account_id, | |
| 191 'IdentityPoolId': identity_pool_id, | |
| 192 } | |
| 193 if logins is not None: | |
| 194 params['Logins'] = logins | |
| 195 return self.make_request(action='GetId', | |
| 196 body=json.dumps(params)) | |
| 197 | |
| 198 def get_open_id_token(self, identity_id, logins=None): | |
| 199 """ | |
| 200 Gets an OpenID token, using a known Cognito ID. This known | |
| 201 Cognito ID is returned by GetId. You can optionally add | |
| 202 additional logins for the identity. Supplying multiple logins | |
| 203 creates an implicit link. | |
| 204 | |
| 205 The OpenId token is valid for 15 minutes. | |
| 206 | |
| 207 :type identity_id: string | |
| 208 :param identity_id: A unique identifier in the format REGION:GUID. | |
| 209 | |
| 210 :type logins: map | |
| 211 :param logins: A set of optional name-value pairs that map provider | |
| 212 names to provider tokens. | |
| 213 | |
| 214 """ | |
| 215 params = {'IdentityId': identity_id, } | |
| 216 if logins is not None: | |
| 217 params['Logins'] = logins | |
| 218 return self.make_request(action='GetOpenIdToken', | |
| 219 body=json.dumps(params)) | |
| 220 | |
| 221 def get_open_id_token_for_developer_identity(self, identity_pool_id, | |
| 222 logins, identity_id=None, | |
| 223 token_duration=None): | |
| 224 """ | |
| 225 Registers (or retrieves) a Cognito `IdentityId` and an OpenID | |
| 226 Connect token for a user authenticated by your backend | |
| 227 authentication process. Supplying multiple logins will create | |
| 228 an implicit linked account. You can only specify one developer | |
| 229 provider as part of the `Logins` map, which is linked to the | |
| 230 identity pool. The developer provider is the "domain" by which | |
| 231 Cognito will refer to your users. | |
| 232 | |
| 233 You can use `GetOpenIdTokenForDeveloperIdentity` to create a | |
| 234 new identity and to link new logins (that is, user credentials | |
| 235 issued by a public provider or developer provider) to an | |
| 236 existing identity. When you want to create a new identity, the | |
| 237 `IdentityId` should be null. When you want to associate a new | |
| 238 login with an existing authenticated/unauthenticated identity, | |
| 239 you can do so by providing the existing `IdentityId`. This API | |
| 240 will create the identity in the specified `IdentityPoolId`. | |
| 241 | |
| 242 :type identity_pool_id: string | |
| 243 :param identity_pool_id: An identity pool ID in the format REGION:GUID. | |
| 244 | |
| 245 :type identity_id: string | |
| 246 :param identity_id: A unique identifier in the format REGION:GUID. | |
| 247 | |
| 248 :type logins: map | |
| 249 :param logins: A set of optional name-value pairs that map provider | |
| 250 names to provider tokens. Each name-value pair represents a user | |
| 251 from a public provider or developer provider. If the user is from a | |
| 252 developer provider, the name-value pair will follow the syntax | |
| 253 `"developer_provider_name": "developer_user_identifier"`. The | |
| 254 developer provider is the "domain" by which Cognito will refer to | |
| 255 your users; you provided this domain while creating/updating the | |
| 256 identity pool. The developer user identifier is an identifier from | |
| 257 your backend that uniquely identifies a user. When you create an | |
| 258 identity pool, you can specify the supported logins. | |
| 259 | |
| 260 :type token_duration: long | |
| 261 :param token_duration: The expiration time of the token, in seconds. | |
| 262 You can specify a custom expiration time for the token so that you | |
| 263 can cache it. If you don't provide an expiration time, the token is | |
| 264 valid for 15 minutes. You can exchange the token with Amazon STS | |
| 265 for temporary AWS credentials, which are valid for a maximum of one | |
| 266 hour. The maximum token duration you can set is 24 hours. You | |
| 267 should take care in setting the expiration time for a token, as | |
| 268 there are significant security implications: an attacker could use | |
| 269 a leaked token to access your AWS resources for the token's | |
| 270 duration. | |
| 271 | |
| 272 """ | |
| 273 params = { | |
| 274 'IdentityPoolId': identity_pool_id, | |
| 275 'Logins': logins, | |
| 276 } | |
| 277 if identity_id is not None: | |
| 278 params['IdentityId'] = identity_id | |
| 279 if token_duration is not None: | |
| 280 params['TokenDuration'] = token_duration | |
| 281 return self.make_request(action='GetOpenIdTokenForDeveloperIdentity', | |
| 282 body=json.dumps(params)) | |
| 283 | |
| 284 def list_identities(self, identity_pool_id, max_results, next_token=None): | |
| 285 """ | |
| 286 Lists the identities in a pool. | |
| 287 | |
| 288 :type identity_pool_id: string | |
| 289 :param identity_pool_id: An identity pool ID in the format REGION:GUID. | |
| 290 | |
| 291 :type max_results: integer | |
| 292 :param max_results: The maximum number of identities to return. | |
| 293 | |
| 294 :type next_token: string | |
| 295 :param next_token: A pagination token. | |
| 296 | |
| 297 """ | |
| 298 params = { | |
| 299 'IdentityPoolId': identity_pool_id, | |
| 300 'MaxResults': max_results, | |
| 301 } | |
| 302 if next_token is not None: | |
| 303 params['NextToken'] = next_token | |
| 304 return self.make_request(action='ListIdentities', | |
| 305 body=json.dumps(params)) | |
| 306 | |
| 307 def list_identity_pools(self, max_results, next_token=None): | |
| 308 """ | |
| 309 Lists all of the Cognito identity pools registered for your | |
| 310 account. | |
| 311 | |
| 312 :type max_results: integer | |
| 313 :param max_results: The maximum number of identities to return. | |
| 314 | |
| 315 :type next_token: string | |
| 316 :param next_token: A pagination token. | |
| 317 | |
| 318 """ | |
| 319 params = {'MaxResults': max_results, } | |
| 320 if next_token is not None: | |
| 321 params['NextToken'] = next_token | |
| 322 return self.make_request(action='ListIdentityPools', | |
| 323 body=json.dumps(params)) | |
| 324 | |
| 325 def lookup_developer_identity(self, identity_pool_id, identity_id=None, | |
| 326 developer_user_identifier=None, | |
| 327 max_results=None, next_token=None): | |
| 328 """ | |
| 329 Retrieves the `IdentityID` associated with a | |
| 330 `DeveloperUserIdentifier` or the list of | |
| 331 `DeveloperUserIdentifier`s associated with an `IdentityId` for | |
| 332 an existing identity. Either `IdentityID` or | |
| 333 `DeveloperUserIdentifier` must not be null. If you supply only | |
| 334 one of these values, the other value will be searched in the | |
| 335 database and returned as a part of the response. If you supply | |
| 336 both, `DeveloperUserIdentifier` will be matched against | |
| 337 `IdentityID`. If the values are verified against the database, | |
| 338 the response returns both values and is the same as the | |
| 339 request. Otherwise a `ResourceConflictException` is thrown. | |
| 340 | |
| 341 :type identity_pool_id: string | |
| 342 :param identity_pool_id: An identity pool ID in the format REGION:GUID. | |
| 343 | |
| 344 :type identity_id: string | |
| 345 :param identity_id: A unique identifier in the format REGION:GUID. | |
| 346 | |
| 347 :type developer_user_identifier: string | |
| 348 :param developer_user_identifier: A unique ID used by your backend | |
| 349 authentication process to identify a user. Typically, a developer | |
| 350 identity provider would issue many developer user identifiers, in | |
| 351 keeping with the number of users. | |
| 352 | |
| 353 :type max_results: integer | |
| 354 :param max_results: The maximum number of identities to return. | |
| 355 | |
| 356 :type next_token: string | |
| 357 :param next_token: A pagination token. The first call you make will | |
| 358 have `NextToken` set to null. After that the service will return | |
| 359 `NextToken` values as needed. For example, let's say you make a | |
| 360 request with `MaxResults` set to 10, and there are 20 matches in | |
| 361 the database. The service will return a pagination token as a part | |
| 362 of the response. This token can be used to call the API again and | |
| 363 get results starting from the 11th match. | |
| 364 | |
| 365 """ | |
| 366 params = {'IdentityPoolId': identity_pool_id, } | |
| 367 if identity_id is not None: | |
| 368 params['IdentityId'] = identity_id | |
| 369 if developer_user_identifier is not None: | |
| 370 params['DeveloperUserIdentifier'] = developer_user_identifier | |
| 371 if max_results is not None: | |
| 372 params['MaxResults'] = max_results | |
| 373 if next_token is not None: | |
| 374 params['NextToken'] = next_token | |
| 375 return self.make_request(action='LookupDeveloperIdentity', | |
| 376 body=json.dumps(params)) | |
| 377 | |
| 378 def merge_developer_identities(self, source_user_identifier, | |
| 379 destination_user_identifier, | |
| 380 developer_provider_name, identity_pool_id): | |
| 381 """ | |
| 382 Merges two users having different `IdentityId`s, existing in | |
| 383 the same identity pool, and identified by the same developer | |
| 384 provider. You can use this action to request that discrete | |
| 385 users be merged and identified as a single user in the Cognito | |
| 386 environment. Cognito associates the given source user ( | |
| 387 `SourceUserIdentifier`) with the `IdentityId` of the | |
| 388 `DestinationUserIdentifier`. Only developer-authenticated | |
| 389 users can be merged. If the users to be merged are associated | |
| 390 with the same public provider, but as two different users, an | |
| 391 exception will be thrown. | |
| 392 | |
| 393 :type source_user_identifier: string | |
| 394 :param source_user_identifier: User identifier for the source user. The | |
| 395 value should be a `DeveloperUserIdentifier`. | |
| 396 | |
| 397 :type destination_user_identifier: string | |
| 398 :param destination_user_identifier: User identifier for the destination | |
| 399 user. The value should be a `DeveloperUserIdentifier`. | |
| 400 | |
| 401 :type developer_provider_name: string | |
| 402 :param developer_provider_name: The "domain" by which Cognito will | |
| 403 refer to your users. This is a (pseudo) domain name that you | |
| 404 provide while creating an identity pool. This name acts as a | |
| 405 placeholder that allows your backend and the Cognito service to | |
| 406 communicate about the developer provider. For the | |
| 407 `DeveloperProviderName`, you can use letters as well as period (.), | |
| 408 underscore (_), and dash (-). | |
| 409 | |
| 410 :type identity_pool_id: string | |
| 411 :param identity_pool_id: An identity pool ID in the format REGION:GUID. | |
| 412 | |
| 413 """ | |
| 414 params = { | |
| 415 'SourceUserIdentifier': source_user_identifier, | |
| 416 'DestinationUserIdentifier': destination_user_identifier, | |
| 417 'DeveloperProviderName': developer_provider_name, | |
| 418 'IdentityPoolId': identity_pool_id, | |
| 419 } | |
| 420 return self.make_request(action='MergeDeveloperIdentities', | |
| 421 body=json.dumps(params)) | |
| 422 | |
| 423 def unlink_developer_identity(self, identity_id, identity_pool_id, | |
| 424 developer_provider_name, | |
| 425 developer_user_identifier): | |
| 426 """ | |
| 427 Unlinks a `DeveloperUserIdentifier` from an existing identity. | |
| 428 Unlinked developer users will be considered new identities | |
| 429 next time they are seen. If, for a given Cognito identity, you | |
| 430 remove all federated identities as well as the developer user | |
| 431 identifier, the Cognito identity becomes inaccessible. | |
| 432 | |
| 433 :type identity_id: string | |
| 434 :param identity_id: A unique identifier in the format REGION:GUID. | |
| 435 | |
| 436 :type identity_pool_id: string | |
| 437 :param identity_pool_id: An identity pool ID in the format REGION:GUID. | |
| 438 | |
| 439 :type developer_provider_name: string | |
| 440 :param developer_provider_name: The "domain" by which Cognito will | |
| 441 refer to your users. | |
| 442 | |
| 443 :type developer_user_identifier: string | |
| 444 :param developer_user_identifier: A unique ID used by your backend | |
| 445 authentication process to identify a user. | |
| 446 | |
| 447 """ | |
| 448 params = { | |
| 449 'IdentityId': identity_id, | |
| 450 'IdentityPoolId': identity_pool_id, | |
| 451 'DeveloperProviderName': developer_provider_name, | |
| 452 'DeveloperUserIdentifier': developer_user_identifier, | |
| 453 } | |
| 454 return self.make_request(action='UnlinkDeveloperIdentity', | |
| 455 body=json.dumps(params)) | |
| 456 | |
| 457 def unlink_identity(self, identity_id, logins, logins_to_remove): | |
| 458 """ | |
| 459 Unlinks a federated identity from an existing account. | |
| 460 Unlinked logins will be considered new identities next time | |
| 461 they are seen. Removing the last linked login will make this | |
| 462 identity inaccessible. | |
| 463 | |
| 464 :type identity_id: string | |
| 465 :param identity_id: A unique identifier in the format REGION:GUID. | |
| 466 | |
| 467 :type logins: map | |
| 468 :param logins: A set of optional name-value pairs that map provider | |
| 469 names to provider tokens. | |
| 470 | |
| 471 :type logins_to_remove: list | |
| 472 :param logins_to_remove: Provider names to unlink from this identity. | |
| 473 | |
| 474 """ | |
| 475 params = { | |
| 476 'IdentityId': identity_id, | |
| 477 'Logins': logins, | |
| 478 'LoginsToRemove': logins_to_remove, | |
| 479 } | |
| 480 return self.make_request(action='UnlinkIdentity', | |
| 481 body=json.dumps(params)) | |
| 482 | |
| 483 def update_identity_pool(self, identity_pool_id, identity_pool_name, | |
| 484 allow_unauthenticated_identities, | |
| 485 supported_login_providers=None, | |
| 486 developer_provider_name=None, | |
| 487 open_id_connect_provider_ar_ns=None): | |
| 488 """ | |
| 489 Updates a user pool. | |
| 490 | |
| 491 :type identity_pool_id: string | |
| 492 :param identity_pool_id: An identity pool ID in the format REGION:GUID. | |
| 493 | |
| 494 :type identity_pool_name: string | |
| 495 :param identity_pool_name: A string that you provide. | |
| 496 | |
| 497 :type allow_unauthenticated_identities: boolean | |
| 498 :param allow_unauthenticated_identities: TRUE if the identity pool | |
| 499 supports unauthenticated logins. | |
| 500 | |
| 501 :type supported_login_providers: map | |
| 502 :param supported_login_providers: Optional key:value pairs mapping | |
| 503 provider names to provider app IDs. | |
| 504 | |
| 505 :type developer_provider_name: string | |
| 506 :param developer_provider_name: The "domain" by which Cognito will | |
| 507 refer to your users. | |
| 508 | |
| 509 :type open_id_connect_provider_ar_ns: list | |
| 510 :param open_id_connect_provider_ar_ns: | |
| 511 | |
| 512 """ | |
| 513 params = { | |
| 514 'IdentityPoolId': identity_pool_id, | |
| 515 'IdentityPoolName': identity_pool_name, | |
| 516 'AllowUnauthenticatedIdentities': allow_unauthenticated_identities, | |
| 517 } | |
| 518 if supported_login_providers is not None: | |
| 519 params['SupportedLoginProviders'] = supported_login_providers | |
| 520 if developer_provider_name is not None: | |
| 521 params['DeveloperProviderName'] = developer_provider_name | |
| 522 if open_id_connect_provider_ar_ns is not None: | |
| 523 params['OpenIdConnectProviderARNs'] = open_id_connect_provider_ar_ns | |
| 524 return self.make_request(action='UpdateIdentityPool', | |
| 525 body=json.dumps(params)) | |
| 526 | |
| 527 def make_request(self, action, body): | |
| 528 headers = { | |
| 529 'X-Amz-Target': '%s.%s' % (self.TargetPrefix, action), | |
| 530 'Host': self.region.endpoint, | |
| 531 'Content-Type': 'application/x-amz-json-1.1', | |
| 532 'Content-Length': str(len(body)), | |
| 533 } | |
| 534 http_request = self.build_base_http_request( | |
| 535 method='POST', path='/', auth_path='/', params={}, | |
| 536 headers=headers, data=body) | |
| 537 response = self._mexe(http_request, sender=None, | |
| 538 override_num_retries=10) | |
| 539 response_body = response.read().decode('utf-8') | |
| 540 boto.log.debug(response_body) | |
| 541 if response.status == 200: | |
| 542 if response_body: | |
| 543 return json.loads(response_body) | |
| 544 else: | |
| 545 json_body = json.loads(response_body) | |
| 546 fault_name = json_body.get('__type', None) | |
| 547 exception_class = self._faults.get(fault_name, self.ResponseError) | |
| 548 raise exception_class(response.status, response.reason, | |
| 549 body=json_body) |
