2012-06-26 94 views
1

我需要公开Grails Web应用程序的特定URL。但是,我希望它受OAuth2客户端凭据流(grant_type)的保护。 准确地说,一个外部代理将请求发送到像Grails上的spring-security-oauth2提供商提供商

http://server-url/oauth/token?client_id=clientId&client_secret=clientSecret&grant_type=client_credentials 

和获得的access_token。然后,我的网址(受保护的资源)应该是入店的东西,如

http://server-url/resource?access_token={access-token obtained before} 

我的方法到现在使用这个插件的Grails(弹簧安全的oauth2提供商:http://grails.org/plugin/spring-security-oauth2-provider)参与。

按照https://github.com/adaptivecomputing/grails-spring-security-oauth2-provider给出的文档,我可以设置授权access_token部分(注册的客户端可以通过提供它的id和secret来获得访问令牌,但是我无法从教程中理解关于如何保护给定的资源(仅限访问令牌的客户端访问)

上述文档链接仅提及设置访问令牌分配的阶段,然后转移到用户批准(我不介意不需要)

任何关于如何进行的指针都会很好。或者,关于任何其他选项的建议满足要求也是受欢迎的。

回答

1

grails插件是弹簧安全插件spring-security-oauth的包装,请看spring-security-oauth文档。我假设你已经熟悉ouath2规范,如果没有阅读enter link description here,甚至google oauth2 API是谷歌文档示例。 你正在使用的插件没有更新到spring-security-oauth的最新版本,如果你想看看我已经分叉并更新它github

+0

谢谢。我之前曾查看过spring-security-plugin,但后来我发现了这个。纠正我,如果我错了,但我想我应该看看我的要求sparklr use-cse。 – SoftDev

+0

嘿,我看着春季安全插件文档。但是,我仍然无法弄清楚为我的用例做什么。我提到的oauth2-provider插件已经创建了access_token。但是,我不知道如何和/或在哪里访问它,并告诉grails或spring-security插件来保护(让我们来说一个控制器使用它。 – SoftDev

+0

是的sparklr示例是如何配置oauth2的主要信息源。看看这两个文件https://github.com/SpringSource/spring-security-oauth/blob/master/samples/oauth2/sparklr/src/main/webapp/WEB-INF/spring-servlet.xml https:/ /github.com/SpringSource/spring-security-oauth/blob/master/samples/oauth2/sparklr/src/main/webapp/WEB-INF/web.xml它们定义了保护资源所需的所有过滤器和bean,例如在spark中,保护资源的过滤器是resourceServerFilter –

0

你可以通过使用spring-security-核心。例如:您可以在Requestmap中列出url路径。

new Requestmap(url: '/api/v1/states/**', configAttribute: 'ROLE_USER,ROLE_USER').save() 
new Requestmap(url: '/api/v1/subscriptions/**', configAttribute: 'ROLE_USER,ROLE_USER').save() 
new Requestmap(url: '/api/v1/surveys/**', configAttribute: 'ROLE_USER,ROLE_USER').save() 

我已经用grails插件“spring-security-oauth2-provider:1.0.0.M5.1”进行了测试。