Habilitación de la autenticación básica para acceder a los servicios web

Puede configurar la autenticación básica para que las aplicaciones cliente accedan a los servicios web.

Acerca de esta tarea

Si tiene que utilizar la aplicación cliente de servicio web con la autenticación básica para acceder a los recursos de servicio web protegidos, el cliente debe proporcionar el nombre de usuario y la contraseña en la solicitud al comunicarse con el proveedor de servicios.

Procedimiento

  1. Habilite las características jaxws-2.2, servlet-3.0 (o servlet-3.1) y appSecurity-2.0 en el archivo server.xml.
    <featureManager>
      <feature>jaxws-2.2</feature>
      <feature>servlet-3.0</feature>
      <feature>appSecurity-2.0</feature>
    </featureManager>
  2. Configure el reino de inicio de sesión en el archivo server.xml y enlace el reino al proveedor de servicios.
    <application id="TransportSecurityProvider" name="TransportSecurityProvider"
                 location="TransportSecurityProvider.war" type="ear">
            <application-bnd>
                <security-role name="Employee">
                    <user name="employee0" />
                    <group name="employeeGroup" />
                </security-role>        
                <security-role name="Manager">
                    <user name="manager0" />
                </security-role>
                <security-role name="AllAuthenticated">
                    <special-subject type="ALL_AUTHENTICATED_USERS" />
                </security-role>
            </application-bnd>
        </application>
        
        <basicRegistry id="basic" realm="BasicRealm">
            <user name="employee0" password="emp0pwd" />
            <user name="employee1" password="emp1pwd" />
            <user name="manager0" password="mgr0pwd" />
            <group name="employeeGroup">
                <member name="employee0" />
                <member name="employee1" />
            </group>
        </basicRegistry>   
  3. Configure el proveedor de servicios especificando los puntos finales de servicio web.
    1. Cree los servicios web.
      @WebService(serviceName = "SayHelloPojoService",
                  portName = "SayHelloPojoPort")
      public class SayHelloPojoService implements SayHelloService {
      	...
      }
      
      @WebService(serviceName = "SayHelloStatelessService",
                  portName = "SayHelloStatelessPort",
                  endpointInterface = "com.ibm.ws.jaxws.transport.server.security.SayHelloService")
      @Stateless(name = "SayHelloSessionBean")
      public class SayHelloStatelessService implements SayHelloLocal {
      	...
      }
    2. Configure el archivo ibm-ws-bnd.xml del proveedor de servicios.
      <?xml version="1.0" encoding="UTF-8"?>
      <webservices-bnd xmlns="http://websphere.ibm.com/xml/ns/javaee" 
      		xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
      		xsi:schemaLocation="http://websphere.ibm.com/xml/ns/javaee http://websphere.ibm.com/xml/ns/javaee/ibm-ws-bnd_1_0.xsd " 
      		version="1.0">
      	<http-publishing>
      		<webservice-security> 
      			<security-constraint>
      				<web-resource-collection>
      					<web-resource-name>Only Managers</web-resource-name>
      					<url-pattern>/manager/*</url-pattern>
      					<http-method>GET</http-method>
      					<http-method>POST</http-method>
      				</web-resource-collection>
      				<auth-constraint id="AuthConstraint_manager">
      					<role-name>Manager</role-name>
      				</auth-constraint>
      			</security-constraint>
      			<security-constraint>
      				<web-resource-collection>
      					<web-resource-name>Employees</web-resource-name>
      					<url-pattern>/employee/*</url-pattern>
      					<http-method>GET</http-method>
      					<http-method>POST</http-method>
      				</web-resource-collection>
      				<auth-constraint id="AuthConstraint_employee">
      					<role-name>Employee</role-name>
      				</auth-constraint>
      			</security-constraint>
      			<!-- SECURITY ROLES -->
      			<security-role id="Staff">
      				<role-name>Employee</role-name>
      				<role-name>Manager</role-name>
      			</security-role>
      			<!-- AUTHENTICATION METHOD: Autenticación básica -->
      			<login-config id="LoginConfig">
      				<auth-method>BASIC</auth-method>
      				<realm-name>Authentication</realm-name>
      			</login-config>                    
      		</webservice-security>
      	</http-publishing>
      </webservices-bnd>
      Nota:
      • El archivo ibm-ws-bnd.xml debe estar en el directorio /WEB-INF de aplicaciones web o en el directorio /META-INF de aplicaciones de servicio web basadas en EJB (archivado JAR).
      • El elemento login-config del archivo ibm-ws-bnd.xml surte efecto solo en una aplicación de servicio web basada en EJB (archivado JAR). Para las aplicación web, se pasa por alto el elemento login-config y se utiliza el valor del mismo elemento del archivo web.xml.
  4. Configure el cliente de servicio especificando los puntos finales de servicio web. Por ejemplo, la aplicación cliente es una aplicación web denominada TransportSecurityClient.war.
    1. Configure la aplicación cliente en el archivo server.xml.
      <application id="TransportSecurityClient" name="TransportSecurityClient" 
      		location="TransportSecurityClient.war"
      		context-root="TransportSecurityClient" type="war" />
    2. Configure el archivo ibm-ws-bnd.xml para la aplicación cliente.
      <?xml version="1.0" encoding="UTF-8"?>
      <webservices-bnd xmlns="http://websphere.ibm.com/xml/ns/javaee" 
      		xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
      		xsi:schemaLocation="http://websphere.ibm.com/xml/ns/javaee http://websphere.ibm.com/xml/ns/javaee/ibm-ws-bnd_1_0.xsd "
      		version="1.0">
      	<!-- Enlace de referencia de servicio POJO-->
      	<service-ref name="service/SayHelloPojoService">
      		<port name="SayHelloPojoPort" 
      				namespace="http://ibm.com/ws/jaxws/transport/security/"
      				username="employee1"
      				password="{xor}OjIvbi8oOw=="
      				/>
      	</service-ref>
      	<!-- Enlace de referencia de servicio sin estado-->
      	<service-ref name="service/SayHelloStatelessService">
      		<port name="SayHelloStatelessPort" 
      				namespace="http://ibm.com/ws/jaxws/transport/security/"
      				username="employee1"
      				password="{xor}OjIvbi8oOw=="
      				/>
      	</service-ref>
      </webservices-bnd>
      Nota:
      • El archivo ibm-ws-bnd.xml debe estar en el directorio /WEB-INF de la aplicación web cliente.
      • Los valores de los atributos username y password deben coincidir con el nombre de usuario y contraseña del elemento basicRegistry del archivo server.xml. Se puede codificar la contraseña mediante el mandato securityUtility.
    3. Genere los apéndices de cliente mediante la ubicación wsdl.
      @WebServiceClient(name = "SayHelloPojoService",
                        targetNamespace = "http://ibm.com/ws/jaxws/transport/security/",
                        wsdlLocation = "https://localhost:8020/TransportSecurityProvider/unauthorized/employPojoService?wsdl")
      public class SayHelloPojoService
                      extends Service
      {...}
      
      @WebServiceClient(name = "SayHelloStatelessService",
          targetNamespace = "http://ibm.com/ws/jaxws/transport/security/",
          wsdlLocation = "https://localhost:8020/TransportSecurityProvider/unauthorized/EmployStatelessService?wsdl")
      public class SayHelloStatelessService
                      extends Service
      {...}
    4. Utilice la anotación @WebServiceRef para introducir el servicio web en el servlet. Por ejemplo, TestJaxWsTransportSecurityServlet.
      @WebServiceRef(name = "service/SayHelloPojoService")
      SayHelloPojoService pojoService;
      
      @WebServiceRef(name = "service/SayHelloStatelessService")
      SayHelloStatelessService statelessService;

Icono que indica el tipo de tema Tema de tarea

Nombre de archivo: twlp_sec_ws_basicauth.html