[oauth] start oauth auth_code server implementation
This commit is contained in:
84
server/model.js
Normal file
84
server/model.js
Normal file
@@ -0,0 +1,84 @@
|
||||
const crypto = require('crypto')
|
||||
const { promisify } = require('util')
|
||||
const randomBytes = promisify(crypto.randomBytes)
|
||||
|
||||
async function randomString(len = 16) {
|
||||
const bytes = await randomBytes(len*8)
|
||||
return crypto
|
||||
.createHash('sha1')
|
||||
.update(bytes)
|
||||
.digest('hex')
|
||||
}
|
||||
|
||||
const OAuth = {
|
||||
clients: [
|
||||
{ clientId : 'confidentialApplication', clientSecret : 'topSecret',
|
||||
redirectUris : ['https://localhost:13120/asdf', 'https://example-app.com/callback', 'https://oauthdebugger.com/debug'],
|
||||
grants: ['password', 'authorization_code', 'client_credentials']
|
||||
},
|
||||
{
|
||||
clientId: '1766891b7fb5fda4235dc7f0dde70fcd783371c2', clientSecret: 'ed6fdc050a415f178f2ac8428b76734edef75e5c',
|
||||
grants: ['authorization_code'], redirectUris: ['urn:ietf:wg:oauth:2.0:oob'], scopes: ['write'], state: 'a'
|
||||
}
|
||||
],
|
||||
tokens: [],
|
||||
users: [{ id : '123', username: 'thomseddon', password: 'nightworld' }],
|
||||
|
||||
getAccessToken (bearerToken) {
|
||||
console.error('dentro get access token', bearerToken, OAuth.tokens)
|
||||
const tokens = OAuth.tokens.filter(token => token.accessToken === bearerToken)
|
||||
return tokens.length ? tokens[0] : false
|
||||
},
|
||||
verifyScope (accessToken, scope) {
|
||||
console.error('dentro verify scope', scope)
|
||||
},
|
||||
getRefreshToken (bearerToken) {
|
||||
console.error('dentro refresh token')
|
||||
const tokens = OAuth.tokens.filter( token => token.refreshToken === bearerToken )
|
||||
return tokens.length ? tokens[0] : false
|
||||
},
|
||||
getClientCredentials () {
|
||||
console.error('dentro get client credentials')
|
||||
},
|
||||
getClient (clientId, clientSecret) {
|
||||
console.error(`getClient ${clientId} / ${clientSecret}`)
|
||||
const clients = OAuth.clients.filter( client => client.clientId === clientId)
|
||||
console.error(clients)
|
||||
return clients.length ? clients[0] : false
|
||||
},
|
||||
getAuthorizationCode(authorizationCode) {
|
||||
console.error('get auth code')
|
||||
},
|
||||
revokeAuthorizationCode (code) {
|
||||
console.error('dentro revoke auth code ', code)
|
||||
},
|
||||
async createClient (client) {
|
||||
client.client_id = await randomString(256)
|
||||
client.client_secret = await randomString(256)
|
||||
OAuth.clients.push(client)
|
||||
return client
|
||||
},
|
||||
saveAuthorizationCode(code, client, user) {
|
||||
console.error('dentro save auth code')
|
||||
const ret = {
|
||||
...code,
|
||||
user,
|
||||
client
|
||||
}
|
||||
OAuth.tokens.push(ret)
|
||||
console.error('DIOCANEEEE salvo auth code!', OAuth.tokens)
|
||||
return ret
|
||||
},
|
||||
saveToken (token) {
|
||||
console.error('dentro save token')
|
||||
},
|
||||
// saveAuthorizationCode (token, client, user) {
|
||||
// console.error('dentro save auth code')
|
||||
// return true
|
||||
// },
|
||||
getUser (username, password) {
|
||||
console.error('dentro get user')
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = OAuth
|
||||
Reference in New Issue
Block a user