2013-03-26 95 views
2

也許我的理解是錯誤的,請指教。WSO2如何將ESB與身份服務器集成

要求:

(1)用戶A,用戶B想要訪問web服務的SayHello。

(2)只有用戶A有權限。

(3)SayHello的Web服務僅返回一個字符串 「hello」

以前:

(1)要調用的SayHello,根據SayHello的WSDL創建客戶端。 - 成功

(2)通過ESB創建代理服務SayHelloProxyService,將此代理服務託管到SayHello服務,根據SayHelloProxyService?wsdl創建客戶端。 --Success

現在:

添加標識服務器內,只給用戶A訪問權限,類似下圖: enter image description here

問題

現在,我在想,如果我仍然想調用SayHelloProxyService,我應該更改客戶端的代碼嗎?攜帶一些令牌像用戶名或SayHelloProxyService?如果是的話如何編寫客戶端代碼?也許我的理解是完全錯誤的,但如果有一個小例子會有很大的幫助,誰能知道這個?

謝謝你提前。

回答

2

我的理解是你設置了錯誤的權限。 「配置>用戶和角色>角色」中的角色權限僅對服務器本身有效,在您的方案中爲IS,但不適用於外部服務。

如果您需要IS授權某種服務,而不是更改您的客戶端代碼,則可能需要創建一個簡單的XACML策略,如[1]中所述,並啓用WSO2IS作爲策略決策點。

[1] http://wso2.org/library/articles/2010/10/using-xacml-fine-grained-authorization-wso2-platform

+0

是的,那個鏈接是我跟着,到現在爲止,我成功地建立了IS並根據服務器ESB,但對於Java客戶端,我看到options.setUserName(」管理員 「); options.setPassword(」 管理員「);所以如果我可以訪問物業服務(我是對嗎?),但其他語言怎麼樣? C#,PHP等他們沒有一個'選項'庫,所以他們如何調用該服務? – Shore 2013-03-26 15:36:43

+0

一旦您找到服務的WSDL URL,就可以按照[這裏]中所述生成Java存根類(http://pushpalankajaya.blogspot.com.es/2011/03/how-to-convert-wsdl-to- java.html)並在客戶端中使用它們來使用Web服務。 對於任何其他語言,您應該找到一種類似的方法來根據WSDL服務描述生成存根,這取決於您使用的語言和工具。雖然您可以在互聯網上找到許多基於Java的WSO2教程,文檔和示例,但您擔心的是其他語言。 – user8658912 2013-03-26 16:58:49

+0

感謝您的回覆,我認爲您誤解了我的目的,在本教程中我設置了一個代理webservice,它在調用之前需要進行身份驗證,我擔心的是身份驗證,如何執行身份驗證,似乎我需要目標用戶名和密碼的東西,在這裏還沒有一個明確的觀點 – Shore 2013-03-26 23:31:10