使用密钥凭证与使用Cognito凭证调用AWS SDK API

时间:2016-08-10 15:01:51

标签: amazon-web-services sdk credentials amazon-cognito secret-key

在AWS Xamarin SDK文档中,GetOpenIdTokenForDeveloperIdentity() `credentials = new CognitoAWSCredentials ("IDENTITY_POOL_ID", "REGION_NAME");` 在其第二段中说“ 您必须使用AWS Developer凭据来调用此API。

现在,一般的想法是尝试永远不要公开API秘密和&源代码中的键,特别是在有其他可用机制的情况下。 AWS提供IAM机制,以便我们可以承担角色,然后我们可以定义该角色可以承担哪些特权。

但是上面粗体提到的这个文本是否意味着我不能使用IAM角色和/或策略来调用这些API?这是否意味着我必须在我的应用程序源代码中包含我的accessKey和secretKey?

编辑:

AWS提供Cognito机制,我们可以通过该机制通过

请求临时凭证
var action = new Action(() => RequestPrediction(5));
Dispatcher.Instance.InvokeLater(action);

不直接使用开发人员凭据,例如 accesskey secretkey 等。

但是上面粗体提到的这篇文章是否意味着我无法使用通过cognito获得的凭据,因为这些凭据不是使用开发人员凭据生成的?

试图找出这个新的认知事物。

1 个答案:

答案 0 :(得分:2)

您可以使用IAM角色来调用此API,就像调用任何其他AWS sigv4 API一样。本文的目的是强调,与其他Cognito unauth API(getId,getOpenIdToken,getCredetialsForIdentity)不同,您需要从服务器和AWS凭据调用GetOpenIdTokenForDeveloperIdentity。可以使用IAM用户或IAM角色获取这些凭据。

修改

Cognito用于在客户端应用程序上销售凭据,例如:移动应用程序。通常,凭证与社交身份提供商联合后出售,例如:Facebook,谷歌,亚马逊等。

API' GetOpenIdTokenForDeveloperIdentity'之所以介绍,则允许您使用自己的身份验证系统与Cognito联合。如果您没有自己的身份验证系统,则不应使用此API。此API旨在从您的服务器端应用程序调用。当然,您可以使用Cognito在服务器端获取凭据并调用GetOpenIdTokenForDeveloperIdentity,但这不是Cognito的用途。更简单的是在服务器端使用IAM帮助使用凭证。