Итак, я наконец-то понял выполните действия, чтобы проверить подлинность вашего SDK для использования в браузере, и я до сих пор предполагаю, что это будет применяться и при использовании SDK в IOS или Android. Я отправлю сообщение, если это не так.
ОК. SO - первая часть, которая неясно объясняется при настройке ваших учетных записей Cognito Federated, заключается в том, что в политике IAM для роли, не прошедшей проверку подлинности, значение «Доверительные отношения» по умолчанию (к этому можно получить доступ со страницы «Роль» или «Не проверенная подлинность роль» в IAM), не разрешает доступ к аутентификации Facebook, как это выражается в разных статьях о настройке Facebook (или других аутентификаторов) с вашим Federated Cognito.
Итак, вам необходимо изменить политику «доверительные отношения» для аутентифицировать роли: вы должны заменить то, что в настоящее время существует в следующем разделе, но оставить остальные политики на месте:
"ForAnyValue:StringLike": {
"cognito-identity.amazonaws.com:amr": "graph.facebook.com"
}
Ваше доверие отношения теперь должны выглядеть следующим образом:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Federated": "cognito-identity.amazonaws.com"
},
"Action": "sts:AssumeRoleWithWebIdentity",
"Condition": {
"StringEquals": {
"cognito-identity.amazonaws.com:aud": "YOUR-AUD"
},
"ForAnyValue:StringLike": {
"cognito-identity.amazonaws.com:amr": "graph.facebook.com"
}
}
}
]
}
Внутри шлюза API, убедитесь, чтобы установить все ресурсы, которые вы хотите получить доступ по ролям, чтобы я Проверка подлинности политики AM: вы делаете это, выбирая окно запроса метода для вашего желаемого метода. В настройках авторизации вы устанавливаете авторизацию на AWS_IAM и сохраняете ее.
Поскольку у вас есть авторизация IAM, установленная в вашем методе, вы также должны убедиться, что CORS настроен для этого ресурса.Выберите раскрывающееся меню «Действия» и выберите вариант включения CORS. В этом окне просто выберите метод, к которому применяется CORS (на основе того, какие методы у вас установлены для авторизации IAM).
После того, как все будет готово, вы можете развернуть свой API и выбрать нужный SDK. Теперь вы должны установить правильные учетные данные для своего метода, чтобы ваш объект SDK мог подписать ваши запросы с правильными учетными данными.
пример:
var apigClient = apigClientFactory.newClient({
accessKey: AWS.config.credentials.accessKeyId,
secretKey: AWS.config.credentials.secretAccessKey,
sessionToken: AWS.config.credentials.sessionToken,
region: 'YOUR-REGION'
});
Доступ к этим учетные данные из вашего метода авторизации для Facebook (или любой другой OAuth провайдера, который Вы установили для федеративного счета):
AWS.config.credentials = new AWS.CognitoIdentityCredentials({
IdentityPoolId: 'your-pool-id',
Logins: {
'graph.facebook.com': response.authResponse.accessToken
}
});
В моем случае я использовал этот метод аутентификации FB для доступа к токену Facebook:
FB.getLoginStatus(function (response) {
});
Наконец, вы должны дать вашей роли Cognito идентифицированной правильный IAM политики, чтобы иметь возможность ссылаться на свой API с помощью SDK: Вы можете настроить следующую политику, как вы хотите, чтобы ограничить глубину доступа вашего Authenicated Федеративного Роль имеет свои шлюзовые API ресурсов/методы:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"execute-api:Invoke"
],
"Resource": "arn:aws:execute-api:*:*:*"
}
]
}
когда вы приложите эту политику, ваш SDK сможет успешно сделать запросы к вашему API. Если вы удалите политику, у вас не будет доступа.
Кроме того, если вы удалите изменения в политике доверия (как показано выше), вы также не сможете получить учетные данные идентификации Cognito, и объект для этих учетных данных останется неопределенным.
ОК, мой первый столбец для столбцов. Надеюсь, что это спасет кого-то еще хороший кусок работы в документации AWS.
Теперь, если вы хотите иметь мелкозернистый контроль над тем, кто получает доступ к ресурсу (например, функции Lambda вы используете для доступа к серверному ресурсу) и хотят, чтобы убедиться, что вы имеете право Cognito ID info, чтобы контролировать, как ваша лямбда реагирует на того, кто вызывает эту функцию, вы можете передать учетные данные cognito, необходимые для выполнения метода Api Gateway.
Способ, которым вы это делаете, прост, однако один улов - вы должны убедиться, что ваша роль аутентификации для вашего Cognito дает разрешение на функцию Lambda.
перейдите к «Запросу интеграции» для вашего метода. Установите флажок «Вызовите с учетными данными».
Убедитесь, что установлены CORS и повторно разверните API и SDK. Теперь вы можете перейти к своей роли IAM для пользователя, прошедшего проверку подлинности cognito, и добавить политику, которая позволяет этой роли выполнять функцию Lambda.