RFR 8078439: Kerberos auth fails if client proposes MS krb5 OID

Valerie Peng valerie.peng at oracle.com
Thu Apr 30 01:37:21 UTC 2015


I think your current approach of using the mechList[0] makes sense. As 
long as the rest of our code will recognize this MS krb5 OID, it will be 
fine.

The source changes look fine to me.
Just some nits on the regression test "MSOID.java":
1) line 57 has a typo, aceptor -> acceptor
2) line 59, currently, this test will accept all GSSException as the 
expected exception which may be a little bit too liberal. Any chance 
that we can narrow it down to a certain error status code? Just so we 
don't accidentally allow the wrong exceptions.

Thanks,
Valerie

On 4/25/2015 7:21 PM, Weijun Wang wrote:
> Hi All
>
> I've updated the webrev at
>
>    http://cr.openjdk.java.net/~weijun/8078439/webrev.01/
>
> The only change is
>
> @@ -548,6 +548,7 @@
>                                  "mechToken is missing");
>                      }
>                      accept_token = GSS_acceptSecContext(mechToken);
> +                    mech_wanted = mechList[0];
>                  } else {
>                      accept_token = null;
>                  }
>
> This means the supportedMech in response will be MS_KRB5_OID if it was 
> the preferred mech in the request.
>
> In my webrev.00, I insisted using the "correct" OID  because that was 
> the way before JDK-8048194 and no one complained about it. Therefore I 
> think the client side is able to find out that it's also a flavor of 
> Kerberos 5 and has accepted it happily. So why fix it if it's not broken?
>
> However, after writing a SSPI client myself, I find out that it does 
> not accept the "correct" ID and fail. Why didn't people notice that? 
> My understanding is that until now a client that sends those OIDs has 
> always been a browser, and this browser simply ignores the response if 
> it already sees a "200 OK" HTTP status.
>
> Thanks
> Max
>
> On 4/25/2015 12:19 PM, Weijun Wang wrote:
>> Hi All
>>
>> Please review a fix at
>>
>>     http://cr.openjdk.java.net/~weijun/8078439
>>
>> This is a regression triggered by JDK-8048194. In SPNEGO, a client might
>> send NegTokenInit with OIDs being {MS_KRB5_OID, KRB5_OID} along with a
>> krb5 AP-REQ as mechToken. Java did not understand MS_KRB5_OID but before
>> JDK-8048194 it blindly accepted the mechToken and everything just went
>> on fine. After JDK-8048194, it rejects the unknown OID and cannot
>> establish a security context.
>>
>> The fix adds a tweak to recognize the MS_KRB5_OID.
>>
>> *Ivan*:
>>
>> Can you try out the patch on jdk8u?
>>
>> Thanks
>> Max


More information about the security-dev mailing list