2016-08-16 4 views
3

Я пытаюсь создать приложение IOS в Swift, который использует следующую службу аутентификации с помощью AWS Lambda - https://github.com/danilop/LambdAuthAWS Lambda/Cognito Аутентификация - Предполагая, что Auth роль

Он использует AWS Mobile SDK для прошивки общаться с DynamoDB и Лямбда - 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 и т. Д.). Я надеюсь, что кто-то может указать мне в правильном направлении - спасибо.

+1

Удачи на этом? У меня такая же проблема –

ответ

-1

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

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

0

В соответствии с дизайном в книге Данило, если вы используете AWS-SDK JavaScript, вы должны определить свои объекты как:

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(); 

затем, как только вы получите ваш identityId и маркер, вы должны назначить их вы кредитки как последуйте:

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

где выход ответ от вашей функции LambdAuthLogin лямбды.