[jdev] SASL EXTERNAL for s2s in jabberd14

Matthias Wimmer m at tthias.net
Fri Nov 4 14:33:20 CST 2005


Hi!

I have implemented SASL EXTERNAL on s2s connects in jabberd14 the last 
days, and like to share some thoughts on this, as well as I'd like to 
get thoughts of other developpers, that already implemented this.

- When do you offer SASL EXTERNAL on an incoming connection? I 
implemented, that the s2s connection manager always checks the peers 
certificate as soon as a TLS layer is established. Only if the 
certificate could be validated (not expired, if the incoming stream had 
a from attribute if this matches the certificate, signed by a trusted 
CA, ...) I offer the peer to use SASL EXTERNAL. In all other cases I 
know that SASL EXTERNAL would fail anyway so I do not have to offer it. 
Better for the peer to try dialback.
- What do you do if you connected to an other server which offered you 
SASL auth but the authentication failed? Do you retry the connection 
using dialback or do you consider it as a final auth failure? Currently 
I do not retry it using dialback but bounce the stanza back to the 
sender. I am aware that this might be wrong and retrying the connection 
using dialback could be better.
- I guess at least for now we have to handle certificates, that do not 
contain the id-on-xmppAddr object as well and therefore have to support 
domains as commonName as well. Right? In that case, it is known practice 
in such certificates to have wildcards in domains, e.g. "*.example.com". 
Do you handle these? How do you handle these? I am allowing this 
certificate for "subdomain.example.com", but not for "example.com".
- If the certificate is for "example.com", do you accept this 
certificate to be used for "service.example.com" as well? Currently I 
don't. But I am not sure if this is correct/intended by RFC3920.
- Do you support having a SASL authenticated link in one direction and a 
dialback "authenticated" link in the other direction between two 
servers? Especially do you accept and process to receive db:verify 
requests on a SASL link? Currently I do.
- Do you package a set of CA certificates with your server distribution? 
Which CAs should be trusted/included?

What servers out there support SASL EXTERNAL already and are available 
for at least evaluation? I'd like to do some interoperability tests?


Thank you
Matthias



More information about the JDev mailing list