passport-identityua
Passport strategy for authenticating with IdentityUA using the OAuth 1.0a API.
This module lets you authenticate using Universal User from University of Aveiro (UA) in your Node.js applications.
Install
$ npm install passport-identityua
Usage
Configure Strategy
The IdentityUA authentication strategy authenticates users using a Universal User UA account
and OAuth tokens. The strategy requires a verify
callback, which receives the
access token and corresponding secret as arguments, as well as profile
which
contains the authenticated user's UA profile. The verify
callback must
call done
providing a user to complete authentication.
In order to identify your application to IdentityUA, specify the consumer key,
consumer secret, callback URL and scope within options
. The consumer key and secret
are obtained by creating an application at
IdentityUA site.
passport.use(
new IdentityUaStrategy(
{
consumerKey: IDENTITYUA_CONSUMER_KEY,
consumerSecret: IDENTITYUA_CONSUMER_SECRET,
callbackURL: "http://127.0.0.1:3000/auth/ua/callback"
},
function(token, tokenSecret, profile, done) {
User.findOrCreate({ id: profile.id }, function(err, user) {
return done(err, user);
});
}
)
);
When the scope option is undefined it defaults to uu
(Utilizador universal) which returns the user's email.
Scopes
The following example demonstrastes the usage of scopes
.
passport.use(
new IdentityUaStrategy(
{
consumerKey: IDENTITYUA_CONSUMER_KEY,
consumerSecret: IDENTITYUA_CONSUMER_SECRET,
callbackURL: "http://127.0.0.1:3000/auth/ua/callback",
scope: ["uu", "name"]
},
function(token, tokenSecret, profile, done) {
User.findOrCreate({ id: profile.id }, function(err, user) {
return done(err, user);
});
}
)
);
Read the OAuth service documentation under the Serviços Disponíveis
section to check all the available scopes.
Authenticate Requests
Use passport.authenticate()
, specifying the 'identityua'
strategy, to
authenticate requests.
For example, as route middleware in an Express application:
app.get("/auth/ua", passport.authenticate("identityua"));
app.get(
"/auth/ua/callback",
passport.authenticate("identityua", { failureRedirect: "/login" }),
function(req, res) {
// Successful authentication, redirect home.
res.redirect("/");
}
);
Tests
$ npm install
$ npm test
TODO
- [x] Fix
scope
bug - [ ] Fix "Strategy parsing error from access token endpoint parsing error should error" test (it's hardcoded to pass)
Credits
- Jared Hanson (developed the code before the fork)
- Paulo Oliveira
- António Santos
License
Copyright (c) 2015 Jared Hanson <http://jaredhanson.net/>