[jdev] Figuring out what a client thinks its JID is

Aaron Kryptokos aaronkryptokos6 at aaronwl.com
Mon Apr 5 17:01:33 CDT 2010


Nathan Fritz wrote:
> By not using the same node as the authentication user, you're going
> against two SHOULD suggestions in the RFC

I can't find anything in RFC 3920 about this case.  Can you help me find 
these two recommendations?

> I would recommend against doing this on a public
> service where you expect any IM client.

The authentication and authorization system already exists, so my hands 
are mostly tied.  I'm open to any reasonable implementation that will 
make this work.  The one design restriction imposed on me is that the 
authenticating client must some sort of way provide the authentication 
username as part of the process; mapping from the node to auth 
credentials is not acceptable.

If it's true that the RFC discourages this practice, then I think the 
RFC may need to be revised.  For people who are running simple 
stand-alone Jabber servers, this sort of thing doesn't matter.  But for 
organizations like mine that are trying to embrace XMPP by adding an 
XMPP interface to existing infrastructure, this is a major issue.  GTalk 
has a variation of the same problem, except with domain instead of 
username.  I think the real long-term solution here is that the RFC 
needs to firmly instruct clients to not make assumptions about their 
JIDs, and instead accept (or reject) what they are given at resource 
binding.

> You
> are, again, in violation of the spec by delivering stanzas where the
> bare jid does not match their bound name, and you could cause
> unintended consequences on the client (crashes or strange behavior) by
> simply pinging them in this way.

I can't find any prohibition like this in RFC 3920 or the draft.  Can 
you point out a specific passage that prohibits this sort of probing?

> I really don't see either of these options being viable as the client
> is simply broken if it doesn't respond to it's bound fulljid and you
> risk greater consequences if you try to "adjust" at the protocol
> level.

My main goal is for a short-term, practical improvement in functionality 
for as many users as possible.

As an alternative, I'm thinking about perhaps having the user do 
something special to indicate that 'JID masquerading' should be 
performed, such as placing a special character in their username.

Another option is to try to detect specific versions that are broken 
using XEP-0092: Software Version, and apply the workaround for just 
those.  This would get correct operations to the largest groups of 
users, and prevent breaking people whose clients were in fact operating 
correctly.



More information about the JDev mailing list