Coverage Report - org.mule.transport.http.ntlm.NtlmMessageFactory
 
Classes in this File Line Coverage Branch Coverage Complexity
NtlmMessageFactory
0%
0/9
0%
0/2
2.333
 
 1  
 /*
 2  
  * Copyright (c) MuleSoft, Inc.  All rights reserved.  http://www.mulesoft.com
 3  
  * The software in this package is published under the terms of the CPAL v1.0
 4  
  * license, a copy of which has been included with this distribution in the
 5  
  * LICENSE.txt file.
 6  
  */
 7  
 package org.mule.transport.http.ntlm;
 8  
 
 9  
 import java.io.IOException;
 10  
 
 11  
 import jcifs.ntlmssp.Type1Message;
 12  
 import jcifs.ntlmssp.Type2Message;
 13  
 import jcifs.ntlmssp.Type3Message;
 14  
 import jcifs.util.Base64;
 15  
 import org.apache.commons.httpclient.NTCredentials;
 16  
 
 17  0
 public class NtlmMessageFactory
 18  
 {
 19  
 
 20  
     // Defines the default flags value set in the Type3Message. These flags must be set:
 21  
     // NEGOTIATE_VERSION
 22  
     // NEGOTIATE_TARGET_INFO
 23  
     // NEGOTIATE_EXTENDED_SECURITY
 24  
     // TARGET_TYPE_SERVER
 25  
     // NEGOTIATE_ALWAYS_SIGN
 26  
     // NEGOTIATE_NTLM_KEY
 27  
     // REQUEST_TARGET
 28  
     // NEGOTIATE_UNICODE
 29  
     public static final int DEFAULT_TYPE_3_MESSAGE_FLAGS = 0X88205;
 30  
 
 31  
     // Defines flags value to use in the Type1Message. These flags must be set:
 32  
     // NEGOTIATE_EXTENDED_SECURITY
 33  
     // NEGOTIATE_ALWAYS_SIGN
 34  
     // NEGOTIATE_NTLM_KEY
 35  
     // REQUEST_TARGET
 36  
     // NEGOTIATE_OEM
 37  
     // NEGOTIATE_UNICODE
 38  
     public static final int DEFAULT_TYPE_1_MESSAGE_FLAGS = 0X88207;
 39  
 
 40  
     /**
 41  
      * Creates a {@link Type1Message} for NTLM authentication.
 42  
      *
 43  
      * @param host the client host
 44  
      * @param domain the client domain
 45  
      * @return a {@link Type1Message} to initiate the authentication process.
 46  
      */
 47  
     public Type1Message createType1Message(String host, String domain)
 48  
     {
 49  0
         Type1Message message = new Type1Message(DEFAULT_TYPE_1_MESSAGE_FLAGS, domain, host);
 50  
 
 51  
         // Type1Message constructor sets a default workstation name when host == null, so it
 52  
         // requires an override of that value in order to make it work
 53  0
         if (host == null)
 54  
         {
 55  0
             message.setSuppliedWorkstation(null);
 56  
         }
 57  
 
 58  0
         return message;
 59  
     }
 60  
 
 61  
     /**
 62  
      * Creates a {@link Type2Message} for NTLM authentication from a challenge
 63  
      * received from the NTLM server.
 64  
      *
 65  
      * @param challenge the challenge received from the server in response to a
 66  
      *        {@link Type1Message} message previously sent.
 67  
      * @return a {@link Type2Message} to continue the authentication process.
 68  
      */
 69  
     public Type2Message createType2Message(String challenge)
 70  
     {
 71  
         try
 72  
         {
 73  0
             return new Type2Message(Base64.decode(challenge));
 74  
         }
 75  0
         catch (IOException e)
 76  
         {
 77  0
             throw new RuntimeException("Invalid Type2 message", e);
 78  
         }
 79  
     }
 80  
 
 81  
     /**
 82  
      * Creates a {@link Type3Message} for NTLM authentication.
 83  
      *
 84  
      * @param ntCredentials the credentials used for the authentication
 85  
      * @param type2Message the {@link Type2Message} received from the server
 86  
      *        in response to a {@link Type1Message} message previously sent.
 87  
      * @return a {@link Type3Message} to continue the authentication process.
 88  
      */
 89  
     public Type3Message createType3Message(NTCredentials ntCredentials, Type2Message type2Message)
 90  
     {
 91  0
         return new Type3Message(type2Message, ntCredentials.getPassword(), type2Message.getTarget(),
 92  
                                 ntCredentials.getUserName(), ntCredentials.getHost(), DEFAULT_TYPE_3_MESSAGE_FLAGS);
 93  
     }
 94  
 }