gcframe-auth
v0.1.2
Published
Authentication in Google Cloud Function HTTP triggers
Downloads
22
Readme
GCFrame
Help serve HTTP endpoints with Google Cloud Functions.
Auth
The auth function can be used to authenticate the origin of an HTTP request, based on a Authorization
header containing a access token for a Google account (or service account). It uses the mechanism described in Authentication in HTTP Cloud Functions which uses a specially designated Cloud Storage bucket as a proxy for managing authentication the autorization of the cloud function trigger.
Installation
npm install -s gcframe-auth
API
auth(bucketName, [, next])
Only allows access to requests with an authorized access token included in their request. Pass an access token via the Authorization
header. Authorization: Bearer ${TOKEN}
| Argument | Desription | Default |
| ----------- | ---------------------------------------------------------------------------|----------|
| bucketName
| The name of the GCS bucket against which the auth check will be performed. | required |
| next
| A gcframe/middleware function, or the cloud function itself. If not provided the function returns a "partially applied" function which will except the next
argument. | required |
Examples
const auth = require('gcframe-auth');
// Define google cloud function, main handler.
function helloWorld (req, res) {
return res.send(`Hello secret world`);
}
// Only allow users if the token in the request has access to the `myProxyBucket`.
var authdFunction = auth('myProxyBucket', helloWorld);
module.exports = {
helloWorld: authdFunction,
}
Compose router with other gcframe functions
gcframe
functions are auto-curried handler-last functions, so they can be composed in a functional style.
const router = require('gcframe-router');
const auth = require('gcframe-auth);
// Define google cloud function, main handler.
function helloWorld (req, res) {
// Access named parameter `key`.
return res.send(`Hello ${req.params.name});
}
// Match GET requests with a single named parameter.
const routerMiddleware = router('GET', '/:key');
// Only allow users if the token in the request has access to the `myProxyBucket`.
const authMiddleware = auth('myProxyBucket');
// Compose gcframe functions into a single middleware function.
const handle = compose(authMiddleware, routerMiddleware);
module.exports = {
helloWorld: handle(helloWorld),
}