Рубрики
Без рубрики

Аутентификация контейнера с помощью JAX-WS – (версия Tomcat)

– Аутентификация контейнера с помощью JAX-WS – (версия Tomcat)

В этой статье мы покажем вам, как реализовать аутентификацию контейнера с помощью JAX-WS в Tomcat 6.0. Таким образом, аутентификация является декларативной, а не программной, как это – аутентификация приложения в JAX-WS . И Tomcat реализуют аутентификацию контейнера через область безопасности .

В конце этой статьи развернутая веб-служба будет аутентифицировать пользователя на основе данных аутентификации, хранящихся в Tomcat conf/tomcat-users.xml файл.

1. Веб-сервис

Создайте простой стиль JAX-WS, RPC.

Файл: UserProfile.java

package com.mkyong.ws;

import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
import javax.jws.soap.SOAPBinding.Style;

//Service Endpoint Interface
@WebService
@SOAPBinding(style = Style.RPC)
public interface UserProfile{
	
	@WebMethod
	String getUserName();
	
}

Файл: UserProfileImpl.java

package com.mkyong.ws;

import javax.jws.WebService;

//Service Implementation Bean
@WebService(endpointInterface = "com.mkyong.ws.UserProfile")
public class UserProfileImpl implements UserProfile{

	@Override
	public String getUserName() {
		
		return "getUserName() : returned value";
		
	}

}

2. Файл: UserProfileImpl.java

Настройте роль безопасности “оператор”, сделайте URL-адрес “/пользователь” обязательным для базовой аутентификации http. Смотрите ниже web.xml файл, не требующий пояснений.

Файл: web.xml






    //...
    
     	Normal operator user
     	operator
   	

	
      	
        	Operator Roles Security
        	/user
      	

      	
        	operator
      	
      	
          	NONE
      	
   	

	
      	BASIC
   	

    
        user
        /user
    
    //...


    CONFIDENTIAL

Смотрите эту статью – Сделайте Tomcat для поддержки SSL или https-соединения

3. Пользователи Tomcat

Добавьте новую роль, имя пользователя и пароль в $Tomcat/conf/tomcat-users.xml файл. В этом случае добавьте нового пользователя “mkyong”, “123456” и прикрепите его к роли с именем “оператор”.

Файл: $Tomcat/conf/tomcat-users.xml



  
  
  
  
  

4. Царство котов

Настройте область безопасности в $Tomcat/conf/server.xml файл. В этом случае используется значение по умолчанию UserDatabaseRealm для чтения информации об аутентификации в $Tomcat/conf/tomcat-users.xml .

Файл: $Tomcat/conf/server.xml

  

    
  
  
  

5. Развертывание веб-службы JAX-WS на Tomcat

Смотрите это подробное руководство по как развернуть веб-службы JAX-WS на Tomcat .

6. Тестирование

Теперь для любого доступа к развернутой веб-службе требуется аутентификация по имени пользователя и паролю, см. Рисунок: URL-АДРЕС: http://localhost:8080/WebServiceExample/пользователь

7. Клиент веб-сервиса

Чтобы получить доступ к развернутой веб-службе, привяжите правильное имя пользователя и пароль следующим образом:

    UserProfile port = service.getPort(UserProfile.class);
    BindingProvider bp = (BindingProvider) port;
    bp.getRequestContext().put(BindingProvider.USERNAME_PROPERTY, "mkyong");
    bp.getRequestContext().put(BindingProvider.PASSWORD_PROPERTY, "123456");

Файл: WsClient.java

package com.mkyong.client;

import java.net.URL;
import javax.xml.namespace.QName;
import javax.xml.ws.BindingProvider;
import javax.xml.ws.Service;

import com.mkyong.ws.UserProfile;

public class WsClient{

        //can't parse wsdl "http://localhost:8080/WebServiceExample/user.wsdl" directly
	//save it as local file, and parse it
	private static final String WS_URL = "file:c://user.wsdl";
		
	public static void main(String[] args) throws Exception {
	   
	URL url = new URL(WS_URL);
        QName qname = new QName("http://ws.mkyong.com/", "UserProfileImplService");

        Service service = Service.create(url, qname);
        UserProfile port = service.getPort(UserProfile.class);
        
        //add username and password for container authentication
        BindingProvider bp = (BindingProvider) port;
        bp.getRequestContext().put(BindingProvider.USERNAME_PROPERTY, "mkyong");
        bp.getRequestContext().put(BindingProvider.PASSWORD_PROPERTY, "123456");

        System.out.println(port.getUserName());
       
    }

}

выход

getUserName() : returned value
Exception in thread "main" com.sun.xml.internal.ws.client.ClientTransportException: 
	request requires HTTP authentication: Unauthorized

Сделано.

Скачать Исходный Код

Ссылка

  1. Царство котов КАК ТО
  2. Пример: Обычная аутентификация с помощью JAX-WS
  3. БАЗОВАЯ аутентификация SSL и HTTP с помощью Glassfish и JAX-WS

Оригинал: “https://mkyong.com/webservices/jax-ws/container-authentication-with-jax-ws-tomcat/”