不管Axis部署在哪种服务器上(Tomcat还是Websphere),它总是以Servlet方式来运行的。所以最简单实现Web服务安全就是通过在Web应用的配置文件(web.xml)来实现访问控制。
J2EE web应用中有多种认证方式:BASIC(基本认证方法)、FORM(基于表单)、DIGEST(消息摘要)和CLIENT-CERT(数字证书)。此处只说明最基本的认证方式。例如在Tomcat配置如下:
1. 首先在Tomcat角色配置文件中增加一个角色和一个帐号。在tomcat-users.xml中增加角色(Tomcat_Home\conf\tomcat-users.xml)。
<?xml version='1.0' encoding='utf-8'?>
<tomcat-users>
…
<role rolename="department-manager"/>
<user username="admin" password="simplewebservices" roles="department-manager"/>
…
</tomcat-users>
2.添加了一个department-manager角色,并在此角色中添加了一个名为hellking的用户。要使tomcat-users.xml中配置的角色和用户生效,需要配置tomcat使用UserDatabaseRealm。打开Tomcat_Home\conf\server.xml配置文件,在GlobalNamingResources中添加以下描述:
<GlobalNamingResources>
<Resource name="UserDatabase" auth="Container"
type="org.apache.catalina.UserDatabase"
description="User database that can be updated and saved">
</Resource>
<ResourceParams name="UserDatabase">
<parameter>
<name>factory</name>
<value>org.apache.catalina.users.MemoryUserDatabaseFactory</value>
</parameter>
<parameter>
<name>pathname</name>
<value>conf/tomcat-users.xml</value>
</parameter>
</ResourceParams>
</GlobalNamingResources>
2. 再web应用的部署描述符中指定Web服务资源的访问控制,如下所示:
<security-constraint>
<web-resource-collection>
<web-resource-name>Tax Web service </web-resource-name>
<url-pattern>/services/PersonalTaxService</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>department-manager</role-name>
</auth-constraint>
</security-constraint>
<login-config>
<auth-method>BASIC</auth-method>
<realm-name>Axis Basic Authentication Area</realm-name>
</login-config>
<security-role>
<role-name>department-manager</role-name>
</security-role>
url-pattern指定了需要通过角色验证的URL样式,在这里是"/services/PersonalTaxService";role-name是能够访问制定URL的角色,这里是department-manager。以上配置的意思是只有角色类型是"department-manager"的用户才能访问URL样式为"/services/PersonalTaxService"Web服务。
3. Axis客户端的编写。
call.getMessageContext().setUsername("hellking");//设置用户名
call.getMessageContext().setPassword("simplewebservices");//设置密码
J2EE web应用中有多种认证方式:BASIC(基本认证方法)、FORM(基于表单)、DIGEST(消息摘要)和CLIENT-CERT(数字证书)。此处只说明最基本的认证方式。例如在Tomcat配置如下:
1. 首先在Tomcat角色配置文件中增加一个角色和一个帐号。在tomcat-users.xml中增加角色(Tomcat_Home\conf\tomcat-users.xml)。
<?xml version='1.0' encoding='utf-8'?>
<tomcat-users>
…
<role rolename="department-manager"/>
<user username="admin" password="simplewebservices" roles="department-manager"/>
…
</tomcat-users>
2.添加了一个department-manager角色,并在此角色中添加了一个名为hellking的用户。要使tomcat-users.xml中配置的角色和用户生效,需要配置tomcat使用UserDatabaseRealm。打开Tomcat_Home\conf\server.xml配置文件,在GlobalNamingResources中添加以下描述:
<GlobalNamingResources>
<Resource name="UserDatabase" auth="Container"
type="org.apache.catalina.UserDatabase"
description="User database that can be updated and saved">
</Resource>
<ResourceParams name="UserDatabase">
<parameter>
<name>factory</name>
<value>org.apache.catalina.users.MemoryUserDatabaseFactory</value>
</parameter>
<parameter>
<name>pathname</name>
<value>conf/tomcat-users.xml</value>
</parameter>
</ResourceParams>
</GlobalNamingResources>
2. 再web应用的部署描述符中指定Web服务资源的访问控制,如下所示:
<security-constraint>
<web-resource-collection>
<web-resource-name>Tax Web service </web-resource-name>
<url-pattern>/services/PersonalTaxService</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>department-manager</role-name>
</auth-constraint>
</security-constraint>
<login-config>
<auth-method>BASIC</auth-method>
<realm-name>Axis Basic Authentication Area</realm-name>
</login-config>
<security-role>
<role-name>department-manager</role-name>
</security-role>
url-pattern指定了需要通过角色验证的URL样式,在这里是"/services/PersonalTaxService";role-name是能够访问制定URL的角色,这里是department-manager。以上配置的意思是只有角色类型是"department-manager"的用户才能访问URL样式为"/services/PersonalTaxService"Web服务。
3. Axis客户端的编写。
call.getMessageContext().setUsername("hellking");//设置用户名
call.getMessageContext().setPassword("simplewebservices");//设置密码