2017-08-27 238 views
3

我已经编写了几个服务于RESTful API的Spring 4后端Web应用程序。我甚至设法通过Spring Web Security来保证这些安全。使用AWS IAM或Cognito的Spring Security

在一个案例中,我们已经安装了自己的OpenAm实例。转到客户端用户界面的用户可以登录OpenAM,并且客户端Web应用程序在cookie中获取令牌。我们将该令牌传递给头中的后端,然后Spring Security使用CustomeUserDetailsS​​ervice来检查该令牌是否对OpenAM有效。如果是这样,我们在Spring安全上下文中创建一个用户,分配角色,然后我们看看这些角色是否对API有效。如果是这样,则API执行,否则用户将获得401安全错误。我相信这是OAuth2。

我们还设法与Okta完全相同的事情。我们有我们自己的客户端Web用户界面和我们自己的登录页面UI向Okta发出呼叫并获取两(2)个令牌。我们连接这些令牌并将其传递给后面的程序,这个程序与我们上面描述的程序相同。我也认为这是Oauth2。

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

我一直在网上寻找如何做到这一点。有一个AWS IAM SDK,并且有AWS Cognito。我最初对IAM的看法并没有显示Oauth2,我看到了OpenID和SAML。我知道我对OpenID vs. Oauth2与SAML缺乏认识。

所以,我要寻找的任何环节的任何代码库,或示例代码,或文件,这将帮助我安全使用AWS IAM和/或Cognito我的后端API的使用Spring Security。顺便说一下,我不想使用Spring API Gateway,因为Spring Web Security已经为我做了这些。

在此先感谢您的帮助!

回答

1

好吧,我做了一些我自己的研究就这个问题和从AWS网站我得到这个:

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

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

亚马逊Cognito可以让你轻松地添加用户注册和正负号在您的 手机和网络应用程序。借助Amazon Cognito,您还可以选择通过社交身份提供商(例如Facebook, Twitter或亚马逊)以及SAML身份解决方案或使用您自己的身份系统对用户进行身份验证 。此外,Amazon Cognito可让您在用户设备上本地保存数据 ,使您的应用程序即使在 设备脱机时也能正常工作。然后,您可以同步所有设备上的数据,以使其应用程序体验保持一致,而不管其使用的设备是否使用 。

与亚马逊Cognito,你可以专注于创造伟大的应用程序体验的 而不必担心建设,保护和缩放的解决方案 来处理用户管理,认证,并在设备间同步。

所以,AWS Cognito是...

+1

你可能想看看https://github.com/kdgregory/example-cognito-java和http://blog.kdgregory。 COM/2016/12 /服务器端认证与 - amazon.html。作者已经对Cognito进行了分析,以了解用Java编写的基本服务器端应用程序。 – sdbol

+0

太棒了!我会看看这个文档。谢谢! – tjholmes66