Nimble directory + auth + SSO services for your {web} and {cloud} apps

Nimbus Directory Services

JsonSSO Roadmap

The JsonSSO roadmap for this and next year concentrates on two areas: clustering and the addition of session history.

Clustering for scalability and high-availability

JsonSS0 uses a highly efficient in-memory session store based on java.util.concurrent data structures. Each session object contains 1 kByte of data on average, which means that 1 GByte of server memory can hold the sessions of ~ 1 million users. So with very large installations a more likely scaling issue is not going to be memory, but rather JSON-RPC request throughput. To address this web sites with huge user bases may run two or more JsonSSO instances in parallel, thus spreading the load. The ballancing can be performed by the login script, by first checking the session count per JsonSSO instance with sso.sessionCount and then dispatching the sso.login request to the least busy server.

For fully transparent balancing and clustering a Memcached / Membase session storage is being planned. This will also increase availability as session data will be replicated across more than one server. So if a session server fails users can continue work without their sessions being lost (and having to login again).

Session history

At present JsonSSO logs finished sessions in a text file. To ease quering of past sessions (by administrators, auditors and users for their own sessions) a new JSON request sso.listSessionHistory is planned. This will be backed by an SQL-compatible session history store, to allow for simple selection and sorting of records by user ID, login period and other criteria.

The default store will most probably be an embedded H2 instance. Administrators will be able to specify a different SQL database if they choose so. Note that this store will be completely independent from the active session store.

Example request:

{ "method"  : "sso.listSessionHistory",
  "params"  : { "SID"    : "5347e9fc-6d20-4183-b3be-67fd35caeb2b",
                "userID" : "alice@wonderland.net",
		"from"   : "2011-05-01",
		"until"  : "2011-05-02" },
  "id"      : "0001",
  "jsonrpc" : "2.0" }