2013-03-26 52 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