如何使用 AWS 开发工具包进行身份验证

Posted

技术标签:

【中文标题】如何使用 AWS 开发工具包进行身份验证【英文标题】:How to authenticate using the AWS SDK 【发布时间】:2018-02-24 15:32:31 【问题描述】:

我想在 Amazon Web Services 用户每次使用我的应用程序时对其进行身份验证。我正在使用适用于 asp.net 的 AWS 开发工具包开发应用程序,它将使用 AWS-CLI 与 AWS API 进行交互。

我知道拥有 AWS 账户的用户可以设置 IAM 凭证,有什么方法可以使用它吗?

身份验证需要在应用程序运行时进行,这就是为什么下面的页面对我没有用处!

https://docs.aws.amazon.com/sdk-for-net/v2/developer-guide/net-dg-config-creds.html

基本上,我正在寻找某种 OAuth,以便在他们使用我的应用程序时访问 AWS 用户的帐户,以便我可以使用 ASP.NET 上的 AWS Cli 代表他们执行备份、启动和停止服务器.

我可以通过访问和刷新令牌获得响应的某种端点是理想的。例如,this API 包含很多关于如何代表用户进行连接的详细信息,而 AWS 似乎没有提供类似的内容!

【问题讨论】:

我假设您正试图代表他们在他们的 AWS 账户中操作。执行此操作的正确方法是让 AWS 用户在其账户中建立跨账户 IAM 角色,然后您的应用可以假定该角色以获取凭证。 @jarmod 我的应用程序可以假设凭据是什么意思?你知道我在哪里可以找到这方面的文件吗?到目前为止,我所看到的一切都不清楚! 您应该阅读 IAM 角色 (docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)。以下是如何将一个帐户的访问权限委托给另一个帐户的示例:docs.aws.amazon.com/IAM/latest/UserGuide/… 这不是我想要的,因为它说我需要拥有该帐户,我实际上是在寻找创建一个用户可以用来访问他们的 aws 帐户资源@jarmod 的应用程序跨度> 这并不是说您必须拥有两个帐户。在他们提供的示例中,您拥有两个帐户,但他们这样做只是为了让您轻松上手。 【参考方案1】:

您可以尝试 AWS Cognito。我不完全确定,正在访问什么样的 aws 服务,但 Cognito 确实允许公开某些服务。请通过https://aws.amazon.com/cognito/faqs/了解更多详情。

【讨论】:

【参考方案2】:

我认为文档可能已过时。在 AWS re:Invent 2017 上,有一个名为“AWS CLI:2017 及以后”的精彩会议currently available on YouTube。该演示文稿详细介绍了一些新功能,包括 AWS CLI 的动态凭证,并且有一个相应的 GitHub 存储库awslabs/awsprocesscreds 可能有一些有用的示例。

【讨论】:

以上是关于如何使用 AWS 开发工具包进行身份验证的主要内容,如果未能解决你的问题,请参考以下文章

在自定义函数中使用 AWS cognito 多因素身份验证

已通过身份验证的 Cognito 用户访问 DynamoDB 表的 AWS IAM 策略问题

AWS Java SDK - AWS 身份验证需要有效的 Date 或 x-amz-date 标头

AWS Cognito - 使用 JWT 与 cognito.getUser 开发工具包验证令牌

如何在 AWS Cognito 上使用未经身份验证的用户在 React 上启用 AWS 位置服务地图?

AWS iOS SDK Cognito 开发人员身份验证 (Swift)