我有一个网站/服务,我有一个内置的传统身份验证表单。我的网站/服务可以使用AWS上的资源(例如,S3)。
我想做的是: - 用户点击我网站上的按钮 - 我的网站将呼叫重定向到AWS,用户输入其AWS凭据 - 然后我的网站将能够访问用户的AWS资源。
鉴于:
我了解what is OpenID及其运作方式,以及OpenID and OpenID Connect之间的区别。
我知道如何在Google服务上实施此方案的 playgrounds 。
我知道AWS也有playground。但是这个游乐场的目标与我的略有不同。
答案 0 :(得分:0)
AWS无法正常运作。
这是您计划中的关键缺陷:
我的网站将能够访问用户的AWS资源。
用户在AWS中没有资源。
帐户拥有资源,而用户!=帐户。
帐户拥有用户,帐户授予其用户访问其资源的权限,这些权限有时包括用户授予其他人访问帐户资源权限的权限。
这听起来像一个文字游戏,但它是一个深刻的基本设计概念。 AWS授权不是以用户为中心的。用户是次要实体。该帐户是拥有所有资源的实体。
如果我希望您访问我帐户中的资源,那么我(用户)必须向您授予该权限,这首先意味着我帐户中的特权用户必须授予我许可才能获得该授权。
然后,您的帐户还必须授予您访问我帐户资源的权限。
在AWS中,没有一个用户拥有另一个用户的特权,因此您没有找到任何"使用AWS登录"第三方应用程序上的按钮。
假设委派权限通常由角色完成,而不是直接授予用户一些特权(可以这样做),角色由想要与角色相关联的特权的用户承担,并且有权承担由角色授予的角色目标帐户中的用户具有足够的权限来进行此类授予。假设某个角色为您提供了一组临时凭证,允许您执行该角色的授权操作的子集。
答案 1 :(得分:-1)
不幸的是,AWS本身不是身份提供商。但是,可能与您尝试的最接近的事情是使用“使用Amazon登录”和AssumeRoleWithWebIdentity
。剩下的问题是,您仍然必须以某种其他方式与Web应用程序的用户协调,以使他们向您的应用程序访问其帐户的AWS资源。换句话说,您的Web应用程序的用户将需要允许您的Web应用程序向其AWS账户的资源请求临时安全凭证。
“使用Amazon登录”是Amazon对与OpenID Connect兼容的身份提供程序的实现(因此Amazon是身份提供程序,而AWS不是)。如果需要,还可以使用其他OpenID Connect提供程序作为Web标识的提供程序。
AssumeRoleWithWebIdentity
“为已通过Web身份提供商在移动或Web应用程序中进行身份验证的用户返回一组临时安全凭证。”拥有这些临时凭证后,您可以使用它们“对以下任何AWS服务进行API调用,但有以下例外:您无法调用STS GetFederationToken
或GetSessionToken
API操作。”
希望这能使您指向正确的方向。有关更多详细信息,AWS文档是最佳资源。请参阅以下链接以获取良好的起点。