【问题标题】:Spring Security with AWS IAM or Cognito使用 AWS IAM 或 Cognito 的 Spring Security
【发布时间】:2018-02-04 22:19:39
【问题描述】:

我已经编写了几个服务于 RESTful API 的 Spring 4 后端 Web 应用程序。我什至设法使用 Spring Web Security 来保护这些。

在一种情况下,我们安装了自己的 OpenAm 实例。访问客户端 UI 的用户可以登录 OpenAM,客户端 Web 应用程序会在 cookie 中获取一个令牌。我们在标头中将该令牌传递给后端,然后 Spring Security 使用 CustomeUserDetailsS​​ervice 对照 OpenAM 检查该令牌以查看它是否有效。如果是这样,我们在 Spring Security Context 中创建一个用户,分配角色,然后我们查看这些角色是否对 API 有效。如果是,API 会执行,如果不是,用户会收到 401 安全错误。我相信这是 OAuth2。

我们还设法对 Okta 做同样的事情。我们有自己的客户端 Web UI 和我们自己的登录页面。 UI 调用 Okta 并取回两 (2) 个令牌。我们连接这些令牌并将其传递给后端,后端执行与我们上述相同的过程。我也认为这是 Oauth2。

我现在正在开发一个新项目,这次我想使用 AWS IAM 保护我的 Web 应用程序,因为前端和后端将托管在 AWS EC2 实例上。

我一直在网上搜索以确切了解如何执行此操作。有一个 AWS IAM 开发工具包,还有 AWS Cognito。我最初对 IAM 的了解并没有完全显示 Oauth2,我看到了 OpenID 和 SAML。我知道我缺乏关于 OpenID、Oauth2 和 SAML 的知识。

因此,我正在寻找任何代码库、示例代码或文档的链接,这些链接将帮助我使用 AWS IAM 和/或 Cognito 使用 Spring Security 保护我的后端 API。顺便说一句,我不想​​使用 Spring API 网关,因为 Spring Web Security 已经为我这样做了。

提前感谢您的帮助!

【问题讨论】:

    标签: java spring-mvc spring-security amazon-iam


    【解决方案1】:

    好的,我对此做了一些自己的研究,并从 AWS 网站得到了这个:

    AWS Identity and Access Management (IAM) 使您能够安全地 控制用户对 AWS 服务和资源的访问。使用 IAM,您可以创建和管理 AWS 用户和组,并使用 允许和拒绝他们访问 AWS 资源的权限

    但是,我不是在寻找这个。我有一个网络应用程序,我可能也有一个移动端。我只是不想编写用户管理,或者处理我自己的登录会话和授权等。所以,我认为在这种情况下:

    Amazon Cognito 让您可以轻松地将用户注册和登录添加到您的 移动和网络应用程序。使用 Amazon Cognito,您还可以选择 通过 Facebook 等社交身份提供商对用户进行身份验证, Twitter 或 Amazon,使用 SAML 身份解决方案,或使用您自己的 身份系统。此外,Amazon Cognito 使您能够保存数据 本地在用户设备上,让您的应用程序即使在 设备处于离线状态。然后,您可以跨用户同步数据 设备,以便他们的应用程序体验保持一致,无论 他们使用的设备。

    借助 Amazon Cognito,您可以专注于打造出色的应用体验 而不是担心构建、保护和扩展解决方案 处理用户管理、身份验证和跨设备同步。

    所以,AWS Cognito 是...

    【讨论】:

    猜你喜欢
    • 2020-03-20
    • 2019-07-08
    • 2018-09-08
    • 2016-07-04
    • 2018-11-01
    • 2020-02-12
    • 1970-01-01
    • 2018-10-08
    • 2018-06-27
    相关资源
    最近更新 更多