Безсерверный пользовательский авторизатор, запрещающий авторизацию
Я строю API с безсерверным и пользовательским авторизатором на API-шлюз. Когда я работаю без локального сервера и передаю действительный токен авторизации, я получаю 401 ответ.
Я в основном скопировал это из примеров, функция, которая вызывается авторизатором
var apiGatewayAuth = function(event, context, callback) {
if(event.authorizationToken == 'undefined'){
return callback(null,generatePolicy('', 'Deny', event.methodArn));
}
var token = validateToken(event.authorizationToken);
if (token.error) {
return callback(null, generatePolicy('', 'Deny', event.methodArn));
}
console.log('allow',generatePolicy(token.sub, 'Allow', event.methodArn))
return callback(null,generatePolicy(token.sub, 'Allow', event.methodArn));
};
Политика генерируется через
var generatePolicy = function(accountId, effect, resource) {
var authResponse = {};
authResponse.principalId = accountId;
if (effect && resource) {
var policyDocument = {};
policyDocument.Version = '2012-10-17';
policyDocument.Statement = [];
var statementOne = {};
statementOne.Action = 'execute-api:Invoke';
statementOne.Effect = effect;
statementOne.Resource = resource;
policyDocument.Statement[0] = statementOne;
authResponse.policyDocument = policyDocument;
}
return authResponse;
};
Возвращенная политика выглядит как
{ principalId: 'test_api_user',
policyDocument: {
Version: '2012-10-17',
Statement: [ { Action: 'execute-api:Invoke',
Effect: 'Allow',
Resource: 'my:arn' } ]
}
Есть ли что-то, что я явно делаю не так здесь?
мой token.sub
это строка уникального имени пользователя для моего приложения, но AWS не имеет ни малейшего представления о том, кто этот пользователь, я подумал, что это нормально.