Я пытаюсь создать клиент стороннего WS. Мое приложение работает на JBoss AS 6 (с его стеком Apache CXF 2.3.1). Я создал код клиента wsconsume (wsdl2java). Когда я попытался подключиться к WS, возникло исключение:
No assertion builder for type http://schemas.microsoft.com/ws/06/2004/policy/http}BasicAuthentication registered. 
Exception in thread "main" org.apache.cxf.ws.policy.PolicyException: None of the policy alternatives can be satisfied.
Аутентификационная часть WSDL выглядит следующим образом:
<wsp:Policy wsu:Id="abc_ssl_policy">
    <wsp:ExactlyOne>
        <wsp:All>
            <http:BasicAuthentication
                xmlns:http="http://schemas.microsoft.com/ws/06/2004/policy/http" />
            <sp:TransportBinding
                xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
                <wsp:Policy>
                    <sp:TransportToken>
                        <wsp:Policy>
                            <sp:HttpsToken RequireClientCertificate="false" />
                        </wsp:Policy>
                    </sp:TransportToken>
                    <sp:AlgorithmSuite>
                        <wsp:Policy>
                            <sp:Basic256 />
                        </wsp:Policy>
                    </sp:AlgorithmSuite>
                    <sp:Layout>
                        <wsp:Policy>
                            <sp:Strict />
                        </wsp:Policy>
                    </sp:Layout>
                </wsp:Policy>
            </sp:TransportBinding>
        </wsp:All>
    </wsp:ExactlyOne>
</wsp:Policy>
Клиентский код:
@WebServiceClient(name = "Abc", 
              wsdlLocation = "https://hiddendomain.com/abc/abc.svc?wsdl",
              targetNamespace = "http://tempuri.org/")                  
public class Abc extends Service {
public final static URL WSDL_LOCATION;
public final static QName SERVICE = new QName("http://tempuri.org/", "Abc");
public final static QName AbcSsl = new QName("http://tempuri.org/", "abc_ssl");
static {
    Authenticator.setDefault(new Authenticator() {
        @Override
        protected PasswordAuthentication getPasswordAuthentication() {
            return new PasswordAuthentication("user", "pas".toCharArray());
        }
    });
    URL url = null;
    try {
        url = new URL("https://hiddendomain.com/abc/abc.svc?wsdl");
    } catch (MalformedURLException e) {
        java.util.logging.Logger.getLogger(DistrInfo.class.getName())
            .log(java.util.logging.Level.INFO, 
                 "Can not initialize the default wsdl from {0}", "...");
    }
    WSDL_LOCATION = url;
}
Исключение бросается, я пытаюсь получить Conduit:
    Client client = ClientProxy.getClient(port);
    HTTPConduit con = (HTTPConduit) client.getConduit(); <- exception
Я подозреваю, что это связано с нестандартной политикой MS и мне нужен правильный Intercerptor для обработки этой политики, но может ли кто-нибудь показать мне способ, как это сделать?
Я даже не знаю, где я должен поставить свои учетные данные HTTPS на auth (я не могу получить канал)