express-webid

WebID Express/Connect middleware

npm install express-webid
2 downloads in the last day
2 downloads in the last week
6 downloads in the last month

WebID middleware for express/connect

A WebID authentication middleware module for express/connect applications.

See also:

Usage

Example code:

var expressWebId = require('express-webid'); var options = {'getCertificateCallback': expressWebId.getCertificateFromConnection, 'defaultAgent': 'http://example.com/card#me'}; app.use(expressWebId.login(options));

This code registers the middleware to the express application. The certificate will be read from the connection. If the authentication fails the agent http://example.com/card#me will be used for the session.

API

login(options)

Returns the middleware function. The following options are accepted:

  • getCertificateCallback The function which should be used to fetch the certificate (default: getCertificateFromConnection)
  • defaultAgent The default agent if the authentication process fails (default: '_:anonymous')
  • doRenegotiation Use renegotiation to ask for a certificate (currently not supported by Node.js, default: false)

getCertificateFromConnection(req)

Returns the certificate bind to the connection.

getCertificateFromHeader(req)

Returns the certificate from the header field ssl_client_cert. This should be used only for applications behind reverse proxies! Currently this is the only workaround to use renegotiation for a single resource.

Example Apache configuration:

<Location /login-webid>
  SSLOptions +ExportCertData
  SSLVerifyClient optional_no_ca

  # clear header field -> prevent injection!
  RequestHeader set SSL_CLIENT_CERT ""
  RequestHeader set SSL_CLIENT_CERT "%{SSL_CLIENT_CERT}s"
</Location>
npm loves you