Доступ к API-шлюзу только для специальных ролей Cognito User Pool - PullRequest
0 голосов
/ 31 марта 2020

У меня есть система авторизации cognito с группами для пользователей. Также есть шлюз API и лямбда-функция, которая добавляет данные в базу данных postgreSQL. Я хочу, чтобы только специальные группы пользователей имели доступ к API.

Для этого я создал метод POST и авторизовал его через AWS_IAM. А также создана группа «Администраторы», в которой есть один пользователь. У группы есть роль, у которой есть права на все.

Но когда я вызываю API, я получаю сообщение об ошибке:

Optional("{\"Message\":\"User: arn:aws:sts::XXX:assumed-role/Auth/CognitoIdentityCredentials is not authorized to perform: execute-api:Invoke on resource: arn:aws:execute-api:eu-west-1:********9606:gv1nzib1df/Prod/POST/\"}\n")

Эта роль «Аутентификация» устанавливается как роль с проверкой подлинности в пуле удостоверений. Почему права из группы не работают для API?

   func doInvokeAPI() {
        let httpMethodName = "POST"

        let URLString = "/"
        let headerParameters = [
            "Content-Type": "application/json",
            "Accept": "application/json",
            "x-api-key": "XXX"
        ]

        let apiRequest = AWSAPIGatewayRequest(httpMethod: httpMethodName, urlString: URLString, queryParameters: nil, headerParameters: headerParameters, httpBody: nil)
        let serviceConfiguration = AWSServiceConfiguration(region: AWSRegionType.EUWest1, credentialsProvider: AWSMobileClient.default())

        IEDUCATIONIEducationClient.registerClient(withConfiguration: serviceConfiguration!, forKey: "CloudLogicAPIKey")

        let invocationClient = IEDUCATIONIEducationClient.client(forKey: "CloudLogicAPIKey")

        invocationClient.invoke(apiRequest).continueWith { (task: AWSTask) -> Any? in
            if let error = task.error {
                print("Error occurred: \(error)")
                return nil
            }

            let result = task.result!
            let responseString = String(data: result.responseData!, encoding: .utf8)

            print(responseString)
            print(result.statusCode)

            return nil
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...