2011-11-30 50 views
1

組合的作用濾波器我想開發含有一些模塊 門戶和每個模塊一個門戶消耗由基於新澤西州和使用OAuth 1.0如何增加對請求使用OAuth

固定對於一個web服務提供的數據那一刻我幾乎實現OAuth的提供商

用戶可以連接到門戶和訪問模塊

每個應用程序或模塊都有特定的訪問令牌消耗資源

我想要做的就是添加一個角色實現

例如,對於模塊1,用戶可以有2個角色(基於role1和role2所),但在平行

首先,用戶不能使用2個角色使用訪問(模塊1 /用戶1 /角色1),他將有一個令牌,後來用戶使用訪問(模塊1 /用戶1 /角色2),他將有另一個令牌

根據角色,我想過濾與RolesAllowed註釋例如

我已閱讀本文的請求:http://objecthunter.congrace.de/tinybo/blog/articles/89

當用戶通過Web服務認證時,我可以在數據庫中保存用戶名,並且用於模塊和RolesAllowedResourceFilterFactory的角色可以使用領域來檢查用戶是否在角色中並且可以訪問資源

但我可以繞過身份驗證的方法?

無論如何,我真的需要你的幫助來實現這個角色過濾事情

我會嘗試,如果你需要

感謝給你更多的細節

回答

1

澤西OAuth的過濾器基礎上設置的安全上下文使用了什麼訪問令牌。您只需確保oauth提供程序的自定義實現爲使用各種角色調用的isInRole()方法分配帶有正確返回值的標記。給定令牌的角色可以在令牌授權流程中建立(例如,客戶端可以使用在請求令牌時傳遞給服務器的自定義參數來請求特定角色(這會在參數參數中傳遞給提供者)。 newRequestToken()方法)

,在確定角色時的OAuth濾波器組將委託令牌isInRole()方法的安全上下文 - 。和RolesAllowedResourceFilterFactory依賴於安全上下文所以,一切都應該按預期工作如果OAuthToken .isInRole()返回正確的價值。你遇到的任何問題?

0

我知道這是一個老的文章,但我面臨着類似的問題。對我來說,我解決它完全一樣的方式描述馬丁期間令牌授權我設置允許的角色:

String verifier = provider.authorizeToken(token, sContext.getUserPrincipal(), roles); 

其中提供商是@Context DefaultOAuthProvider,令牌DefaultOAuthProvider。令牌和角色是我想允許由此看來訪問一組角色:

Set<String> roles = new HashSet<String>(); 
roles.add("someRole"); 

然後在我的服務,我只用一個@Context SecurityContext的方法的isUserInRole(「someRole」),這給了我真正的情況下,用戶在指定的作用,否則爲false:

if (sContext.isUserInRole("someRole")) { 
    .... 
} 

希望它會幫助別人。