2012-06-26 91 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」進行了測試。