2014-04-14 50 views
0

我正在开发一个web应用程序,它将包含两个不同的部署:一个包含服务层(服务,数据库访问等)和一个REST端点,另一个是UI层仅基于通过使用服务层的REST端点检索到的数据具有表示层。用UI和服务层保护webapp

我使用Spring来开发这两个应用程序,所以自然的想法是使用Spring Security来保护应用程序。

但是我将如何去实现呢?我猜登录页面应该在UI层上,但是如何通过这两个应用程序共享安全问题?有类似案例的书目吗?

请注意,这两个部署不一定驻留在同一个容器中。

回答

0

通常,REST服务层在具有身份验证概念的单独服务器上运行,例如弹簧安全支持开箱即用的基本或摘要身份验证。

REST服务的客户端将使用REST登录服务对自身进行身份验证,并通过将请求传递给会话令牌来进一步发出请求,或者更频繁地使用REST API密钥对每个请求进行签名,该REST API密钥已预先分配给每个客户。

在这种情况下,REST服务的客户端是服务于Web应用程序的登录页面和任何其他页面的前端服务器,以及不能直接到达REST服务器的页面ajax请求的答复到相同的原产地政策。

这种方式有两个独立的弹簧安全设置:REST端的基本认证/摘要/自定义认证,以及前端服务器端的表单登录认证。

用户向前端服务器标识自己,前端服务器向REST服务器标识自己。提供给页面的数据可能是多个REST调用的组合。

+0

感谢您的详尽解答。还有一个问题:如果我的身份验证是通过用户数据库进行的呢?我的数据访问机制位于REST层,但身份验证发生在UI层。 – MichelReap

+0

UI层可以对数据库表进行身份验证,但REST接口通常不会验证UI用户,而是通过它的API密钥对其进行调用的程序(前端服务器)进行身份验证 –

+0

不,它不能,因为我说我的用户界面图层位于不同的环境中,因此它对数据存储库的唯一访问权限是通过REST api – MichelReap