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.
npm i authenticus
deno.json
{
"imports": {
"authenticus": "https://esm.sh/authenticus@4.1.1"
}
}
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'
-
Initialize client.
const github = new GitHub({ clientId: '...', clientSecret: '...', scopes: [ 'read:user', 'user:email' ] // optional })
-
Create a authorization url.
const url = github.createAuthorizeUri({ state: '...', allowSignup: true })
-
Retrieve an access token.
const { accessToken } = await github.getToken({ code: '...', redirectUri: 'https://example.com/oauth2/callback' })
-
Retrieve the user.
const user = await github.getUser(accessToken) , normalizedUser = github.normalizeUser(user)
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.
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>')