在AWS AppSync中使用Cognito进行授权验证,需要完成以下步骤:
下面是一个使用Cognito User Pool进行授权验证的JavaScript示例代码:
const aws = require('aws-sdk');
const AmazonCognitoIdentity = require('amazon-cognito-identity-js');
const poolData = {
UserPoolId: 'your_user_pool_id',
ClientId: 'your_user_pool_client_id'
};
const userPool = new AmazonCognitoIdentity.CognitoUserPool(poolData);
exports.handler = async (event) => {
const token = event.authorizationToken;
const refreshToken = event.refreshToken;
if (!token || !refreshToken) {
throw new Error('Unauthorized');
}
const checkToken = new Promise((resolve, reject) => {
const userData = {
Username: 'username',
Pool: userPool,
Storage: new AmazonCognitoIdentity.LocalStorage()
};
const cognitoUser = new AmazonCognitoIdentity.CognitoUser(userData);
const sessionData = {
RefreshToken: new AmazonCognitoIdentity.CognitoRefreshToken({ RefreshToken: refreshToken })
};
cognitoUser.refreshSession(sessionData, (err, session) => {
if (err) {
reject(err);
} else {
resolve(session.isValid());
}
});
});
const result = await checkToken;
if (!result) {
throw new Error('Unauthorized');
}
const decodedToken = new AmazonCognitoIdentity.CognitoIdToken({ IdToken: token }).decodePayload();
const headers = {
'access_token': token,
'id_token': token,
'client_id': decodedToken.aud,
'username': decodedToken.email
};
return {
principalId: decodedToken.sub,
policyDocument: {
Version: '2012-10-17',
Statement: [{
Action: '
下一篇:AppSync关系