passport-cios
Passport strategy for authenticating with OPTiM Cloud IoT OS (CIOS).
This module lets you authenticate using OPTiM Cloud IoT OS in your Node.js applications. By plugging into Passport, OPTiM Cloud IoT OS authentication can be easily and unobtrusively integrated into any application or framework that supports Connect-style middleware, including Express.
Install
npm install --save optim-corp/passport-cios
Usage
Use Express Examples
const passport = require("passport")
const session = require("express-session")
const CIOSStrategy = require("passport-cios")
/**
* Inisialize
*/
passport.use(new CIOSStrategy({
// Required
clientID: env.client_id, // [required] CIOS OAuth Client ID
clientSecret: env.client_secret, // [required] CIOS OAuth Client Secret
callbackURL: env.redirect_url, // [required] App Redirect URL (ex: http://localhost:8080/oauth2/callback)
scope: env.scope, // [required] CIOS Scopes
// Option
authorizationURL: "https://" + env.cios_auth_uri + "/connect/authorize", // default: https://auth.optim.cloud/connect/authorize
tokenURL: "https://" + env.cios_auth_uri + "/connect/token", // default: https://auth.optim.cloud/connect/token
profileURL: "https://" + env.cios_account_uri + "/v2/me", // default: https://accounts.optimcloudapis.com/v2/me
},
(accessToken, refreshToken, res, profile, cb) => {
return cb(null, res)
}
))
passport.serializeUser(function(user, done) {
done(null, user);
});
passport.deserializeUser(function(user, done) {
done(null, user);
});
app.use(passport.initialize())
app.use(passport.session());
/**
* Router
*/
// CIOS Login
app.get("/login/cios", passport.authenticate("cios"))
// Callback URL
app.get("/oauth2/callback", passport.authenticate("cios", { failureRedirect: "/" }), (req, res) => {
// Logic...
// Example
req.session.access_token = req.user.access_token // AccessToken
req.session.refresh_token = req.user.refresh_token // Refresh Token
return res.redirect("/") // Redirect
},)
// Logout
app.get("/logout", (req, res)=>{
// Logic...
// Example
req.session.access_token = null // AccessToken
req.session.refresh_token = null // Refresh Token
return res.redirect("/") // Redirect
})
CIOS Strategy
Read passport strategy with require statement.
const CIOSStrategy = require("passport-cios")
Set CIOSStrategy
constructor with specified arguments.
passport.use(new CIOSStrategy({
clientID: env.client_id,
clientSecret: env.client_secret,
callbackURL: env.redirect_url,
scope: env.scope,
authorizationURL: "https://" + env.cios_auth_uri + "/connect/authorize",
tokenURL: "https://" + env.cios_auth_uri + "/connect/token",
profileURL: "https://" + env.cios_account_uri + "/v2/me",
},
(accessToken, refreshToken, res, profile, cb) => {
return cb(null, res)
}
))
First argument
Type: Object
ParamsName | description | required | default |
---|---|---|---|
clientID | CIOS OAuth Client ID | ||
clientSecret | CIOS OAuth Client Secret | ||
callbackURL | App Redirect URL (ex: http://localhost:8080/oauth2/callback) | ||
scope | CIOS Scopes | ||
authorizationURL | CIOS Aurhorization URL | https://auth.optim.cloud/connect/authorize |
|
tokenURL | CIOS Aurhorization Token URL | https://auth.optim.cloud/connect/token |
|
profileURL | CIOS Get me URL | https://accounts.optimcloudapis.com/v2/me |
Second argument
Type: Callback function
(accessToken, refreshToken, res, profile, cb) => {
return cb(null, res)
}
argument number | argument name | description |
---|---|---|
1 | accessToken | Return CIOS accessToken |
2 | refreshToken | Return CIOS refreshToken |
3 | res | Return userdata and httpResponse |
4 | profile | Return getMe response |
5 | cb | passport callback function |
Apply node express
Write serialize and deserialize logic.
passport.serializeUser(function(user, done) {
done(null, user);
});
passport.deserializeUser(function(user, done) {
done(null, user);
});
Apply app.
app.use(passport.initialize())
app.use(passport.session());
How to Support
If you have any issues or questions, please raise them on Github issues.
License
Copyright (c) 2021 OPTiM Corporation <https://www.optim.co.jp/>