WebService发布basic auth验证以及测试连接

原创
2016/11/25 19:44
阅读数 765

1. 发布Basic Author 认证#

就是在web.xml里面添加如下代码
/services/* 是路径
role1 是tomcat 下conf/tomcat-users.xml下的用户
<security-constraint>
                   <web-resource-collection>
                            <web-resource-name>Simple Authenticate Web service</web-resource-name>
                            <url-pattern>/services/*</url-pattern>
                   </web-resource-collection>
                   <auth-constraint>
                            <role-name>role1</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>role1</role-name>
         </security-role>

#2. 效果图如下# 输入图片说明

#3. soapui测试如下# 输入图片说明

#4. axis1的连接代码 eclipse自带可以自动生成# 在BindingStub代码中的

protected org.apache.axis.client.Call createCall()
			throws java.rmi.RemoteException {
		try {
			org.apache.axis.client.Call _call = super._createCall();
			if (super.maintainSessionSet) {
				_call.setMaintainSession(super.maintainSession);
			}
//			if (super.cachedUsername != null) {
//				_call.setUsername(super.cachedUsername);
//			}
//			if (super.cachedPassword != null) {
//				_call.setPassword(super.cachedPassword);
//			}
			//设置用户名密码
			_call.setUsername(GZFZConfig.getValue("username"));
			_call.setPassword(GZFZConfig.getValue("password"));
			
			if (super.cachedEndpoint != null) {
				_call.setTargetEndpointAddress(super.cachedEndpoint);
			}
                        //设置超时的
			if (super.cachedTimeout != null) {
				_call.setTimeout(super.cachedTimeout);
			}
			if (super.cachedPortName != null) {
				_call.setPortName(super.cachedPortName);
			}
			java.util.Enumeration keys = super.cachedProperties.keys();
			while (keys.hasMoreElements()) {
				java.lang.String key = (java.lang.String) keys.nextElement();
				_call.setProperty(key, super.cachedProperties.get(key));
			}
			// All the type mapping information is registered
			// when the first call is made.
			// The type mapping information is actually registered in
			// the TypeMappingRegistry of the service, which
			// is the reason why registration is only needed for the first call.
			synchronized (this) {
				if (firstCall()) {
					// must set encoding style before registering serializers
					_call.setEncodingStyle(null);
					for (int i = 0; i < cachedSerFactories.size(); ++i) {
						java.lang.Class cls = (java.lang.Class) cachedSerClasses
								.get(i);
						javax.xml.namespace.QName qName = (javax.xml.namespace.QName) cachedSerQNames
								.get(i);
						java.lang.Object x = cachedSerFactories.get(i);
						if (x instanceof Class) {
							java.lang.Class sf = (java.lang.Class) cachedSerFactories
									.get(i);
							java.lang.Class df = (java.lang.Class) cachedDeserFactories
									.get(i);
							_call.registerTypeMapping(cls, qName, sf, df, false);
						} else if (x instanceof javax.xml.rpc.encoding.SerializerFactory) {
							org.apache.axis.encoding.SerializerFactory sf = (org.apache.axis.encoding.SerializerFactory) cachedSerFactories
									.get(i);
							org.apache.axis.encoding.DeserializerFactory df = (org.apache.axis.encoding.DeserializerFactory) cachedDeserFactories
									.get(i);
							_call.registerTypeMapping(cls, qName, sf, df, false);
						}
					}
				}
			}
			return _call;
		} catch (java.lang.Throwable _t) {
			throw new org.apache.axis.AxisFault(
					"Failure trying to get the Call object", _t);
		}
	}

#5. axis2的连接代码 可以使用WSDL2Java#

stub = new SI_PersonBusiness_ReqServiceStub(wsdlurl);
				// 认证代码 start
				HttpTransportProperties.Authenticator auth = new HttpTransportProperties.Authenticator();
				auth.setUsername("****");
				auth.setPassword("****");
				stub._getServiceClient().getOptions()
						.setProperty(HTTPConstants.AUTHENTICATE, auth);
展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部