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