保护Grails和Spring Security中的REST API

时间:2013-02-11 19:13:11

标签: rest grails

我将Grails应用程序拆分为两个应用程序 - 面向客户的Web应用程序和一个托管REST API的独立应用程序。我这样做是因为我正在构建一个iOS应用程序以配合我的网络应用程序。我的应用程序使用Spring Security,我想保护REST api。我惊讶地发现很少有关于正确方法的信息。我应该使用Spring Security实现oauth,从而使我的API应用程序成为oauth提供者吗?

任何建议都会很棒。

2 个答案:

答案 0 :(得分:3)

是的,我刚刚为另一个应用程序做了这个。在访问REST URL时,您必须告诉spring security的行为不同。

将此添加到您的config.groovy

现在,您将通过以下方式对应用程序的两个部分进行身份验证

a)在URL中使用/ api(假设你如何设置REST),获得基本身份验证

b)其他所有内容都会通过登录页面。

// making the application more secured by intercepting all URLs 
grails.plugins.springsecurity.useBasicAuth = true
grails.plugins.springsecurity.basic.realmName = " REST API realm"
grails.plugins.springsecurity.securityConfigType = SecurityConfigType.InterceptUrlMap




//Exclude normal controllers from basic auth filter. Just the JSON API is included
grails.plugins.springsecurity.filterChain.chainMap = [
'/api/**': 'JOINED_FILTERS,-exceptionTranslationFilter',
'/**': 'JOINED_FILTERS,-basicAuthenticationFilter,-basicExceptionTranslationFilter'
]

答案 1 :(得分:3)

我在最近几周一直在使用一个插件来完成你想要做的事情:

http://grails.org/plugin/spring-security-rest

看看它,如果您有任何问题,请告诉我。