![](/img/trans.png)
[英]How to generate aws-exports.js with existing User Pool in AWS Cognito?
[英]AWS - Get user token from an existing Cognito User Pool with username and password on an existing React web app
我有一个从create-react-app
创建的简单 React web 应用程序。
我在 Amazon Cognito 上也有一个现有的用户池(由第三方设置)。 我已获得用于身份验证的用户名和密码。 一旦通过身份验证,Cognito 将提供 JWT 令牌。
我想要实现的是对用户进行身份验证,并在App
组件的componentDidMount
方法中获取 JWT access_token; 然后使用令牌调用其他API来检索一些数据,然后将数据显示在App
组件上。
以下信息已知:
region
USER_POOL_ID
APP_CLIENT_ID
USER_ACCOUNT
USER_PASSWORD
AWS 为 Python 开发人员提供了authenticate_and_get_token
function。 JavaScript 和 React 开发人员是否有等价物? 任何示例代码表示赞赏。
不知道您提到的authenticate_and_get_token
,在Boto3 docs中找不到这个 function 。 但我确实知道不同的 function 来检索一个名为adminInitiateAuth
的令牌。 这是可用于 JS 的 function。
您可以使用 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};
}
};
请确保您具有调用此方法的特定权限,例如"Action": "cognito-idp:AdminInitiateAuth",
lambda 权限或 IAM 角色。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.