1

我需要公开我的 Grails Web 应用程序的特定 URL。但是,我希望它受到 OAuth2 客户端凭据流(grant_type)的保护。准确地说,外部代理会向类似的东西发送请求

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

并获得一个access_token。然后,我的 URL(受保护的资源)应该可以通过类似的方式访问

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

到目前为止,我的方法涉及使用这个 grails 插件(spring-security-oauth2-provider:http://grails.org/plugin/spring-security-oauth2-provider)。

按照https://github.com/adaptivecomputing/grails-spring-security-oauth2-provider提供的文档,我已经能够设置授予 access_token 部分(注册的客户端能够通过提供其 id 来获取访问令牌和秘密。但是,我无法从教程中了解如何保护给定资源(仅使用访问令牌限制对客户端的访问)。

上面的文档链接只提到了设置访问令牌分发的阶段,然后转到用户批准(我不需要)。

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

4

2 回答 2

1

grails 插件是 spring 安全插件spring-security-oauth的一个包装,请查看 spring-security-oauth 文档。我假设您已经熟悉 ouath2 规范,如果没有阅读请在此处输入链接描述,甚至google oauth2 API也是 google 文档示例。你正在使用的插件没有更新到 spring-security-oauth 的最后一个版本,如果你想看看我已经在github上 fork 和更新了它

于 2012-06-26T16:10:13.447 回答
0

您可以使用 spring-security-core 来保护您的资源。示例:可以在 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”进行了测试。

于 2013-01-08T19:33:59.297 回答