웹 서비스 액세스를 위해 기본 인증 사용
클라이언트 애플리케이션이 웹 서비스에 액세스하도록 기본 인증을 구성할 수 있습니다.
이 태스크 정보
기본 인증으로 웹 서비스 클라이언트 애플리케이션을 사용하여 보호된 웹 서비스 자원에 액세스해야 하는 경우, 클라이언트는 서비스 제공자와 통신할 때 요청에서 사용자 이름과 비밀번호를 제공해야 합니다.
프로시저
- server.xml 파일에서 jaxws-2.2, servlet-3.0(또는 servlet-3.1)
및 appSecurity-2.0 기능을 사용하도록 설정하십시오.
<featureManager> <feature>jaxws-2.2</feature> <feature>servlet-3.0</feature> <feature>appSecurity-2.0</feature> </featureManager>
- server.xml 파일에서 로그인 영역을 구성하고
영역을 서비스 제공자에 바인드하십시오.
<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>
- 웹 서비스 엔드포인트를 지정하여 서비스 제공자를
구성하십시오.
- 웹 서비스를 작성하십시오.
@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 { ... }
- 서비스 제공자에 대해 ibm-ws-bnd.xml 파일을
구성하십시오.
<?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>
참고:- ibm-ws-bnd.xml 파일은 웹 애플리케이션의 /WEB-INF 디렉토리나 EJB 기반 웹 서비스 애플리케이션(JAR 아카이브)의 /META-INF 디렉토리에 있어야 합니다.
- ibm-ws-bnd.xml 파일의 login-config 요소는 EJB 기반 웹 서비스 애플리케이션(JAR 아카이브)에서만 적용됩니다. 웹 애플리케이션의 경우 login-config 요소는 무시되고 web.xml 파일에 있는 동일 요소의 값이 사용됩니다.
- 웹 서비스를 작성하십시오.
- 웹 서비스 엔드포인트를 지정하여 서비스 클라이언트를
구성하십시오. 예를 들어, 클라이언트 애플리케이션은 이름이 TransportSecurityClient.war인
웹 이름 지정된 애플리케이션입니다.
- server.xml 파일에서 클라이언트 애플리케이션을 구성하십시오.
<application id="TransportSecurityClient" name="TransportSecurityClient" location="TransportSecurityClient.war" context="TransportSecurityClient" type="war" />
- 클라이언트 애플리케이션에 대해 web.xml 파일을 구성하십시오.
<?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 service reference binding--> <service-ref name="service/SayHelloPojoService"> <port name="SayHelloPojoPort" namespace="http://ibm.com/ws/jaxws/transport/security/" username="employee1" password="{xor}OjIvbi8oOw==" /> </service-ref> <!-- Stateless service reference binding--> <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>
참고:- ibm-ws-bnd.xml 파일은 클라이언트 웹 애플리케이션의 /WEB-INF 디렉토리에 있어야 합니다.
- username 및 password 속성의 값은 server.xml 파일에서 basicRegistry 요소의 사용자 이름 및 비밀번호와 일치해야 합니다. 비밀번호는 securityUtility 명령을 사용하여 암호화할 수 있습니다.
- 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 {...}
- 웹 서비스를 서블릿에 삽입하기 위해 @WebServiceRef
어노테이션을 사용하십시오(예: TestJaxWsTransportSecurityServlet).
@WebServiceRef(name = "service/SayHelloPojoService") SayHelloPojoService pojoService; @WebServiceRef(name = "service/SayHelloStatelessService") SayHelloStatelessService statelessService;
- server.xml 파일에서 클라이언트 애플리케이션을 구성하십시오.
관련 참조:


http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-libcore-mp&topic=twlp_sec_ws_basicauth
파일 이름: twlp_sec_ws_basicauth.html