2013-03-15 61 views
0

我工作的聖盃OAuth的插件的更新版本,支持去年春天,OAuth的無豆命名,但豆定義

我的插件版本的作品很好,我實現了一個幹活的oauth2服務器。

但現在我想補充這樣

def doWithSpring = { 

    myTokenGranter(MyTokenGranter) 

    xmlns oauth:"http://www.springframework.org/schema/security/oauth2" 

    oauth.'authorization-server'(/* ... many definitions here ... */){ 
     /* ... many definitions here ... */ 
     oauth.'custom-grant'('token-granter-ref': "myTokenGranter") 
    } 
} 

定義一個定製的補助,但我得到一個異常告訴我:

org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'myTokenGranter' 

但豆myTokenGranter定義,你可以看到。如果我刪除了自定義授權定義項目啓動,我可以訪問myTokenGranter bean。

尋找到fullstack跟蹤我看到它試圖找到我的豆例外發生在spring oatuh2 server bean definition parse AuthorizationServerBeanDefinitionParser.java在該行

parserContext.getRegistry().getBeanDefinition(customGranterRef); 

其中customGranterRef =「myTokenGranter」

所以我懷疑有Spring Ouath或Grails BeanBuilder中的一個錯誤,它不會讓我的「myTokenGranter」在服務器解析器中可見。或者在grails bean定義DSL中發生一些錯誤。


謝謝您的關注。

更深入地調試應用程序我發現問題可能在於BeanBuilder如何在翻譯命名空間的DSL中工作。

如果我調試

在行

parserContext.getRegistry().getBeanDefinition(customGranterRef); 

在我的豆被選中(在AuthorizationServerBeanDefinitionParser.java)的點,如果我檢查的

parserContext.getRegistry().getBeanDefinitionNames() 

澈結果拿給我只有這豆

[org.springframework.context.annotation.internalConfigurationAnnotationProcessor 
org.springframework.context.annotation.internalAutowiredAnnotationProcessor 
org.springframework.context.annotation.internalRequiredAnnotationProcessor 
org.springframework.context.annotation.internalCommonAnnotationProcessor 
org.springframework.context.annotation.internalPersistenceAnnotationProcessor 
org.springframework.aop.config.internalAutoProxyCreator 
org.springframework.transaction.annotation.AnnotationTransactionAttributeSource#0 
org.springframework.transaction.interceptor.TransactionInterceptor#0 
org.springframework.transaction.config.internalTransactionAdvisor 
oauth2TokenGranter 
oauth2AuthorizationCodeServices 
oauth2AuthorizationRequestManager] 
即使我移動ouath服務器聲明中resources.xml中,保持內部resources.groovy我的自定義令牌授予者Bean聲明

而且也不是所有其他decleared豆...


的問題存在。

但是,如果我在resources.xml中移動自定義令牌bean聲明,問題就解決了。

+0

沒有ü嘗試在彈簧安全的OAuth論壇張貼? – OhadR 2013-03-15 20:26:42

+1

@OhadR不,我會試試。謝謝。 – 2013-03-18 08:42:08

回答

0

解決黑客春季安全的Oauth

看到這個commit

0

我真的不知道BeanBuilder DSL是如何工作的,但是如果出現問題似乎問題就在那裏(您的示例在XML中工作得很好)。你可以分兩步來完成,所以當處理OAuth2 namepsace時,myTokenGranter的bean定義肯定可用?

+0

「兩步」是什麼意思? – 2013-03-18 08:43:04