<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
</head>
<body>
<div dir="ltr">
<div dir="ltr">
<div dir="ltr" data-ogsc="" style="">
<div dir="ltr">
<div dir="ltr" data-ogsc="" style="">
<div dir="ltr">
<div dir="ltr" data-ogsc="" style="">
<div dir="ltr">
<div dir="ltr" data-ogsc="" style="">
<div dir="ltr">
<div dir="ltr" data-ogsc="" style="">
<div dir="ltr">
<div dir="ltr" data-ogsc="" style="">
<div></div>
<div>
<div>
<div>Hello,</div>
<div><br>
</div>
<div dir="ltr">> While JGSS has channel binding, the SASL/GSSAPI mech has not called it.</div>
<div dir="ltr">> I can add a SASL property which takes a byte[] value so when it's not null the</div>
<div dir="ltr">> implementation can set a ChannelBinding object using it as appData (with no addresses).</div>
<div dir="ltr"><br>
</div>
<div dir="ltr">I think this would be helpful in general, for sun-ldap this would probably need to set it itself, as it manages the sockets directly. </div>
<div dir="ltr"><br>
</div>
<div dir="ltr">If I understand correctly there are also different token formats, so it might need a way to request the Microsoft Format. Somewhere I read "Microsoft channel binding token ms-cbt" but I cant find it anymore. tls-unique is specified in rfc5929.</div>
<div dir="ltr"><br>
</div>
<div dir="ltr">> Then the TLS layer needs to provide a method to get the bytes.</div>
<div dir="ltr"><br>
</div>
<div dir="ltr">Yes JSSE would need a API to get to this, I think we discussed a handshake callback for this (and other applications like logging the master key).</div>
<div dir="ltr"><br>
</div>
<div dir="ltr">> I've also read about the SASL/GS2 mech (RFC 5801) which claims to support channel binding. Do you know if Microsoft ever support it?</div>
<div dir="ltr"><br>
</div>
<div dir="ltr">The AD implementation is fairly limited for years, the current documentation, specification (https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-adts/e7d814a5-4cb5-4b0d-b408-09d79988b550) or rootDSE entries do not suggest this method
 is supported (At least I haven't seen it+). But on the other hand Microsoft might notice that they have neglected it and invest in interop, so... (I think OpenLDAP does support it).</div>
<div dir="ltr"><br>
</div>
<div dir="ltr">+ I am not sure if it could actually happen by extending GSS-SPNEGO, but that would really be a strange layering of multiple security mechanisms.</div>
<div dir="ltr"><br>
</div>
<div>Gruss</div>
</div>
<div dir="ltr">Bernd</div>
<div class="ms-outlook-ios-signature">
<div style="direction: ltr;">-- </div>
<div style="direction: ltr;">http://bernd.eckenfels.net</div>
</div>
</div>
<div id="id-30c4d26b-2f7f-4d00-9118-edc031668cde" class="ms-outlook-mobile-reference-message">
<hr style="display: inline-block; width: 98%; font-family: -webkit-standard; font-size: 12pt; color: rgb(0, 0, 0);" tabindex="-1">
<div id="divRplyFwdMsg" dir="ltr"><font face="Calibri, sans-serif"><b>Von:</b> Weijun Wang <weijun.wang@oracle.com><br>
<b>Gesendet:</b> Dienstag, Februar 18, 2020 3:18 PM<br>
<b>An:</b> Bernd Eckenfels<br>
<b>Cc:</b> security-dev@openjdk.java.net<br>
<b>Betreff:</b> Re: LDAP Channel Binding
<div> </div>
</font></div>
<meta name="Generator" content="Microsoft Exchange Server">
<!-- converted from text --><style><!-- .EmailQuote { margin-left: 1pt; padding-left: 4pt; border-left: #800000 2px solid; } --></style><font size="2"><span style="font-size:11pt;">
<div class="PlainText">While JGSS has channel binding, the SASL/GSSAPI mech has not called it. I can add a SASL property which takes a byte[] value so when it's not null the implementation can set a ChannelBinding object using it as appData (with no addresses).<br>
<br>
But who will be setting the property? Whoever calls the SASL methods will need to provide the appData. Is it the TLS channel binding defined in RFC 5929? Then the TLS layer needs to provide a method to get the bytes.<br>
<br>
I've also read about the SASL/GS2 mech (RFC 5801) which claims to support channel binding. Do you know if Microsoft ever support it?<br>
<br>
Thanks,<br>
Max<br>
<br>
> On Feb 18, 2020, at 7:43 PM, Bernd Eckenfels <ecki@zusammenkunft.net> wrote:<br>
> <br>
> Hello Michael,<br>
> <br>
> I am not sure why you say so, when the channel binding option is turned on as Microsoft recommends and plans to default to in March the Java LDAP directory implementation will no longer be able to connect when using GSSAPI or DIGEST-MD5 over LDAPs.<br>
> <br>
> I think this should be possible. It will most likely require changes in JSSE, SASL, JNDI and JNDI-LDAP (both in implementations but also public APIs (in SASL maybe only properties?). It looks like JGSS might not need a  new API.<br>
> <br>
> If there are also SPNEGO/NTLM external SASL mechanisms which are used with JNDI, that would be an additional check condition if the new APIs are enough to handle that.<br>
> <br>
> Gruss<br>
> Bernd<br>
> --<br>
> <a href="http://bernd.eckenfels.net" data-ogsc="" style="">http://bernd.eckenfels.net</a><br>
> Von: Michael Osipov <1983-01-06@gmx.net><br>
> Gesendet: Sunday, February 16, 2020 11:02:16 AM<br>
> An: Weijun Wang <weijun.wang@oracle.com><br>
> Cc: Bernd Eckenfels <ecki@zusammenkunft.net>; security-dev@openjdk.java.net <security-dev@openjdk.java.net><br>
> Betreff: Re: LDAP Channel Binding<br>
>  <br>
> Am 2020-02-14 um 15:53 schrieb Weijun Wang:<br>
> ><br>
> ><br>
> >> On Jan 22, 2020, at 6:31 AM, Michael Osipov <1983-01-06@gmx.net> wrote:<br>
> >><br>
> >> Am 2020-01-21 um 17:57 schrieb Bernd Eckenfels:<br>
> >>> Hello,<br>
> >>><br>
> >>> I have now repeated the tests with LdapEnforceChannelBinding=2 and I<br>
> >>> could see the rejection with error code 80090346 for GSSAPI and<br>
> >>> DIGEST-MD5 with TLS.<br>
> >>><br>
> >>> The simple bind with TLS and the GSSAPI or DIGEST-MD5 without TLS but<br>
> >>> with auth-int/conf all work with signing and binding required (I.e<br>
> >>> after Microsoft charged defaults in March)<br>
> >>><br>
> >>> (Which makes the TLS binding a bit useless, but we should still think<br>
> >>> about supporting it.)<br>
> >>><br>
> >>> Jgss seems to already allow to set it, so only JSSE needs to provide<br>
> >>> an api for sasl/jndi.<br>
> >><br>
> >> How? I am confused! The Kerberos SaslClient does not use/set GSS channel<br>
> >> bindings. I don't see any in com.sun.security.sasl.gsskerb.<br>
> ><br>
> > Are you suggesting any change here? JGSS has channel binding method but the SASL mech has not called it.<br>
> <br>
> None yet, because we do not know what channel binding is actually used.<br>
> We assume that MS uses TLS channel binding regardless of the underlying<br>
> authentication scheme.<br>
> <br>
> M<br>
<br>
</div>
</span></font></div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</body>
</html>