Basisauthentifizierung für Web-Service-Zugriff festlegen

Sie können die Basisauthentifizierung konfigurieren, damit Ihre Clientanwendungen auf Web-Services zugreifen können.

Informationen zu diesem Vorgang

Wenn Sie für den Zugriff auf die gesicherten Web-Service-Ressourcen die Web-Service-Clientanwendung mit der Basisauthentifizierung verwenden müssen, muss der Client den Benutzernamen und das Kennwort in der Anforderung angeben, wenn er mit dem Service-Provider kommuniziert.

Vorgehensweise

  1. Aktivieren Sie die Features jaxws-2.2, servlet-3.0 (oder servlet-3.1) und appSecurity-2.0 in der Datei server.xml.
    <featureManager> 
      <feature>jaxws-2.2</feature>
      <feature>servlet-3.0</feature>
      <feature>appSecurity-2.0</feature>
    </featureManager>
  2. Konfigurieren Sie den Anmelderealm in der Datei server.xml und binden Sie den Realm an den Service-Provider.
    <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. Konfigurieren Sie den Service-Provider, indem Sie die Web-Service-Endpunkte angeben.
    1. Erstellen Sie Web-Services.
      @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. Konfigurieren Sie die Datei ibm-ws-bnd.xml für den Service-Provider.
      <?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: Basic authentication -->
      			<login-config id="LoginConfig">
      				<auth-method>BASIC</auth-method>
      				<realm-name>Authentication</realm-name>
      			</login-config> 
      		</webservice-security>
      	</http-publishing>
      </webservices-bnd>
      Anmerkung:
      • Die Datei ibm-ws-bnd.xml muss im Verzeichnis /WEB-INF einer Webanwendung oder im Verzeichnis /META-INF einer EJB-basierten Web-Service-Anwendung (JAR-Archiv) enthalten sein.
      • Das Element login-config in der Datei ibm-ws-bnd.xml ist nur in einer EJB-basierten Web-Service-Anwendung (JAR-Archiv) wirksam. Für Webanwendungen wird das Element login-config ignoriert und der Wert des entsprechenden Elements in der Datei web.xml verwendet.
  4. Konfigurieren Sie den Service-Client, indem Sie die Web-Service-Endpunkte angeben. Beispielsweise ist die Clientanwendung eine Webanwendung mit dem Namen TransportSecurityClient.war.
    1. Konfigurieren Sie die Clientanwendung in der Datei server.xml.
      <application id="TransportSecurityClient" name="TransportSecurityClient" 
      				location="TransportSecurityClient.war"
      		context-root="TransportSecurityClient" type="war" />
    2. Konfigurieren Sie die Datei ibm-ws-bnd.xml für die Clientanwendung.
      <?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">
      	<!-- POJO-Servicereferenzbindung -->
      	<service-ref name="service/SayHelloPojoService">
      				<port name="SayHelloPojoPort" 
      								namespace="http://ibm.com/ws/jaxws/transport/security/"
      								username="employee1"
      								password="{xor}OjIvbi8oOw=="
      				/>
      	</service-ref>
      	<!-- Statusunabhängige Servicereferenzbindung -->
      	<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>
      Anmerkung:
      • Die Datei ibm-ws-bnd.xml muss sich im Verzeichnis /WEB-INF der Client-Web-Anwendung befinden.
      • Die Werte der Attribute username und password müssen mit dem Benutzernamen und Kennwort des Elements basicRegistry in der Datei server.xml übereinstimmen. Das Kennwort kann mit dem Befehl securityUtility verschlüsselt werden.
    3. Generieren Sie die Client-Stubs über die WSDL-Position.
      @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. Verwenden Sie die Annotation @WebServiceRef, um den Web-Service in das Servlet einzufügen. Beispiel: TestJaxWsTransportSecurityServlet.
      @WebServiceRef(name = "service/SayHelloPojoService")
      SayHelloPojoService pojoService;
      
      @WebServiceRef(name = "service/SayHelloStatelessService")
      SayHelloStatelessService statelessService;

Symbol das den Typ des Artikels anzeigt. Taskartikel



Symbol für Zeitmarke Letzte Aktualisierung: 01.12.2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-libcore-mp&topic=twlp_sec_ws_basicauth
Dateiname: twlp_sec_ws_basicauth.html