繁体   English   中英

AWS Lambda / Cognito身份验证 - 假设Auth角色

[英]AWS Lambda/Cognito Authentication - Assuming Auth Role

我试图在Swift中创建一个使用AWS Lambda的以下身份验证服务的iOS应用程序 - https://github.com/danilop/LambdAuth

它使用适用于iOS的AWS Mobile SDK与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(联合身份)中创建了一个身份池,我有两个角色,auth和unauth。 我的应用程序似乎始终是unauth角色(arn:aws:sts :: 123123123:assume-role / _unauth_MOBILEHUB_123123123 / CognitoIdentityCredentials)。 我的用户存储在带有盐渍密码的dynamodb表中。

问题的根源是,在我从服务接收登录令牌以将用户转换为经过身份验证的角色(使用auth arn)后,我不知道要写入的正确Swift代码。 我希望它为AWS的每个服务调用使用auth角色(dynamodb,lambda等)。 我希望有人能指出我正确的方向 - 谢谢。

根据Danilo的书中的设计,如果你使用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;

其中output是LambdAuthLogin Lambda函数的响应。

只有当您使用受支持的公共提供商(Facebook,Google,Twitter,Login With Amazon),OIDC提供商,SAML提供商或Cognito用户池用户时,才会使用经过身份验证的角色。

Amazon Cognito用户池为您提供用户注册,身份验证和管理的解决方案。 您是否有理由更喜欢使用Lambda Auth?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM