2012-09-11 37 views
0

我想了解Spring Security如何在三层架构中工作。在三层架构中使用Spring Security

假设系统的组成如下:
WEB < - >APP < - >DB

而且该用户在DB层限定。

我该如何在应用程序中实现它?
从我的理解,我应该做到以下几点:

  1. 创建于WEB层我自己的身份验证提供程序。
  2. 身份验证提供程序将调用APP层上的服务,以根据数据库实际验证凭据。
  3. 用户通过之后在WEB层Spring Security的模块,有没有更多的认证,每WEB - >APP调用实际上是未经验证的

最后一颗子弹对我没有意义 - 所以我假设我错过了文档中的某些东西。

我的问题 - 这是在三层web应用程序中实现安全性的春季方法吗?或者,还有更好的方法?

回答

0

这是非常标准的。将大部分验证逻辑保留在APP中,但WEB成为客户端/提供者。

呼叫完成后,进一步的呼叫是而不是未经认证,使用会话保留认证。只要你声明所有的端点需要在你的安全xml中进行认证,那么除非用户已经被认证,否则没有端点可以被访问(并且如果它们不是或者它们的登录已经过期,它们将被踢出指定的路径) 。

而且我还会争辩说,对于像这样的横切关注而言,在3层方面考虑并不适用。 DB这一块是无关紧要的,另一个部门是为了可重用性的目的,这相当于存储库和集成的分离。

+0

从我的理解我保护URL在SpringSecurity - 所以我只在'WEB'层。 我不明白你的答案应该是什么样的应用程序的工作方式。 – RonK

+0

我在这里添加了'DB',因为在我的情况下,用户保留在那里,所以'APP'层必须访问它来验证用户 - 但你是对的 - 这与问题无关。 – RonK

+0

这些URL将成为您的应用程序的访问点,因此也是您可以保护它的地方。也许令人困惑的是,我认为端点是指URL端点(没有SOA影响)?任何其他访问应用程序的方式都可以根据需要进行保护,但如果URL是唯一的方式,那么这是您唯一需要担心的方式。 –