npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

cogcli

v1.7.0

Published

CLI tool to generate JWT from AWS Congito credentials

Downloads

3

Readme

:guardsman: cognito-cli

Small CLI tool to obtain a JWT from a Cognito userpools. Supports multiple userpools ordered by stages and MFA.

:rocket: Usage

  • Install globally npm install -g cogcli
  • Run the global command cognito or cogcli
  • New config will be created at ~/.cognito-cli/config.json
  • Provide credentials in the config file

:books: Configuration

This is the example ~/.cognito-cli/config.json:

{
    "settings": {
      "port": 8080
    },
    "pools": [
        {
            "name": "Example",
            "dev": {
                "poolId": "eu-west-1_1234567",
                "clientId": "abc123456",
                "username": "user",
                "password": "OPTIONAL_PASSWORD",
                "otpSecret": "OPTIONAL_OTPSECRET"
            }
        }
    ]
}

The password and otpSecret are optional. You'll be prompted for them if not added to the config.

With port the default port for the local webserver can be globally adjusted.

You can add as many pools with stages. Example:

{
    "settings": {
      "port": 8080
    },
    "pools": [
        {
            "name": "Application 1",
            "test123": {
                "poolId": "eu-west-1_1234567",
                "clientId": "abc123456",
                "username": "user",
                "password": "OPTIONAL_PASSWORD",
                "otpSecret": "OPTIONAL_OTPSECRET"
            }
        },
        {
            "name": "Something else",
            "hello": {
                "poolId": "eu-west-1_1234567",
                "clientId": "abc123456",
                "username": "user",
                "password": "OPTIONAL_PASSWORD"
            }
        }
    ]
}

:arrows_clockwise: MFA Support

When the Cognito user requires MFA login:

  • You can supply the OTP secret which can be used to generate a token in the config via otpSecret
  • If no otpSecret present you will be prompted to enter the token manually
  • You can also use --token 123456 to supply the token directly
  • When using the local webserver you can use the ?token=123456 query parameter with your request

:bangbang:️ Notice that this tool is for development purposes only. Never hold confidential credentials together with MFA secrets in a plain-text file.

:man_technologist: CLI

You can run the global command cognito.

Running without arguments

When you run just cognito without args you will be prompted with all possible pools & stages:

Shows list of applications configured

? What pool type would you like to use? (Use arrow keys)
❯ Application 1
  Application 2

Shows available stages for this application

? What pool type would you like to use? Application 1
? And for what stage?
  dev
❯ int
  prd

Copies the obtained JWT to your clipboard (macOS, Linux & Windows)

Copied JWT for Application 1 INT to clipboard!

Running with arguments

This CLI tool also allows the following arguments:

Usage: cognito [options]

Options:
  -V, --version        output the version number
  -p, --pool [name]    Use the pool by [name]
  -s, --stage [stage]  Use the [stage]
  -c, --copy           Copy the token directly to clipboard
  -S, --server [port]  Start a local webserver that can serve tokens
  -t, --token [token]  Token for MFA challenge
  -h, --help           display help for command

:globe_with_meridians: Local webserver

Using cognito -S will start a local webserver (default on port 8080) that can be used to retrieve a JWT token for pool & stage. The webserver has the following endpoint:

  • GET /{pool}/{stage} - Get a fresh JWT token (no caching!)
  • GET /{pool}/{stage}?token=123456 - Get a fresh JWT token with MFA token if required

Examples

$ curl -X GET http://localhost:8080/example/dev
{
  "token": "eyJra..."
}

That's useful for example in REST clients like Insomnia or Postman to chain requests: Get Token -> Post something.