webService驗證客戶端(HTTP Basic認證)

1. 修改web.xmlweb

在web.xml中添加以下配置:瀏覽器

<security-role>
  <description>Normal operator user</description>
  <role-name>WsOperator</role-name>
</security-role>
<security-constraint>
  <web-resource-collection>
    <web-resource-name>AxisServlet</web-resource-name>
    <url-pattern>/services/*</url-pattern>
  </web-resource-collection>
  <auth-constraint>
    <role-name>WsOperator</role-name>
  </auth-constraint>
</security-constraint>
<login-config>
  <auth-method>BASIC</auth-method>
</login-config>

其中<web-resource-name>與已配置的<servlet-name>「AxisServlet」保持一致 <url-pattern>配置須要驗證的url,/services/* 表示services下的全部請求都要驗證 <role-name>配置有權訪問此webService資源的角色 <auth-method>配置服務器端的驗證模式tomcat

2. 修改tomcat配置服務器

在${TOMCAT_HOME}/conf/tomcat-users.xml中添加以下配置:url

<role rolename="WsOperator"/>  
<user username="test" password="test" roles="WsOperator"/>

web.xml中的<role-name>與此處的rolename保持一致 啓動tomcat,在瀏覽器地址欄中打開webService,會彈出basic驗證框 身份驗證提示框code

輸入正確的用戶名和密碼便可正常訪問 webService描述頁面orm

3. 客戶端調用xml

將webService資源設置爲basic驗證後,客戶端直接調用會報401(無權限)錯誤,須要在客戶端發起遠程調用時設置服務器訪問用戶名及密碼。 使用axis調用方式添加如下代碼:ip

call.setProperty(Call.USERNAME_PROPERTY, "test"); 
call.setProperty(Call.PASSWORD_PROPERTY, "test");

若使用RPC遠程調用方式添加如下代碼便可:資源

options = serviceClient.getOptions();
HttpTransportProperties.Authenticator basicauth = new HttpTransportProperties.Authenticator();
basicauth.setUsername("test");  //服務器訪問用戶名   
basicauth.setPassword("test"); //服務器訪問密碼  
options.setProperty(HTTPConstants.AUTHENTICATE, basicauth);
相關文章
相關標籤/搜索