[英]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.