web service faultString: (401)Unauthorized
web service 安全性-----Tomcat级
|
1.tomcat 修改tomcat-users.xml Web应用的基本认证是建立在J2EE角色和用户的基础之上,首先在Tomcat角色配置文件中增加一个角色和一个帐号。 <?xml version='1.0' encoding='utf-8'?>
2. 修改tomcat 的server.xml 打开Tomcat_Home\conf\server.xml配置文件,在GlobalNamingResources中添加以下描述: <GlobalNamingResources> 或 <!-- Global JNDI resources --> <!-- Test entry for demonstration purposes --> <!-- Editable user database that can also be used by </GlobalNamingResources> 3.修改web.xml <security-constraint>
<web-resource-collection>
<web-resource-name>Tax Web service </web-resource-name>
<url-pattern>/services/personTaxService</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>axis</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>axis</role-name>
</security-role>
4.服务端 package com.service; public class PersonTaxService {
final double base=1200;//所得税上缴基数。
public double getTax(double salary)
{
double tax_salary=salary-base;
double tax=0.0d;//计算后的所得税。
if(0>tax_salary) tax=0;
else if(0<tax_salary&&tax_salary <=500) tax=tax_salary*0.05-0;
else if(500<tax_salary&&tax_salary<=2000) tax=tax_salary*0.10-25;
else tax = tax_salary*0.2;
return tax;
}
}
server-config.wsdd <deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java"> <handler type="java:org.apache.axis.handlers.http.URLMapper" name="URLMapper"/> <service name="myService" provider="java:RPC"> <parameter name="className" value="com.service.MyService"/> <parameter name="allowedMethods" value="sayHello"/> </service> <service name="personTaxService" provider="java:RPC"> <parameter name="className" value="com.service.PersonTaxService"/> <parameter name="allowedMethods" value="getTax"/> </service> <transport name="http"> <requestFlow> <handler type="URLMapper"/> </requestFlow> </transport> </deployment> 5.客户端 package com.client; import javax.xml.namespace.QName; import javax.xml.rpc.ParameterMode; import org.apache.axis.client.Call; import org.apache.axis.client.Service; import org.apache.axis.encoding.XMLType; public class PersonTaxClient {
static final double salary=5000;
public static void main(String [] args)
{
try {
// 服务端的url,需要根据情况更改。
String endpointURL = "http://localhost:8080/AxisTest/services/personTaxService?wsdl";// Web服务端点地址
Service service = new Service();
Call call = (Call) service.createCall();
call.setTargetEndpointAddress( new java.net.URL(endpointURL) );
call.setOperationName("getTax");// 设置操作的名称。
// 由于需要认证,故需要设置调用的用户名和密码。
call.getMessageContext().setUsername("axis");// 设置用户名。
call.getMessageContext().setPassword("axis");// 设置密码
call.addParameter( "op1", XMLType.XSD_DOUBLE, ParameterMode.IN );// 参数的类型
call.setReturnType( XMLType.XSD_DOUBLE );// 返回的数据类型
Double ret = (Double) call.invoke( new Object [] { new Double(salary) });// 执行调用
System.out.println("使用HTTP协议来作为Web服务的传输协议!");
System.out.println("已经成功调用。请参看服务端的输出!");
System.out.println("输入工资"+salary+"元,应交个人所得税:"+ret);
}catch(Exception e){
e.printStackTrace();
}
}
} 如果用户名或密码出错, 则: AxisFault
faultCode: {http://xml.apache.org/axis/}HTTP
faultSubcode:
faultString: (401)Unauthorized
faultActor:
faultNode:
faultDetail:
{}:return code: 401
<html><head><title>Apache Tomcat/5.5.25 - Error report</title><style><!--H1 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:22px;} H2 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:16px;} H3 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:14px;} BODY {font-family:Tahoma,Arial,sans-serif;color:black;background-color:white;} B {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;} P {font-family:Tahoma,Arial,sans-serif;background:white;color:black;font-size:12px;}A {color : black;}A.name {color : black;}HR {color : #525D76;}--></style> </head><body><h1>HTTP Status 401 - </h1><HR size="1" noshade="noshade"><p><b>type</b> Status report</p><p><b>message</b> <u></u></p><p><b>description</b> <u>This request requires HTTP authentication ().</u></p><HR size="1" noshade="noshade"><h3>Apache Tomcat/5.5.25</h3></body></html>
{http://xml.apache.org/axis/}HttpErrorCode:401
(401)Unauthorized at org.apache.axis.transport.http.HTTPSender.readFromSocket(HTTPSender.java:744) at org.apache.axis.transport.http.HTTPSender.invoke(HTTPSender.java:144) at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32) at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118) at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83) at org.apache.axis.client.AxisClient.invoke(AxisClient.java:165) at org.apache.axis.client.Call.invokeEngine(Call.java:2784) at org.apache.axis.client.Call.invoke(Call.java:2767) at org.apache.axis.client.Call.invoke(Call.java:2443) at org.apache.axis.client.Call.invoke(Call.java:2366) at org.apache.axis.client.Call.invoke(Call.java:1812) at com.client.PersonTaxClient.main(PersonTaxClient.java:28) |
本文详细介绍了如何在Tomcat环境下为Web服务添加安全性,包括修改配置文件、实现用户认证、权限控制及客户端调用过程。通过实例演示了如何通过基本认证确保Web服务的安全访问。
2万+

被折叠的 条评论
为什么被折叠?



