单点登录 AWS API 网关

Single Sign on in AWS API Gateway

我们在亚马逊网络服务 (AWS) 中编写了一个微服务并将其链接到 API 网关。

此微服务将在我们的组织内使用,我们希望以只有我们组织内的用户才能访问此微服务的方式保护它。

因此,当用户触发对此服务的请求时,he/she 应该会看到一个登录屏幕。当且仅当用户提供有效凭据时,he/she 应该能够访问该服务。

我们所说的有效凭据是指,username/password 为他们用来访问我们现有应用程序的用户配置的。

到目前为止,我们正在考虑解决方案的方向是:

  1. 使用 Authorizer 保护 API Gatweway,特别是 Cognito 授权人
  2. 对于上述授权方中使用的 Cognito 用户池, 在 Federation 部分下附加 Identity Provider
  3. 为此使用 SAML 身份提供者。

请让我们知道如何进一步进行?

有更好的解决方案吗?

这个问题有很多要素。开始时,您公司的规模与您使用的身份验证服务类型有很大关系。

使用 Cognito 用户池意味着您或您的团队将必须管理该池中的用户,这意味着您将负责确保通过清理和可能监控池来维护此列表。如果您一无所有,这不是一个坏主意,但是,我有一家大约有 4000 名员工的公司,他们都使用 Active Directory。如果我们可以利用现有的活动目录,那么维护这个列表就没有意义了。

最后,我们使用了 Onelogin 和 cognito 联合身份,这使我们能够连接到 Active Directory,同时将用户管理简化并集中到我们的 IT 部门。

要考虑的第二件事是,您可以使用 cloudfront 和 vpc 通过将地址列入白名单来限制对您的应用程序的访问。有网络经验的人应该能够做到这一点,并且会消除 public 暴露您的应用程序。

根据您的想法,我认为您的方向是正确的。要添加的注释,使用 Cognito 联合身份最多有 1 小时 window 来使用将刷新令牌置于高优先级的凭据。这是用户池可以提供帮助的地方。使用用户池重新验证将变得轻而易举。

取决于您能够访问的资源。选择对您的团队有意义或有效的最佳身份验证服务。不要选择一个需要你的应用程序原因之外的工作或不在你的职位中的工作。一定要使用联合身份,因为它简化了提供 aws 凭证的流程,并且建立在 aws sts 之上。

如果您需要具体信息,请告诉我。