On Feb 4, 2010, at 4:15 PM, Natalie Li wrote:

>> 
>> public final class Client {
>>    /**
>>     * Creates an NTLM Client instance.
>>     * @param version the NTLM version to use, which can be:
>>     * <ol>
>>     * <li>1: Original NTLM v1
>>     * <li>1lm: Original NTLM v1, LM only
>>     * <li>1ntlm: Original NTLM v1, NTLM only
>>     * <li>1+: NTLM v1 with Client Challenge
>>     * <li>2: NTLM v2
>>     * <li>2lm: NTLM v2, LM only
>>     * <li>2ntlm: NTLM v2, NTLM only
>>     * </ol>
>>     * If null, "1+" will be used.
> 
> I'm not familiar with the Java syntax so could you please elaborate on how 
> you come up with the param version?
> You can find the following 2 fields in NTLMSSP Type 3 message:
> 
> LmChallengeResponse
> NtChallengeResponse
> 
> So, the Type 3 message could contain the following challenge responses:
> 
> NTLM
> LM and NTLM
> LMv2 and NTLMv2

I observe that when the client only provides LM, the authentication still goes 
fine. The same for v2 messages. This is why I allow the client to choose 
whatever it want to send.

By "1+", I mean the NTLM2 response described at --

   http://davenport.sourceforge.net/ntlm.html#theNtlm2SessionResponse

Altogether, the client can choose 7 styles.

>>    public byte[] type3(byte[] type2, byte[] nonce) throws NTLMException;
> I'm missing the context. What's the purpose of the nonce when generating the 
> type 3 message?

The class does not deal with random bytes generation inside, so the caller 
needs to provide the nonce.

> 
>> 1. As described by the MSDN article, when LMCompatibilityLevel is set to a
>>   high value on the server, certain low value request is not supported
> This statement isn't clear (See below).

Not clear, I'll use your words below on NTLMv2.

> 
>> 2. There's no protocol for the server to tell the client to use a higher
>>   version, so you must manually setup this config on the client side
> The use of NTLM or NTLMv2 authentication is not negotiated between the client 
> and server.  Hence, authentication might fail if the server mandates NTLMv2 
> authentication while the client uses NTLM authentication.

Yes, this is what I say "manually setup this config on the client side".

Thanks
Max

> 
> Natalie
> 
> 
> 
> Max (Weijun) Wang wrote:
>> Hi All
>> 
>> Please take a review on this draft before I send it for CCC:
>> 
>>   http://cr.openjdk.java.net/~weijun/spec/NTLMSASL.0.1
>> 
>> The spec includes a raw NTLM API defined in com.sun.* namespace and 
>> describes the newly added SASL mech.
>> 
>> Thanks
>> Max
>> 
>>  
> 

Reply via email to