So here’s the challenge we face. Current login for sync looks like this:
This solution works great for centralized login. It’s fast, has a minimum number of steps, and caches the data centrally. The system that does node-assignment is lightweight, since the client and server both cache the result, and has support for multiple applications with the /node/<app> API protocol.
However, this breaks horribly when we don’t have centralized login. And adding support for browserid to the SyncStorage protocol means that we’re now there. We’re going to get valid requests from users who don’t have an account in LDAP. We won’t even know, when they make a first request, if the node-assignment server has ever heard of them.
So, we have a bunch of requirements for the system. Not all of them are must-haves, but they’re all things we need to think about trading off in whatever system gets designed: