0

バックエンドにラムダ関数を持つAPIゲートウェイエンドポイントを作成しました。 次に、1つのアカウントを持つCognitoのユーザープールを作成し、API Gatewayの認証者としてCognitoのユーザープールを設定しました。 APIが無許可であることがわかりました。AWS Cognito Userpoolトークンを使用してAWS Apiゲートウェイにログインする方法?

次に、AWS Cognito Javascript SDKを使用して小さなWebページを作成し、ユーザープールにログインしてアクセストークンを取得しました。私はそれを成功させることができました。ここにコードがあります。

var authenticationData = { 
 
     Username : 'username', 
 
     Password : 'test123', 
 
    }; 
 
    var authenticationDetails = new AuthenticationDetails(authenticationData); 
 
    var poolData = { 
 
     UserPoolId : 'ap-southeast-2_12312', // Your user pool id here 
 
     ClientId : '434324324' // Your client id here 
 
    }; 
 
    var userPool = new CognitoUserPool(poolData); 
 
    var userData = { 
 
     Username : 'username', 
 
     Pool : userPool 
 
    }; 
 

 
    var self = this; 
 
    var cognitoUser = new CognitoUser(userData); 
 
    cognitoUser.authenticateUser(authenticationDetails, { 
 
     onSuccess: function (result) { 
 
      var tok = result.getAccessToken().getJwtToken(); 
 
      console.log('access token + ' + tok); 
 
      self.setState({ token: tok }); 
 
      //POTENTIAL: Region needs to be set if not already set previously elsewhere. 
 
      // AWS.config.region = '<region>'; 
 

 
      // AWS.config.credentials = new AWS.CognitoIdentityCredentials({ 
 
      //  IdentityPoolId : '...', // your identity pool id here 
 
      //  Logins : { 
 
      //   // Change the key below according to the specific region your user pool is in. 
 
      //   'cognito-idp.<region>.amazonaws.com/<YOUR_USER_POOL_ID>' : tok 
 
      //  } 
 
      // }); 
 

 
      // Instantiate aws sdk service objects now that the credentials have been updated. 
 
      // example: var s3 = new AWS.S3(); 
 
     }, 
 

 
     onFailure: function(err) { 
 
      alert(err); 
 
     }, 
 
    });

このコードは動作し、私にJWTトークンを提供します。しかし、そのトークンは私をAPIに認めるものではありません。私はBearerキーワードなしでAuthorizationヘッダーにトークンを渡していますが、まだAPIにアクセスすることはできません。どうやってやるの?

答えて

1

APIゲートウェイコンソールの承認者の「テスト」機能を使用すると、より簡単にデバッグすることができます。有効なJWTトークンをそこに貼り付け、承認者でテストを実行できます。問題がある場合は、Logsの出力に表示する必要があります。

+0

Authorizerのテストページもあります。私のJWTトークンもそこでは働いていません。 – Hash

+0

APIコンソール内のテストは、JWTトークンの有無にかかわらず動作しています。 – Hash

+0

はい、私はAuthorizerのテストページについて話しています。トークンがそこで動作していない場合、Logs出力を使用して問題をデバッグできるはずです。トークンの有効期限が切れるので、新しいトークンでテストしていることを確認してください。トークンは、認証者に設定した 'providerARN'と一致するユーザープールから発行する必要があります。 –

関連する問題