Javascript AWS-使用现有React web应用程序上的用户名和密码从现有Cognito用户池获取用户令牌
我有一个简单的React web应用程序,它是从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
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-