没有数据库实现的Grails安全性

时间:2013-01-28 08:01:56

标签: security api grails spring-security shiro

我正在使用Grails 2.2.0开发一个Web应用程序,该应用程序通过调用另一个后端服务器的已实现API来执行所有操作。这意味着,所有事物,甚至是身份验证和所有相关事情,都是通过API和相应的后端服务器完成的。

现在我想使用SpringSecurity或Apache Shiro Plugin进行身份验证和角色管理等等,但我遇到的所有内容都使用与数据库相关的domain类,而不是我打算做...有没有可能在没有数据库连接的情况下使用任何这些插件而无需高度自定义它们?或者是否有另一个我不知道的插件,它可以带来我需要的“无忧无虑”的功能?

我希望问题本身足够清楚,否则请不要犹豫,请我进一步/更好地解释我的问题:)

2 个答案:

答案 0 :(得分:4)

Spring Security Core插件默认使用域类和数据库,但使用自定义UserDetailsService实现可以轻松自定义用户和角色数据的来源。这里有一个whole chapter in the docs

我还做了一个关于自定义插件的演讲,并提供了一个自定义身份验证提供程序的示例。有一个示例应用程序和链接到谈话视频here

答案 1 :(得分:1)

Apache Shiro插件不会强制您使用域类或数据库。 您可以拥有Shiro Realm(将其放在grails-app / realms中),它会将身份验证和授权委派给后端服务器。这应该是这样的:

class BackendServerRealm {
   def authenticate(authToken) {
       // call backend authentication with credentials from authToken
       def user = backednService.authenticate(authToken.username, authToken.password)
       ...
       new SimpleAccount(user.username, user.password, "BackendServerRealm")
   }
}

Shiro只是为您提供执行身份验证和授权的基础结构,但您可以轻松地插入自己的实现