1

シナリオ:
Amazon でアプリを作成し、「access_token」を返すLogin with Amazonを使用します。次に実行します:

  AWS.config.credentials = new AWS.WebIdentityCredentials({

          RoleArn: 'arn:aws:iam::416942672???:role/???_amazon_role',
          ProviderId: 'www.amazon.com',
          WebIdentityToken:"?????????"
        });

  AWS.config.region = 'us-west-2';

  dynamodb =  new  AWS.DynamoDB()   dynamodb.listTables({}, function a(error,data){

    alert( "error: " +  JSON.stringify(error) );
    alert( JSON.stringify(data) );
    });

後でListTable関数を実行すると、次のように返されます。

error: {"message":"Missing credentials in config","code":"SigningError","name":"SigningError","statusCode":403,"retryable":false}

に電話しなければならないようAssumeRoleWithWebIdentityです。しかし、 AWS SDK for JavaScriptでどのように呼び出すことができますか? または、私が見逃した他のプロセスはありますか?

4

2 に答える 2

1

一時的な認証情報を取得するプロセスでは、 AssumeRoleWithWebIdentityへの呼び出しが必要です。この低レベルの API 呼び出しは、より高いレベルのAWS SDK for JavaScript認証情報プロバイダーの呼び出しで暗示されています。new AWS.WebIdentityCredentials()たとえば、クラス: AWS.WebIdentityCredentialsを参照してください。

STS Web ID フェデレーション サポートから取得した資格情報を表します。

デフォルトでは、このプロバイダーは AWS.STS.assumeRoleWithWebIdentity()サービスオペレーションを使用して認証情報を取得します。このオペレーションには、認証情報が与えられるアプリケーションの IAM 信頼ポリシーの ARN を含む RoleArn が必要です。さらに、WebIdentityToken は、ID プロバイダーによって提供されるトークンに設定する必要があります。適切な RoleArn 値と WebIdentityToken 値を使用して資格情報オブジェクトを作成する例については、constructor()を参照してください。

"Missing credentials in config"というエラー メッセージが表示された場合、間違った を渡していることは明らかですが、プレースホルダーWebIdentityTokenをいくつか指定したことを考えると、これは驚くことではありません?????????;) - login with Amazon を既に使用しているため、 access_token を返します。これらのプレースホルダーの代わりにそのACCESS_TOKENのコンテンツを?????????値として渡す必要がありWebIdentityToken、すべて設定する必要があります。

于 2014-01-03T15:21:44.270 に答える