serverless и alamofire «Пользователь не авторизован для доступа к этому ресурсу», но работает с почтальоном - PullRequest
0 голосов
/ 17 июня 2019

Я получаю сообщение об ошибке, которое мне не удалось устранить.Из моей безсерверной функции только через iOS (Alamofire).У меня около 15 функций, и это происходит только на две.Остальные функции работают нормально.

{"Сообщение": "Пользователь не авторизован для доступа к этому ресурсу"}

Работает нормально, когда я использую почтальон.

Я использую токены, но все остальные функции работают так же.Это также не будет ошибкой прав доступа без сервера, потому что она работает через post man.

Вот основной код Alamofire.Я использую адаптер запроса для заголовков.

Alamofire
        .request(url, method: method, parameters: params, encoding: JSONEncoding.default)
        .validate(statusCode: 200..<500)
        .validate(contentType: ["application/json"])

1 Ответ

1 голос
/ 17 июня 2019

Для справки в будущем:

Я нашел свой ответ. У меня нет времени копать намного глубже. Это было связано с разрешениями моей пользовательской функции авторизации, которая не позволяла конкретному Арну проходить, даже если он его настраивал. Так что все, что я сделал, - это поставил «*», а не конкретные аргументы для функций.

const generatePolicy = (principalId, effect, resource) => {
  const authResponse = {};
  authResponse.principalId = principalId;
  if (effect && resource) {
    const policyDocument = {};
    policyDocument.Version = "2012-10-17";
    policyDocument.Statement = [];
    const statementOne = {};
    statementOne.Action = "execute-api:Invoke";
    statementOne.Effect = effect;
    statementOne.Resource = resource;
    policyDocument.Statement[0] = statementOne;
    authResponse.policyDocument = policyDocument;
  }
  return authResponse;
};

и назвал это так

generatePolicy(val.id, "Allow", "*")

вместо передачи метода Arn

const { authorizationToken, methodArn } = event;
generatePolicy(val.id, "Allow", methodArn)

Не самый безопасный, но я исправлю это позже.

...