在Elastic Beanstalk

时间:2017-06-04 02:45:56

标签: amazon-web-services tomcat elastic-beanstalk jersey-2.0 amazon-iam

我开发了一组基于Jersey的REST API,并将它们部署到运行在Elastic Beanstalk上的Tomcat应用程序服务器上。我们的应用程序体系结构要求从AngularJS Web前端访问这些REST API。 Web前端需要用户身份验证,我们希望对这些API的所有访问仅限于经过身份验证的用户。这是一种非常常见的应用程序架构模式。

现在将此体系结构模式映射到AWS服务,我们配置Cognito用户池以对用户进行身份验证。我们将此用户池映射到标识池,我们附加了允许访问Beanstalk应用程序的策略。从这里开始,为了配置对REST API的安全访问,我不知道下一步该做什么。这个技术架构中的许多领域对我来说仍然不清楚。

1)如何在服务器(即AWS)端保护REST API 因为我们使用Tomcat容器来托管Jersey应用程序,所以“标准”JEE方法是在web.xml中声明安全性约束,如下例所示:

<security-constraint>
    <web-resource-collection>
        <url-pattern>/rest/admin/*</url-pattern>
    </web-resource-collection>
    <auth-constraint>
        <role-name>admin</role-name>
    </auth-constraint>
</security-constraint>

我想知道这个角色名称“admin”是否会被Elastic beanstalk摄取?因此,如果我在IAM中定义了一个角色“admin”,并在web.xml中指定了上述节,那么运行时Tomcat应用服务器会执行检查吗?在我的应用程序中,如果我使用标准的SecurityContext.isUserInRole(“admin”),SecurityContext.getUserPrincipal()等,将返回什么样的值?

2)Web前端服务调用 因为我们使用的是AngularJS,所以标准方法是使用内置的$ http服务来调用远程REST API。假设用户成功登录Cognito并获取JWT访问令牌,我们应该如何将其传递给REST API的http调用? AWS Javascript SDK会自动为$ http服务调用添加正确的HTTP标头,还是需要在我们的代码中明确处理?

我在Elastic Beanstalk文档中研究了很多,特别是“与IAM服务集成”部分。但是,文档似乎没有涵盖我上面的问题。

我想了解: 1)在架构上,我的问题如何在AWS Beanstalk中解决。我确信它可以完成,因为它是一种常见的架构模式。我在文档中找不到正确的答案。

2)是否有指向某些示例代码的指针?我浏览了一些Java Web应用程序示例,并自己构建了一个。但是,这些样品不符合我的要求。

感谢任何朋友能否就此主题启发我。

zx999

0 个答案:

没有答案