https://github.com/daack/basic-sso
Basic authentication mechanism for Single sign-on
https://github.com/daack/basic-sso
authentication sso
Last synced: 8 days ago
JSON representation
Basic authentication mechanism for Single sign-on
- Host: GitHub
- URL: https://github.com/daack/basic-sso
- Owner: daack
- License: mit
- Created: 2017-02-27T08:30:18.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2017-04-27T15:47:35.000Z (about 9 years ago)
- Last Synced: 2025-03-29T21:02:09.802Z (over 1 year ago)
- Topics: authentication, sso
- Language: JavaScript
- Size: 21.5 KB
- Stars: 1
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Basic SSO :unlock:
Basic authentication mechanism for Single sign-on
* [Install](#install)
* [Example](#example)
## Install
To install basic-sso, simply use npm:
```
npm install basic-sso --save
```
## Example
### Server
```javascript
const app = require('express')()
const Sso = require('basic-sso')
const sso = Sso('server_unique_app_name', {
prime: 'diffie_hellman_prime',
listen: 8001 // port for key exchange
})
const server = sso.server({
domain: 'foo.com',
cookie: {
secret: 'password',
keylist: ['foo', 'bar'],
name: 'sso_signed',
secure: false,
httpOnly: true
}
})
server.addApp('client', {
redirect: 'http://127.0.0.1:3000/landing'
})
server.strategy('strategy', (username, password, done) => {
const user = User.findByUsername(username)
// Compare password
done(null, user)
})
server.authorizeUser((user, app, done) => {
// if user can access this app
done(null, {
// user info to return to client
})
})
server.serializeUser((user, done) => {
// What to put in the cookie
done(null, user.id)
})
server.deserializeUser((id, done) => {
// Retrive user from cookie
const user = User.findById(id)
done(null, user)
})
// Endpoint to authenticate user
app.get('/auth', server.authenticate(), (req, res, next) => {
// render login page
})
// Endpoint to login user
app.post('/login', server.logIn('strategy'))
```
### Client
```javascript
const app = require('express')()
const Sso = require('basic-sso')
const sso = Sso('client_unique_app_name', {
prime: 'diffie_hellman_prime',
listen: 8002 // port for key exchange
})
const client = sso.client({
verify: 'verify',
server: {
name: 'server',
host: '127.0.0.1',
port: 3000,
dh_port: 8001,
auth_path: '/auth'
}
})
app.get('/login', (req, res) => {
client.redirectLogIn(res)
})
app.get('/landing', client.landing(), (req, res) => {
console.log(req.user)
})
```