Skip to content
This repository has been archived by the owner on Jun 18, 2024. It is now read-only.

The simplest all-in-one authentication library for JavaScript.

License

Notifications You must be signed in to change notification settings

boywithkeyboard-archive/authenticus

Repository files navigation

authenticus

authenticus is a all-in-one authentication library for Node.js, Deno, Cloudflare Workers, etc.

Warning

authenticus is no longer actively maintained, please migrate to e.g. arctic. If you're interested in maintaining this library, please reach out to me through my website.

Setup

Node.js

npm i authenticus

Deno

deno.json

{
  "imports": {
    "authenticus": "https://esm.sh/authenticus@4.1.1"
  }
}

OAuth 2.0

Presets:

Important

You should wrap your code within a try...catch block, as each of the methods listed below can cause an AuthenticusError in some rare cases.

import { GitHub } from 'authenticus'
  1. Initialize client.

    const github = new GitHub({
      clientId: '...',
      clientSecret: '...',
      scopes: [
        'read:user',
        'user:email'
      ] // optional
    })
  2. Create a authorization url.

    const url = github.createAuthorizeUri({
      state: '...',
      allowSignup: true
    })
  3. Retrieve an access token.

    const { accessToken } = await github.getToken({
      code: '...',
      redirectUri: 'https://example.com/oauth2/callback'
    })
  4. Retrieve the user.

    const user = await github.getUser(accessToken)
    
    , normalizedUser = github.normalizeUser(user)

JWT

authenticus' JWT implementation is based on @timonson's djwt, which is available under the MIT license.

import { jwt } from 'authenticus'

jwt.sign(...)

Please refer to this page for a full guide.

OTP

authenticus' OTP implementation is based on @hectorm's otpauth, which is available under the MIT license.

import { otp } from 'authenticus'

// Generate a random secret.
const secret = otp.createRandomSecret()

// Create an URI for a QR code for Google Authenticator.
const uri = otp.createUri(secret, 'Issuer', 'Label')

// Get the current OTP.
const token = otp.createToken(secret)

// Check the validity of a token.
const result = otp.isValid(secret, '<token>')