2017-06-09 22 views
0

バックエンド(Node.js)からすべてのユーザーを取得する必要があります。私は私が持っている認証しようとしているときには:cognito-IDP:バックエンドから管理者としてCognitoに認証できません

エラーAccessDeniedException、ユーザ...仮定-役割/ Cognito_XXXUnauth_Role/CognitoIdentityCredentialsを実行するために許可されていません... AdminInitiateAuth

私の現在のコード:Cognito_XXXUnath_Roleが使用されているので、私がログインしていないよう

let cognitoidentityserviceprovider = new AWS.CognitoIdentityServiceProvider() 
var params = { 
    AuthFlow: 'ADMIN_NO_SRP_AUTH', 
    ClientId: process.env.AWS_CLIENT_ID, 
    UserPoolId: process.env.AWS_USER_POOL_ID, 
    AuthParameters: { 
     USERNAME: '...' 
     PASSWORD: '...' 
    } 
} 
cognitoidentityserviceprovider.adminInitiateAuth(params, (err, result) => { ... }) 

に見えます。誰もが同様の問題を抱えていた?

答えて

1

CognitoIdentityServiceProviderサービスクライアントを作成するために、Cognito連合ID証明書プロバイダを使用しようとしています。これにより、AWS SDKはフェデレーションIDサービスを呼び出してcognitoidentityserviceprovider.adminInitiateAuth(...)を呼び出すのに使用される一時的なAWS資格情報を取得します。この場合

、2つの解決策があります。

  1. adminInitiateAuth APIを呼び出すためのアクセス権を持っている資格情報を使用してCognitoIdentityServiceProviderクライアントを作成するために、別の資格情報プロバイダを使用しますが。あなたがバックエンドからこれを気にするので、そうすることは安全であるべきです。 This guideがこれを手伝ってくれます。
  2. Cognito Federationed Unauthロールを使用してサービスクライアントを作成する必要がある場合は、これを行うために使用しているIDプールの認証されていないロールにcognito-idp:AdminInitiateAuthを指定します。
関連する問題