AWS Lambda / Cognito Authentication – Предполагаемая роль Auth

Я пытаюсь создать приложение iOS в Swift, которое использует следующую службу аутентификации, используя AWS Lambda – https://github.com/danilop/LambdAuth

Он использует AWS Mobile SDK для iOS для связи с DynamoDB и Lambda – http://docs.aws.amazon.com/mobile/sdkforios/developerguide/

Вот пример кода для веб-сайта, который использует токен, возвращенный из функции входа в Lambda, я полагаю, что код Swift будет чем-то подобным – https://github.com/danilop/LambdAuth/blob/master/www/login.html # L69

Вот облачная функция, которая генерирует токен для пользователя – https://github.com/danilop/LambdAuth/blob/master/LambdAuthLogin/index.js#L102

Я создал пул идентификаторов в AWS Cognito (Federated Identities), и у меня есть две роли: auth и unauth. Мое приложение всегда является ролью unauth (arn: aws: sts :: 123123123: Предполагаемая роль / _unauth_MOBILEHUB_123123123 / CognitoIdentityCredentials). Мои пользователи хранятся в таблице dynamodb с использованием соленого пароля.

Корень проблемы в том, что я не знаю правильный код Swift для записи после того, как я получаю токен входа из службы, чтобы перевести моего пользователя в аутентифицированную роль (используйте auth arn). Я хочу, чтобы он использовал роль auth для каждого вызова службы AWS (dynamodb, lambda и т. Д.). Я надеюсь, что кто-то может указать мне в правильном направлении – спасибо.

2 Solutions collect form web for “AWS Lambda / Cognito Authentication – Предполагаемая роль Auth”

Согласно дизайну в книге Данило, если вы используете javascript aws-sdk, вы должны определить свои объекты следующим образом:

var creds = new AWS.CognitoIdentityCredentials({ IdentityPoolId: //hard coded value for your system// }) AWS.config.update({ region: 'us-east-1', credentials: creds }); var lambda = new AWS.Lambda(); 

то, как только вы получите свой идентификатор и токен, вы должны назначить им свои кредиты следующим образом:

 creds.params['IdentityId'] = output.identityId; creds.params['Logins'] = {}; creds.params['Logins']['cognito-identity.amazonaws.com'] = output.token; creds.expired = true; 

где output – это ответ вашей функции LambdAuthLogin Lambda.

Аутентифицированные роли будут использоваться только при использовании одного из поддерживаемых публичных поставщиков (Facebook, Google, Twitter, Login With Amazon), поставщика OIDC, поставщика SAML или пользователей Cognito User Pool.

Amazon Cognito User Pools предоставляет вам решение для регистрации, аутентификации и управления пользователями. Есть ли причина, по которой вы предпочитаете использовать Lambda Auth?

  • замораживание потокового видео через несколько секунд
  • NSPersistentContainer доступен только в версии 10.0 или новее: ошибка
  • Как отладить расширение share ios?
  • What is Error "Thread 1: EXC_BAD_INSTRUCTION (code = EXC_I386_INVOP, subcode = 0x0)" означает?
  • Как заставить панель поиска работать в uicollectionview
  • Приложение с производительностью, встроенное в Swift
  • iOS Переключение между 2 навигационными контроллерами
  • Используйте PFQueryTableViewController (из разбора) с помощью Swift
  • Как отложить документацию в appledoc / HeaderDoc (для документации по блокам, которые принимают аргументы)
  • Мой UIView не делает
  • TWTRLogInButton не показывает поток OAuth
  • Как получить значение nonTil ServerTrust при создании URLAuthenticationChallenge программно?
  • PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.