Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript AWS-使用现有React web应用程序上的用户名和密码从现有Cognito用户池获取用户令牌_Javascript_Reactjs_Amazon Web Services_Amazon Cognito - Fatal编程技术网

Javascript AWS-使用现有React web应用程序上的用户名和密码从现有Cognito用户池获取用户令牌

Javascript AWS-使用现有React web应用程序上的用户名和密码从现有Cognito用户池获取用户令牌,javascript,reactjs,amazon-web-services,amazon-cognito,Javascript,Reactjs,Amazon Web Services,Amazon Cognito,我有一个简单的React web应用程序,它是从create React app创建的 我在Amazon Cognito上也有一个现有的用户池(由第三方建立)。我已获得用户名和密码进行身份验证。一旦经过身份验证,Cognito就会提供一个JWT令牌 我想要实现的是对用户进行身份验证,并在App组件的componentDidMount方法中获得JWT访问令牌;然后使用令牌调用其他API来检索一些数据,然后在App组件上显示数据 已知以下信息: region USER_POOL_ID APP_CLI

我有一个简单的React web应用程序,它是从
create React app
创建的

我在Amazon Cognito上也有一个现有的用户池(由第三方建立)。我已获得用户名和密码进行身份验证。一旦经过身份验证,Cognito就会提供一个JWT令牌

我想要实现的是对用户进行身份验证,并在
App
组件的
componentDidMount
方法中获得JWT访问令牌;然后使用令牌调用其他API来检索一些数据,然后在
App
组件上显示数据

已知以下信息:

region
USER_POOL_ID
APP_CLIENT_ID
USER_ACCOUNT
USER_PASSWORD

AWS为Python开发人员提供了
authenticate\u和\u get\u token
函数。JavaScript和React开发人员是否有一个等价物?欢迎使用任何示例代码。

如果不知道您提到的
身份验证\u和\u获取\u令牌
,则无法在中找到此函数。 但我知道检索一个名为的令牌的不同函数。这是JS可用的函数

您可以使用Lambda实现此功能,如下所示:

const AWS = require('aws-sdk');
const USER_POOL_ID  = "us-east-1_*******";
const APP_CLIENT_ID = "***********";
const USER_ACCOUNT  = "***********";
const USER_PASSWORD = "***********";

const cognitoClient = new AWS.CognitoIdentityServiceProvider({
    apiVersion: "2016-04-19",
    region: 'us-east-1'
});

exports.handler = async (event) => {
    try {
        const userData = await userSignIn(USER_ACCOUNT, USER_PASSWORD);
        return userData // refer to userData.AuthenticationResult.IdToken;
    } catch(e){
        throw e;
    }

};

const userSignIn = async (username, password) => {
    try {
        var params = {
            AuthFlow: 'ADMIN_NO_SRP_AUTH',     
            ClientId: APP_CLIENT_ID ,     
            UserPoolId: USER_POOL_ID,     
            AuthParameters: {         
                USERNAME: username,        
                PASSWORD: password
            } 
        };
        
        return await cognitoClient.adminInitiateAuth(params).promise();
    } catch (err) {
        return err.message ? err : {message : err};
    }
};

请确保您具有调用此方法的特定权限,如lambda权限或IAM角色中的
“Action”:“cognito idp:AdminInitiateAuth”

您是否尝试使用amplify-