1
import java.util.ArrayList;
import java.util.List;

import javax.swing.plaf.synth.SynthSeparatorUI;
import javax.xml.namespace.QName;
import javax.xml.stream.FactoryConfigurationError;
import javax.xml.stream.XMLOutputFactory;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamWriter;

import org.apache.axiom.om.OMAbstractFactory;
import org.apache.axiom.om.OMElement;
import org.apache.axiom.om.OMFactory;
import org.apache.axiom.om.OMNamespace;
import org.apache.axis2.Constants;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.client.Options;
import org.apache.axis2.client.ServiceClient;
import org.apache.axis2.transport.http.HTTPConstants;
import org.apache.axis2.transport.http.HttpTransportProperties;
import org.apache.commons.httpclient.auth.AuthPolicy;

import com.custom.ntlm.CustomNTLMAuthScheme;


public class TestNTLMAxis {

       public static void main(String[] args) {
             // TODO Auto-generated method stub
             System.out.println("Start of test.");

             String serviceURL = "xxxx";
             String endpointReference = null;

             AuthPolicy.registerAuthScheme(AuthPolicy.NTLM, CustomNTLMAuthScheme.class);

             Options options = new Options();
        options.setTo(new EndpointReference(serviceURL));
        options.setTransportInProtocol(Constants.TRANSPORT_HTTP);
        options.setProperty(HTTPConstants.CHUNKED, Boolean.FALSE);
        options.setProperty(Constants.Configuration.ENABLE_REST, Constants.VALUE_TRUE);
        options.setProperty(HTTPConstants.AUTHENTICATE,Constants.VALUE_TRUE);

        List<String> authSchema = new ArrayList();
        authSchema.add(HttpTransportProperties.Authenticator.NTLM);        
        HttpTransportProperties.Authenticator ntlmAuthentication = new HttpTransportProperties.Authenticator();
        ntlmAuthentication.setAuthSchemes(authSchema);
        ntlmAuthentication.setUsername("xxxxxx");
        ntlmAuthentication.setPassword("xxxxxxx");
        ntlmAuthentication.setHost("xxx.xxx.xxx.xxx");
        ntlmAuthentication.setDomain("mydoamin");   
        ntlmAuthentication.setAllowedRetry(true);

        options.setProperty(org.apache.axis2.transport.http.HTTPConstants.AUTHENTICATE, ntlmAuthentication);
        options.setProperty(Constants.Configuration.HTTP_METHOD, Constants.Configuration.HTTP_METHOD_POST);

        try {

             ServiceClient sender = new ServiceClient();
            sender.engageModule(Constants.MODULE_ADDRESSING);             


            sender.setOptions(options);

            sender.cleanupTransport();

            OMElement result = sender.sendReceive(getPayload());


            XMLStreamWriter writer = XMLOutputFactory.newInstance()
                    .createXMLStreamWriter(System.out);
            result.serialize(writer);
            writer.flush();
        } catch (XMLStreamException e) {
            e.printStackTrace();
        } catch (FactoryConfigurationError e) {
            e.printStackTrace();
        } catch (Exception e) {
             e.printStackTrace();
        }  // I am getting a 415 unsupported media type

我正在尝试连接到受活动目录身份验证保护的端点,我正在使用 Nipuna 博客上建议的 CustomNtlm 调解器,并且我得到了未经授权的 401,我已按照上述博客文章中的所有步骤进行操作。任何人都可以帮助我。

我已经尝试过 Nipuna 博客上指定的代码。我正在尝试发送一条 json 消息,我期待一条 json 响应消息。

https://medium.com/@nipunadilhara/ntlm-authentication-for-wso2-esb-v6-2-0-9584c3e6713

 <class name="com.custom.ntlm.NTLMMediator">
    <property name="username" value="username"/>
    <property name="host" value="xxx.xxx.xxx.xxx"/>
    <property name="ntlmVersion" value="v2"/>
    <property name="domain" value="mydomain"/>
    <property name="password" value="xxxxxxxx"/>
</class>
<log level="full"/>
<class name="com.custom.ntlm.NTLMCalloutMediator">
    <property name="serviceURL" value="http://myhostname:myhostport"/>
    <property name="initAxis2ClientOptions" value="false"/>
</class>
<log level="full"/>
<header action="remove" name="To" scope="default"/>
<log level="full"/>
<property name="RESPONSE" scope="default" type="STRING" value="true"/>
<property action="remove" name="NO_ENTITY_BODY" scope="axis2"/>
<send/>

 <class name="com.custom.ntlm.NTLMMediator">
    <property name="username" value="username"/>
    <property name="host" value="xxx.xxx.xxx.xxx"/>
    <property name="ntlmVersion" value="v2"/>
    <property name="domain" value="mydomain"/>
    <property name="password" value="xxxxxxxx"/>
</class>
<log level="full"/>
<class name="com.custom.ntlm.NTLMCalloutMediator">
    <property name="serviceURL" value="http://myhostname:myhostport"/>
    <property name="initAxis2ClientOptions" value="false"/>
</class>
<log level="full"/>
<header action="remove" name="To" scope="default"/>
<log level="full"/>
<property name="RESPONSE" scope="default" type="STRING" value="true"/>
<property action="remove" name="NO_ENTITY_BODY" scope="axis2"/>
<send/>

电线日志

  [2019-05-29 09:15:05,963] [] DEBUG - wire HTTP-Listener I/O dispatcher-2 >> "POST /solar/management/documentmanagement/savedocument HTTP/1.1[\r][\n]"
[2019-05-29 09:15:05,969] [] DEBUG - wire HTTP-Listener I/O dispatcher-2 >> "Content-Type: application/json[\r][\n]"
[2019-05-29 09:15:05,979] [] DEBUG - wire HTTP-Listener I/O dispatcher-2 >> "User-Agent: PostmanRuntime/7.13.0[\r][\n]"
[2019-05-29 09:15:05,980] [] DEBUG - wire HTTP-Listener I/O dispatcher-2 >> "Accept: */*[\r][\n]"
[2019-05-29 09:15:05,981] [] DEBUG - wire HTTP-Listener I/O dispatcher-2 >> "Cache-Control: no-cache[\r][\n]"
[2019-05-29 09:15:05,987] [] DEBUG - wire HTTP-Listener I/O dispatcher-2 >> "Postman-Token: 03b5e8d9-06ab-4eae-98f4-c22085974d8e[\r][\n]"
[2019-05-29 09:15:05,995] [] DEBUG - wire HTTP-Listener I/O dispatcher-2 >> "Host: 172.16.221.96:8280[\r][\n]"
[2019-05-29 09:15:06,000] [] DEBUG - wire HTTP-Listener I/O dispatcher-2 >> "accept-encoding: gzip, deflate[\r][\n]"
[2019-05-29 09:15:06,002] [] DEBUG - wire HTTP-Listener I/O dispatcher-2 >> "content-length: 532[\r][\n]"
[2019-05-29 09:15:06,007] [] DEBUG - wire HTTP-Listener I/O dispatcher-2 >> "Connection: keep-alive[\r][\n]"
[2019-05-29 09:15:06,010] [] DEBUG - wire HTTP-Listener I/O dispatcher-2 >> "[\r][\n]"
[2019-05-29 09:15:06,015] [] DEBUG - wire HTTP-Listener I/O dispatcher-2 >> "{[\n]"
[2019-05-29 09:15:06,020] [] DEBUG - wire HTTP-Listener I/O dispatcher-2 >> "    "systemName": "Main",[\n]"
[2019-05-29 09:15:06,021] [] DEBUG - wire HTTP-Listener I/O dispatcher-2 >> "    "authenticatedAdDomain": "domain",[\n]"
[2019-05-29 09:15:06,022] [] DEBUG - wire HTTP-Listener I/O dispatcher-2 >> "    "authenticatedAdUser": "johns",[\n]"
[2019-05-29 09:15:06,029] [] DEBUG - wire HTTP-Listener I/O dispatcher-2 >> "    "parentNodeName": "LEGISLATION",[\n]"
[2019-05-29 09:15:06,031] [] DEBUG - wire HTTP-Listener I/O dispatcher-2 >> "    "childNodeName": "Policy",[\n]"
[2019-05-29 09:15:06,036] [] DEBUG - wire HTTP-Listener I/O dispatcher-2 >> "    "fileMetaData": {[\n]"
[2019-05-29 09:15:06,037] [] DEBUG - wire HTTP-Listener I/O dispatcher-2 >> "        "Document Title": "MyDocument",[\n]"
[2019-05-29 09:15:06,038] [] DEBUG - wire HTTP-Listener I/O dispatcher-2 >> "        "Document Date": "2019-04-18 14:04:00.000",[\n]"
[2019-05-29 09:15:06,046] [] DEBUG - wire HTTP-Listener I/O dispatcher-2 >> "        "Ref No": "REF000054-12",[\n]"
[2019-05-29 09:15:06,048] [] DEBUG - wire HTTP-Listener I/O dispatcher-2 >> "        "Document Author": "John Smith",[\n]"
[2019-05-29 09:15:06,053] [] DEBUG - wire HTTP-Listener I/O dispatcher-2 >> "        "Category": "50",[\n]"
[2019-05-29 09:15:06,053] [] DEBUG - wire HTTP-Listener I/O dispatcher-2 >> "        "Type": "Type1"[\n]"
[2019-05-29 09:15:06,054] [] DEBUG - wire HTTP-Listener I/O dispatcher-2 >> "    },[\n]"
[2019-05-29 09:15:06,056] [] DEBUG - wire HTTP-Listener I/O dispatcher-2 >> "    "fileName": "TestResults.pdf",[\n]"
[2019-05-29 09:15:06,065] [] DEBUG - wire HTTP-Listener I/O dispatcher-2 >> "    "fileType": "Adobe Pdf",[\n]"
[2019-05-29 09:15:06,069] [] DEBUG - wire HTTP-Listener I/O dispatcher-2 >> "    "fileContent": "VGhpcyBpcyBmaWxlIGNvbnRlbnQ="[\n]"
[2019-05-29 09:15:06,070] [] DEBUG - wire HTTP-Listener I/O dispatcher-2 >> "}"
[2019-05-29 09:15:06,071] [] DEBUG - headers http-incoming-6 >> POST /solar/management/documentmanagement/savedocument HTTP/1.1
[2019-05-29 09:15:06,072] [] DEBUG - headers http-incoming-6 >> Content-Type: application/json
[2019-05-29 09:15:06,080] [] DEBUG - headers http-incoming-6 >> User-Agent: PostmanRuntime/7.13.0
[2019-05-29 09:15:06,082] [] DEBUG - headers http-incoming-6 >> Accept: */*
[2019-05-29 09:15:06,087] [] DEBUG - headers http-incoming-6 >> Cache-Control: no-cache
[2019-05-29 09:15:06,088] [] DEBUG - headers http-incoming-6 >> Postman-Token: 03b5e8d9-06ab-4eae-98f4-c22085974d8e
[2019-05-29 09:15:06,090] [] DEBUG - headers http-incoming-6 >> Host: 172.16.221.96:8280
[2019-05-29 09:15:06,099] [] DEBUG - headers http-incoming-6 >> accept-encoding: gzip, deflate
[2019-05-29 09:15:06,104] [] DEBUG - headers http-incoming-6 >> content-length: 532
[2019-05-29 09:15:06,105] [] DEBUG - headers http-incoming-6 >> Connection: keep-alive
[2019-05-29 09:15:06,252] [] DEBUG - NTLMMediator [NTLMMediator] mediate method Invoked.
[2019-05-29 09:15:06,255] [] DEBUG - NTLMMediator [NTLMMediator] NTLM version is: v2
[2019-05-29 09:15:06,278] []  INFO - LogMediator To: /solar/management/documentmanagement/savedocument, MessageID: urn:uuid:77031c2d-3b97-41fe-916e-f4784cad389e, Direction: request, Envelope: <?xml version='1.0' encoding='utf-8'?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Body><jsonObject><userCode>johns</userCode></jsonObject></soapenv:Body></soapenv:Envelope>
[2019-05-29 09:15:06,294] [] DEBUG - NTLMCalloutMediator [NTLMCalloutMediator] mediate method Invoked.
[2019-05-29 09:15:06,298] [] DEBUG - NTLMCalloutMediator [NTLMCalloutMediator] Message : <?xml version='1.0' encoding='utf-8'?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Body><jsonObject><userCode>johns</userCode></jsonObject></soapenv:Body></soapenv:Envelope>
[2019-05-29 09:15:06,304] []  INFO - NTLMCalloutMediator Inside Mediator initClientoption : false
[2019-05-29 09:15:06,310] [] DEBUG - NTLMCalloutMediator [NTLMCalloutMediator] About to invoke service : http://192.168.12.98:8081/api/HTTPORBSY110Api
[2019-05-29 09:15:06,322] [] DEBUG - NTLMCalloutMediator [NTLMCalloutMediator] Request message payload : <jsonObject><userCode>johns</userCode></jsonObject>
[2019-05-29 09:15:06,342] [] DEBUG - CustomNTLMAuthScheme [CustomNTLMAuthScheme] processChallenge Invoked.
[2019-05-29 09:15:06,345] [] DEBUG - CustomNTLMAuthScheme [CustomNTLMAuthScheme] NTLM Scheme Authentication Method Invoked.
[2019-05-29 09:15:06,352] [] DEBUG - CustomNTLMAuthScheme [CustomNTLMAuthScheme] The NTLM version going to use is: v2
[2019-05-29 09:15:06,359] [] DEBUG - CustomNTLMAuthScheme [CustomNTLMAuthScheme] Type1Message Generated.
[2019-05-29 09:15:06,369] [] DEBUG - CustomNTLMAuthScheme [CustomNTLMAuthScheme] processChallenge Invoked.
[2019-05-29 09:15:06,371] [] DEBUG - CustomNTLMAuthScheme [CustomNTLMAuthScheme] NTLM Scheme Authentication Method Invoked.
[2019-05-29 09:15:06,372] [] DEBUG - CustomNTLMAuthScheme [CustomNTLMAuthScheme] The NTLM version going to use is: v2
[2019-05-29 09:15:06,373] [] DEBUG - CustomNTLMAuthScheme [CustomNTLMAuthScheme] Type2Message Received.
[2019-05-29 09:15:06,381] [] DEBUG - CustomNTLMAuthScheme [CustomNTLMAuthScheme] Type3Message Generated.
[2019-05-29 09:15:06,724] [] DEBUG - headers http-incoming-6 << HTTP/1.1 202 Accepted
[2019-05-29 09:15:06,725] [] DEBUG - headers http-incoming-6 << Date: Wed, 29 May 2019 07:15:06 GMT
[2019-05-29 09:15:06,730] [] DEBUG - headers http-incoming-6 << Transfer-Encoding: chunked
[2019-05-29 09:15:06,732] [] DEBUG - headers http-incoming-6 << Connection: keep-alive
[2019-05-29 09:15:06,738] [] DEBUG - wire HTTP-Listener I/O dispatcher-2 << "HTTP/1.1 202 Accepted[\r][\n]"
[2019-05-29 09:15:06,745] [] DEBUG - wire HTTP-Listener I/O dispatcher-2 << "Date: Wed, 29 May 2019 07:15:06 GMT[\r][\n]"
[2019-05-29 09:15:06,747] [] DEBUG - wire HTTP-Listener I/O dispatcher-2 << "Transfer-Encoding: chunked[\r][\n]"
[2019-05-29 09:15:06,752] [] DEBUG - wire HTTP-Listener I/O dispatcher-2 << "Connection: keep-alive[\r][\n]"
[2019-05-29 09:15:06,754] [] DEBUG - wire HTTP-Listener I/O dispatcher-2 << "[\r][\n]"
[2019-05-29 09:15:06,765] [] DEBUG - wire HTTP-Listener I/O dispatcher-2 << "0[\r][\n]"
[2019-05-29 09:15:06,768] [] DEBUG - wire HTTP-Listener I/O dispatcher-2 << "[\r][\n]"
4

0 回答 0