|
5
|
| Justin Grant · 技术社区 · 8 年前 |
|
|
1
8
首先,我假设我不需要Cognito用户池,因为我只需要联合社交登录,而不需要用户名/密码登录。这个假设正确吗?Federated identities 习惯了 “为用户提供temproary AWS凭据…” -因此,如果您只想通过联合登录提供临时访问,那么这个假设是 对的 . 如果要管理用户组和配置文件以及其他用户服务,则需要用户池。但是,根据你的问题,这不是必要的。 其次,我假设我确实需要一个Cognito标识池,以便根据AWS API网关轻松地验证我的应用程序调用。这个假设正确吗?如果我的应用对AWS服务的所有访问都是通过调用AWS API网关端点来实现的,这是否仍然正确?你的假设是 对的 但是,我想添加有关API网关的身份验证的信息,以便了解其他方法的存在。 Cognito身份池是一种根据API网关进行身份验证的方法。有三种方法可以通过API网关进行身份验证
两者之间的主要区别 方法1 和 方法2和3 是身份验证模式。Cognito身份池身份验证角色交换 JWT 对于AWS IAM credentials 在API调用中使用的。在其他两种方法中,JWT被用作身份验证器。在这个 answer 我更详细地解释了区别。 因为Cognito标识池返回AWS IAM凭据,所以它的用途也更广泛。如果您的应用程序最终需要访问其他AWS服务(例如S3),那么Cognito标识池将是首选方法。 第三,像这样的纯社交登录用例是否有公共代码示例?对!我会尽量提供一些关于如何做到这一点的信息。 首先,我强烈建议使用 AWS-Amplify 用于登录的库。此库提供以下方法:
例如,一旦你在你的身份池中配置了Google(或Facebook)作为一个身份提供者,AWS Amplify可以很容易地让你执行登录( AWS Amplify Federated Identities ) 但是,也可以在没有AWS放大的情况下使用 AWS JavaScript SDK . Example :
在这两种解决方案中(有AWS放大和无AWS放大)认证是一个两步过程。首先,你的应用必须通过Google或Facebook的认证才能获得JWT。其次,这个JWT被交换为IAM凭据,IAM凭据将用于API调用。 认证流程:
这个 documentation 关于Facebook的这些步骤将更详细。 根据我自己的经验,我用 Okta 作为我的AWS身份池的身份提供程序,使用 OpenID . 与您类似,我没有使用用户池,因为这些服务是由Okta管理的。 This 是理解“无服务器”身份验证的另一个重要资源。 |
|
|
hallibut · Lambda功能不工作的SST热重新加载 1 年前 |
|
|
Tim · 在java中,有没有更快的方法将字节数组写入文件? 1 年前 |
|
Sampgun · CDN调用与lambda调用的巨大差异 1 年前 |
|
|
Tiago · 如何允许从一个安全组到另一个组的所有流量? 1 年前 |
|
|
explorer · AWS SageMaker项目模板创建失败 1 年前 |