sasljs
v0.0.1
Published
GNU SASL binding for node.js
Downloads
4
Readme
SASL
Bindings to GSASL for node.js. Made to implement XMPP, but can be used anywhere.
At the moment the only plan is to support basic server side auth with callbacks
Since I do not currently require any other parts of the SASL API, they will not be implemented. You are welcome to add them though, please notify me when you do, so that I can pull.
Usage
Create a new SASL session using
var sasl = require('sasljs'); var session = sasl.createServerSession("", callback );
callback
is a callback function which should accept
the property name and session object and set
properties as requested.
Start the session with a mechanism. The list of supported mechanisms is available as
session.mechanisms
.session.start("DIGEST-MD5");
Step through the authentication procedure by calling
step()
with input from the client.session.step("");
step()
returns an object with two members:
{
status: Integer status code,
data: Error or reply
}
If status
is sasl.GSASL_OK
, authentication
succeeded. For sasl.GSASL_NEEDS_MORE
send the data
back to the client. For others, compare against
available error codes and decide what to do. Usually
abort.
Use callback
function callback(property, session) { // since realm is not currently set above if( property == sasl.GSASL_REALM ) { session.setProperty("realm", "MyHomePage"); return sasl.GSASL_OK; }
if( property == sasl.GSASL_PASSWORD ) { // get password for user, using property() var pass = getPassword(session.property('authid')); session.setProperty('password', pass); return sasl.GSASL_OK; }
}
You have to return GSASL_OK
if you handled the callback!
As you can see, setProperty()
accepts string keys. For a list
of keys, see lib/sasljs.cc
towards the end.
Nikhil Marathe