首页 文章

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

提问于
浏览
4

我试图在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

以下是为用户生成令牌的 Cloud 功能 - 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的每个服务调用(dynamodb,lambda等)使用auth角色 . 我希望有人能指出我正确的方向 - 谢谢 .

2 回答

  • -1

    根据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函数的响应 .

  • 0

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

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

相关问题