7.4. 수신되는 인증 정보 인증

7.4.1. 개요

서버 측에서는 Apache CXF 런타임에 콜백 처리기를 등록하여 수신된 인증 정보가 정품인지 확인할 수 있습니다. 인증 정보 확인을 수행하기 위해 자체 사용자 지정 코드를 작성하거나 타사 엔터프라이즈 보안 시스템(예: LDAP 서버)과 통합된 콜백 핸들러를 구현할 수 있습니다.

7.4.2. 블루프린트 XML에서 서버 콜백 처리기 구성

클라이언트에서 수신된 UsernameToken 자격 증명을 확인하는 서버 콜백 처리기를 구성하려면 다음과 같이 서버의 블루프린트 XML 구성에 security.callback-handler 속성을 설정합니다.

<beans ... >
    <jaxws:endpoint
       id="UserNameOverTransport"
       address="https://localhost:9001/UserNameOverTransport"
       serviceName="interop:PingService10"
       endpointName="interop:UserNameOverTransport_IPingService"
       implementor="interop.server.UserNameOverTransport"
       depends-on="tls-settings">

       <jaxws:properties>
            <entry key="security.username" value="Alice"/>
            <entry key="security.callback-handler" value="interop.client.UTPasswordCallback"/>
        </jaxws:properties>

    </jaxws:endpoint>
    ...
</beans>

앞의 예에서 콜백 처리기는 UTPasswordCallback 클래스에 의해 구현됩니다.

7.4.3. 암호를 확인하는 콜백 처리기 구현

서버 측에서 암호를 확인하는 콜백 처리기를 구현하려면 javax.security.auth.callback.CallbackHandler 인터페이스를 구현합니다. 서버에 대한 CallbackHandler 인터페이스를 구현하는 일반적인 방법은 클라이언트에 대한 CallbackHandler 를 구현하는 것과 유사합니다. 그러나 서버 측에서 반환된 암호에 제공된 해석은 다릅니다. 그러나 콜백 처리기의 암호는 클라이언트의 자격 증명을 확인하기 위해 수신된 클라이언트 암호와 비교됩니다.

예를 들어 예 7.2. “UsernameToken 암호에 대한 콜백 처리기” 에 표시된 샘플 구현을 사용하여 서버 측에서 암호를 가져올 수 있습니다. 서버 측에서 WSS4J 런타임은 콜백에서 가져온 암호를 수신된 클라이언트 자격 증명의 암호와 비교합니다. 두 암호가 일치하면 인증 정보가 성공적으로 확인됩니다.

서버 콜백 처리기의 보다 비관적인 구현에는 보안 데이터를 저장하는 데 사용되는 타사 데이터베이스와의 통합을 작성하는 작업이 포함됩니다(예: LDAP 서버와의 통합).