Just a small addition, cause I found some more details (but still not enough).

there seems to be some precedence for tls-server-endpoint instead, which would 
be I guess a bit easier to produce:

https://blogs.msdn.microsoft.com/openspecification/2013/03/26/ntlm-and-channel-binding-hash-aka-extended-protection-for-authentication/

https://docs.microsoft.com/en-us/windows/win32/secauthn/acceptsecuritycontext--kerberos

The mentione QueryContextAttributes can provide both, endpoint or uniqueness 
attributes (but in some places like the HttpRequest I read that it only accepts 
endpoint type)

It was also mentioned that the SPN is used in addition for binding, however I 
think this is already sent with GSSAPI and seems not to help (even when that 
would be fine in addition to proper cert checks)

Somehow this thing seems like not have any additional protection property and 
is largely underdocumented.

Gruss
Bernd
--
http://bernd.eckenfels.net
________________________________
Von: security-dev <security-dev-boun...@openjdk.java.net> im Auftrag von 
Michael Osipov <1983-01...@gmx.net>
Gesendet: Wednesday, February 19, 2020 10:54:49 PM
Cc: security-dev@openjdk.java.net <security-dev@openjdk.java.net>
Betreff: Re: LDAP Channel Binding

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.

Correct.

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

Michael

Reply via email to