我已将我的 Grails 应用程序拆分为两个应用程序 - 一个面向客户的 Web 应用程序和一个托管 REST api 的单独应用程序。我这样做是因为我正在构建一个 iOS 应用程序来配合我的网络应用程序。我的应用程序使用 Spring Security,我想保护 REST api。我惊讶地发现关于正确方法的信息很少。我应该使用 Spring Security 实现 oauth,从而使我的 API 应用程序成为 oauth 提供者吗?
任何建议都会很棒。
在过去的几周里,我一直在开发一个插件,该插件完全涵盖了您想要做的事情:
http://grails.org/plugin/spring-security-rest
看看它,如果你有任何问题,请告诉我。
是的,我只是为另一个应用程序这样做。当访问 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'
]