time 
设为首页】【收藏本站
当前位置: 主页 > JAVA > Java高级 > 高级编程 > Java webservice security(安全)jax-ws 教程[3]

Java webservice security(安全)jax-ws 教程[3]

时间:2012-11-07 13:38 点击:6763次 字体:[ ]




前言:

在今天的学习中,我们讲开始过渡到一个真正的websecurity例子。

第二天中我们知道了如何使用handler来处理客户端提交上来的用户名与密码,而在今天的学习中,我们将会使用服务端预先配置的用户名与密码来authenticate客户端提交上来的值。

相对于第二天的学习,如果客户端提交的用户名与密码输错,但还是能够与服务端建立http连接来说,第三天中的例子的安全性则更高,当客户端提交上来的用户名与密码错误则更本不可能和服务端建立起有效的http连接。该例子同时适用于一切J2EE AppServer,比如说:IBMWAS, ORACLE WEBLOGIC。

同时,通过该例子将讲述ws-security与相关的ws-policy进而一步步过渡到QoS。

一、配置服务端的相关角色

1.1 配置J2EE AppServer中的相关用户名与密码

打开tomcat下的cnof/tomcat-user.xml文件:

<?xml version='1.0' encoding='utf-8'?>

<tomcat-users>

  <role rolename="operator"/>

  <user username="tomcatws" password="123456" roles="operator"/>

</tomcat-users>

通过上述配置,我们可以知道我们在tomcat中增加了一个角色叫”operator”,同时配置了一个用户叫”tomcatws”密码为”123456”,该用户属于operator角色。

 

1.2 配置web应用中的相关安全角色

 

请打开你工程的web.xml文件,加入下述这段内容:

<security-role>

                   <description>Normal operator user</description>

                   <role-name>operator</role-name>

</security-role>

<security-constraint>

                   <web-resource-collection>

                            <web-resource-name>Operator Roles Security</web-resource-name>

                            <url-pattern>/AuthHelloService</url-pattern>

                   </web-resource-collection>

                   <auth-constraint>

                            <role-name>operator</role-name>

                   </auth-constraint>

                   <user-data-constraint>

                            <transport-guarantee>NONE</transport-guarantee>

                   </user-data-constraint>

</security-constraint>

<login-config>

                   <auth-method>BASIC</auth-method>

</login-config>

这边可以看到,我们把一个WebService的访问置于了web security的保护下,如果需要该问该web资源,服务端需要验证两部分内容:

1)      是否是合法group/role中的用户

2)      由于<auth-method>设置为basic,即客户端要访问相关的web资源时还需要提供用户名与密码

二、 开发我们的webservice

2.1 接口

package ctsjavacoe.ws.fromjava;

import javax.jws.WebMethod;

import javax.jws.WebService;

import javax.jws.soap.SOAPBinding;

import javax.jws.soap.SOAPBinding.Style;

@WebService

@SOAPBinding(style = Style.RPC)

public interface AuthHello {

         @WebMethod

         public String say(String name);

}

2.2 实现

package ctsjavacoe.ws.fromjava;

import javax.jws.WebService;

@WebService(endpointInterface = "ctsjavacoe.ws.fromjava.AuthHello")

public class AuthHelloImpl implements AuthHello {

         @Override

         public String say(String name) {

                   return "hello: " + name;

         }

}

该Web Service没有任何特殊的地方,也没有使用任何的handler,一切都交给了j2ee App容器去做认证

1.4 布署webservice

布署完后,我们访问:http://localhost:8080/JaxWSSample/AuthHelloService?wsdl

看看我们得到了什么:

Java webservice security(安全)jax-ws 教程[3]_www.fengfly.com

 

OK,我们输入tomcatws,密码为123456

然后我们就得到正确的wsdl的输出了,接下来我们用客户端去连服务端。



本文地址 : http://www.fengfly.com/plus/view-210099-1.html
标签: Security java 安全 webservice 教程 JAX-WS
------分隔线----------------------------
最新评论 查看所有评论
发表评论 查看所有评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
验证码:
本栏分类