RFR: 8245527: LDAP Cnannel Binding support for Java GSS/Kerberos
Alexey Bakhtin
alexey at azul.com
Sat Jun 6 19:45:28 UTC 2020
Hello Max, Daniel,
Thank you for review.
Please review new version of the patch :
http://cr.openjdk.java.net/~abakhtin/8245527/webrev.v5/
In this version:
- TlsChannelBinding class is moved into the com.sun.jndi.ldap.sasl package
- SSL Ceritificate related code is moved from LdapClient into the LdapSasl.saslBind method
- verification and removal of internal property is also moved to LdapSasl.saslBind method
- verification of connectTimeout property is moved to LdapCtx.connect. I’ve found that connectionTimeout could be assigned later then cbType
The test for this issue is not ready yet. I did not find any suitable test case that can be reused.
Thank you
Alexey
> On 6 Jun 2020, at 09:44, Weijun Wang <weijun.wang at oracle.com> wrote:
>
>
>
>> On Jun 6, 2020, at 2:41 PM, Weijun Wang <weijun.wang at oracle.com> wrote:
>>
>>
>>
>>> On Jun 5, 2020, at 11:03 PM, Alexey Bakhtin <alexey at azul.com> wrote:
>>>
>>> Hello Max,
>>>
>>> Thank you a lot for review.
>>>
>>> Could you check the new version of the patch :
>>> http://cr.openjdk.java.net/~abakhtin/8245527/webrev.v4/
>>>
>>> I’ve made the following changes:
>>> - TlsChannelBinding class is moved to java.naming module.
>>> java.security.sasl module is not affected any more
>>> - I pass tlsCB.getData() directly to the SASL mechanism as you suggested
>>> - I’ve made some guards to prevent application from using "com.sun.security.sasl.tlschannelbinding” property directly:
>>> - LdapClient verifies if internal property is not set
>>
>> 245 // Prepare TLS Channel Binding data
>> 246 if (conn.sock instanceof SSLSocket) {
>> 247 // Internal property cannot be set explicitly
>> 248 if (env.get(TlsChannelBinding.CHANNEL_BINDING) != null) {
>> 249 throw new NamingException(TlsChannelBinding.CHANNEL_BINDING +
>> 250 " property cannot be set explicitly");
>> 251 }
>>
>> If not TLS, this property value be kept there and visible inside the SASL mech.
>>
>>> - GssKrb5Client uses props.remove() to read and remove internal property
>
> Maybe you can remove the value in LdapClient.java, in case the mech used is not GSSAPI. You can remove it in a finally block after line 303.
>
> --Max
>
>>
>> Traditionally, we use "com.sun..." name which is a JDK supported name (although not at Java SE level), you might want to use a name which is even more internal.
>>
>>
>> Thanks,
>> Max
>>
>> p.s. I see that NTLM also supports ChannelBinding. I'll see if I can improve the NTLM SASL mech to support it.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: Message signed with OpenPGP
URL: <https://mail.openjdk.org/pipermail/security-dev/attachments/20200606/934d4b9a/signature.asc>
More information about the security-dev
mailing list