New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

airview-aws-auth

Package Overview
Dependencies
Maintainers
1
Versions
3
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

airview-aws-auth

AWS Cognito & API Gateway authentication for Airview

  • 0.0.6
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
0
decreased by-100%
Maintainers
1
Weekly downloads
 
Created
Source

airview-aws-auth

This module provides lambda-based Cognito JWT authenticators for use in Cloudfront and API Gateway workflows as part of Airview.

This module is based on the AWS cognito-at-edge module.

Usage

Cloudfront User Authentication

For cloudfront usage, the module provides JWT validation and authentication using Cognito. If a request is unauthenticated, the user will be redirected via the Cognito Authentication flow. In the case of expired tokens, a refresh token is used if present in the request cookies.

You must create a Lambda@Edge function in the us-east-1 region and associate it with the CloudFront distribution's viewer request events.

Within your function, you can import and use the CloudFrontUserAuthenticator class as shown here:

const { CloudFrontUserAuthenticator } = require('airview-aws-auth');

const authenticator = new CloudFrontUserAuthenticator({
  // Replace these parameter values with those of your own environment
  region: 'us-east-1', // user pool region
  userPoolId: 'us-east-1_tyo1a1FHH', // user pool ID
  userPoolAppId: '63gcbm2jmskokurt5ku9fhejc6', // user pool app client ID
  userPoolDomain: 'domain.auth.us-east-1.amazoncognito.com', // user pool domain
});

exports.handler = async (request) => authenticator.handle(request);
Reference
CloudFrontUserAuthenticator(params)
  • params Object Authenticator parameters:
    • region string Cognito UserPool region (eg: us-east-1)
    • userPoolId string Cognito UserPool ID (eg: us-east-1_tyo1a1FHH)
    • userPoolAppId string Cognito UserPool Application ID (eg: 63gcbm2jmskokurt5ku9fhejc6)
    • userPoolAppSecret string (Optional) Cognito UserPool Application Secret (eg: oh470px2i0uvy4i2ha6sju0vxe4ata9ol3m63ufhs2t8yytwjn7p)
    • userPoolDomain string Cognito UserPool domain (eg: your-domain.auth.us-east-1.amazoncognito.com)
    • cookieExpirationDays number (Optional) Number of day to set cookies expiration date, default to 365 days (eg: 365)
    • disableCookieDomain boolean (Optional) Sets domain attribute in cookies, defaults to false (eg: false)
    • logLevel string (Optional) Logging level. Default: 'silent'. One of 'fatal', 'error', 'warn', 'info', 'debug', 'trace' or 'silent'.

This is the class constructor.

handle(request)

Use it as your Lambda Handler. It will authenticate each query.

const authenticator = new CloudFrontUserAuthenticator( ... );
exports.handler = async (request) => authenticator.handle(request);

API Gateway Reqquest Validation

For API Gateway usage, the module provides Cognito JWT Validation only, i.e. it does not redirect via the Cognito Authentication flow. API Gateway token valiation can come from two sources:

  1. You can pass an access token in the Authorization header with a type of Bearer.
  2. The request cookies can contain the cognito cookies as set via the Cloudfront User Authentication workflow above.

To use the module, you must create an Api Gateway authenticator lambda and associate it with your desired routes.

Within your Lambda function, you can import and use the ApiGatewayRequestValidator class as shown here:

const { ApiGatewayRequestValidator } = require('airview-aws-auth');

const authenticator = new ApiGatewayRequestValidator({
  // Replace these parameter values with those of your own environment
  region: 'us-east-1', // user pool region
  userPoolId: 'us-east-1_tyo1a1FHH', // user pool ID
  userPoolAppId: '63gcbm2jmskokurt5ku9fhejc6', // user pool app client ID
  userPoolDomain: 'domain.auth.us-east-1.amazoncognito.com', // user pool domain
});

exports.handler = async (request) => authenticator.handle(request);
Reference - ApiGatewayRequestValidator Class
ApiGatewayRequestValidator(params)
  • params Object Authenticator parameters:
    • region string Cognito UserPool region (eg: us-east-1)
    • userPoolId string Cognito UserPool ID (eg: us-east-1_tyo1a1FHH)
    • userPoolAppId string Cognito UserPool Application ID (eg: 63gcbm2jmskokurt5ku9fhejc6). Accepts multiple Application IDs, separated by ; (e.g. appid1;appid2). When multiple Application IDs are present, the token must be valid for at least one application.
    • userPoolAppSecret string (Optional) Cognito UserPool Application Secret (eg: oh470px2i0uvy4i2ha6sju0vxe4ata9ol3m63ufhs2t8yytwjn7p)
    • userPoolDomain string Cognito UserPool domain (eg: your-domain.auth.us-east-1.amazoncognito.com)
    • logLevel string (Optional) Logging level. Default: 'silent'. One of 'fatal', 'error', 'warn', 'info', 'debug', 'trace' or 'silent'.

This is the class constructor.

handle(request)

Use it as your Lambda Handler. It will authenticate each query.

const authenticator = new ApiGatewayRequestValidator( ... );
exports.handler = async (request) => authenticator.handle(request);

Keywords

FAQs

Package last updated on 02 Aug 2022

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc