From 7c6b171bd158033bb96d974891784434efa9b79a Mon Sep 17 00:00:00 2001 From: Christoph Burschka Date: Wed, 15 Jan 2014 23:48:36 +0100 Subject: Adding a README.md to session/ --- plugins/session/README.md | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 plugins/session/README.md diff --git a/plugins/session/README.md b/plugins/session/README.md new file mode 100644 index 0000000..cc246d9 --- /dev/null +++ b/plugins/session/README.md @@ -0,0 +1,31 @@ +Session Auth +============ + +The session plugin is special in that it does not connect to a specific CMS. +Rather, it allows password-less XMPP authentication based on an existing web +session. This is particularly useful to web-based clients. + +The control flow is like this: + +* A user authenticates using the normal website login system, and receives + a session cookie. + +* The user opens the associated web chat client. + +* Instead of presenting a second login form, the client sends an HTTP request + to a special public facing script in ejabberd-auth-php (./www/rpc.php). + +* The script sees the session cookie, generates a one-time login valid for + a short time (60 seconds by default), stores it and sends it to the client. + +* The client uses this key as a password on ejabberd. Since ejabberd is configured + to use ejabberd-auth-php, the main application receives the key and checks it. + If it exists and hasn't expired yet, it confirms the authentication and the user + is logged in without a password. + +Security Considerations +======================= + +The one-time key is transmitted in clear, and can be intercepted if the connection +is not encrypted. But the same channel is already used to transmit the password +when logging in, as well as the session cookie. -- cgit v1.1