WebService系列:为WebService添加安全性

二月 10, 2009 in Oracle 融合中间件

 

 

为了保证发布到外网的Web Services不被非法使用,在调用Web Services之前需要进行必要的安全验证。

如前面文章中发布的GreetingWords的Web Service,希望只有授权的用户才具备调用它的权限,

虽然它的wsdl描述文件可以被任何人查看,但是如果不具备相应权限的人则无法通过调用它返回有用的信息。

 

一、设置Web Service安全性认证

 

为了实现这样的功能,按照向导在JDeveloper创建完Web Services后,添加验证信息,步骤如下:

  1. 选择端口,并保证使用“Text Password”验证选项
  2. 左边选择安全下的验证菜单,设置如下图的选项
  3. 从新发布Web Service

 

12.secure_web_service

 

选中 Security 项,并选择GreetingWordsSoapHttpPort,按照下图设置选项

13.secure_web_service_security

 

选择 Security–>Authentication 项,右边选择GreetingWordsSoapHttpPort,按照下图进行选项的设置

14.secure_web_service_authentication

 

 

二、测试Web Service

 

上面添加了Web Service的安全性认证发布之后,在浏览器中输入wsdl的端口地址,如:

http://aronezhang:8888/aronehome/GreetingWordsSoapHttpPort

浏览器显示Web Service的测试页面,输入参数,点击Invoke按钮调用Web Services

21.test_secure_ws

 

Web Services执行返回错误,错误代码为:wsse:InvalidSecurity,错误消息为:Missing <wsse:Security> in SOAP Header

这个错误是由于已发布的Web Services添加了安全验证,而调用的时候没有把相关的验证信息发送给它,导致SOAP Header没有包括安全验证需要的信息。

 

我们可以通过测试页面的功能查看到这个时候发送给服务器的消息是:

1
2
3
4
 
 
 
            aronehome

从发送的消息可以看到,没有任何安全验证的信息。

重新测试Web Service,在测试页面中选择WS-Security部分的Include In Header选项,然后输入上面OC4J的中定义的用户信息,并输入调用参数,如下图:

22.test_secure_ws_security

1
2
3
4
5
6
7
8
9
10
11
12
 
 
 
 
	      aronehome
	      aronehome
 
 
 
 
 
            aronehome

上面的提交消息中,SOAP Header部分包括了安全验证的信息,提交之后还是报如下的错误信息:

1
2
3
4
5
6
 
 
 
 
   wsse:FailedAuthentication
   The security token could not be authenticated or authorized

 

虽然我们提供了WS安全认证的用户信息,但是执行还是没有成功,这是由于提供的用户认证信息不正确,

后面的文章中将描述如何来通过OC4J提供安全性认证信息。

 

 

相关文章:

  1. WebService系列:将PL/SQL功能发布为Web Service到OC4J
  2. WebService系列:PL/SQL调用Web Service(Web Service Callout)
  3. WebService系列:OC4J安全性提供程序
  4. WebService系列:创建PL/SQL复合式数据类型Web Services
  5. WebService系列:Office VBA调用Web Service
  6. WebService系列:Office VBA调用已安全性认证的Web Service
  7. WebService系列:问题处理(Troubleshooting)
  8. 使用Bpel调用IREP中发布的Web Service

0 responses to WebService系列:为WebService添加安全性

Leave a reply

You must be logged in to post a comment.