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
- 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>
- 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>
- Konfigurieren Sie den Service-Provider, indem Sie die Web-Service-Endpunkte angeben.
- 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 { ... }
- 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.
- Erstellen Sie Web-Services.
- Konfigurieren Sie den Service-Client, indem Sie die Web-Service-Endpunkte angeben.
Beispielsweise ist die Clientanwendung eine Webanwendung mit dem Namen
TransportSecurityClient.war.
- Konfigurieren Sie die Clientanwendung in der Datei
server.xml.
<application id="TransportSecurityClient" name="TransportSecurityClient" location="TransportSecurityClient.war" context-root="TransportSecurityClient" type="war" />
- 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.
- 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 {...}
- 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;
- Konfigurieren Sie die Clientanwendung in der Datei
server.xml.
Zugehörige Verweise:


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