簡體   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