LDAP Channel Binding

Michael Osipov 1983-01-06 at gmx.net
Wed Feb 19 21:54:49 UTC 2020

After another research reading RFC 5929 as well as PostgreSQL support of
CB with SASL SCRAM authentication mech, I believe we first need
JDK-6491070 solved for tls-unique. That byte array has to be passed to
org.ietf.jgss.ChannelBinding(byte[]). Addresses are not necessary
because the outer context (TLS) has that data already.

If so, the SASL layer needs to be changed to be aware of outside TLS
context is present.

Am 2020-02-18 um 15:18 schrieb Weijun Wang:
> 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).

This doesn't make any sense because the client does not have access to
the SSLContext on the connection. LdapCtx needs to pass that data to
SaslClient. We'd need a property to enable/disable channel binding.

> 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.


> 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?

No, GS2 family, where auth-int and auth-conf have been dropped is *not*
supported by AD.
I believe that MS has simply modified SASL GS1 to support CB, to what
extend that is unclear, e.g., gs2-cb-flag.


More information about the security-dev mailing list