• Stars
    star
    143
  • Rank 257,007 (Top 6 %)
  • Language
    Java
  • License
    Apache License 2.0
  • Created about 8 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A simple to use Java 8 JWT Library. Verify, Sign, Encode, Decode all day.

FusionAuth JWT semver 2.0.0 compliant Tests

FusionAuth JWT is intended to be fast and easy to use. FusionAuth JWT has a single external dependency on Jackson, no Bouncy Castle, Apache Commons or Guava.

Security disclosures

If you find a vulnerability or other security related bug, please send a note to [email protected] before opening a GitHub issue. This will allow us to assess the disclosure and prepare a fix prior to a public disclosure.

We are very interested in compensating anyone that can identify a security related bug or vulnerability and properly disclose it to us.

Features

  • JWT signing using HMAC, RSA and Elliptic Curve support
    • HS256, HS384, HS512, RS256, RS384, RS512, ES256, ES384, ES512
  • JWT signing using RSA-PSS signatures
  • Modular crypto provider so you can drop in support for BC FIPS or other JCE security providers.
  • PEM decoding / encoding
    • Decode PEM files to PrivateKey or PublicKey
      • Decode private EC keys un-encapsulated in PKCS#8, returned PEM will be in PKCS#8 form.
      • Both public and private keys will be returned when encoded in the private PEM
    • Encode PrivateKey or PublicKey to PEM
  • JSON Web Key
    • Build JWK from Private Key
    • Build JWK from Public Key
    • Build JWK from PEM
    • Parse public keys from a JSON Web Key
    • Retrieve JWK from JWKS endpoints
  • Helpers
    • Generate RSA Key Pairs in 2048, 3072 or 4096 bit sizes
    • Generate EC Key Pairs in 256, 384 and 521 bit sizes
    • Generate x5t and x5t#256 values from X.509 Certificates
    • Generate JWK thumbprint using SHA-1 or SHA-256
    • Generate ideal HMAC secret lengths for SHA-256, SHA-384 and SHA-512
    • Generate the at_hash and c_hash claims for OpenID Connect

Get it

Maven

<dependency>
 <groupId>io.fusionauth</groupId>
 <artifactId>fusionauth-jwt</artifactId>
 <version>5.2.4</version>
</dependency>

Gradle

implementation 'io.fusionauth:fusionauth-jwt:5.2.4'

Gradle Kotlin

implementation("io.fusionauth:fusionauth-jwt:5.2.4")

Savant

dependency(id: "io.fusionauth:fusionauth-jwt:5.2.4")

For others see https://search.maven.org.

Example Code:

JWT Signing and Verifying

Sign and encode a JWT using HMAC

// Build an HMAC signer using a SHA-256 hash
Signer signer = HMACSigner.newSHA256Signer("too many secrets");

// Build a new JWT with an issuer(iss), issued at(iat), subject(sub) and expiration(exp)
JWT jwt = new JWT().setIssuer("www.acme.com")
                   .setIssuedAt(ZonedDateTime.now(ZoneOffset.UTC))
                   .setSubject("f1e33ab3-027f-47c5-bb07-8dd8ab37a2d3")
                   .setExpiration(ZonedDateTime.now(ZoneOffset.UTC).plusMinutes(60));
                       
// Sign and encode the JWT to a JSON string representation
String encodedJWT = JWT.getEncoder().encode(jwt, signer);

A higher strength hash can be used by changing the signer. The encoding and decoding steps are not affected.

// Build an HMAC signer using a SHA-384 hash
Signer signer384 = HMACSigner.newSHA384Signer("too many secrets");

// Build an HMAC signer using a SHA-512 hash
Signer signer512 = HMACSigner.newSHA512Signer("too many secrets");

Verify and decode a JWT using HMAC

// Build an HMC verifier using the same secret that was used to sign the JWT
Verifier verifier = HMACVerifier.newVerifier("too many secrets");

// Verify and decode the encoded string JWT to a rich object
JWT jwt = JWT.getDecoder().decode(encodedJWT, verifier);

// Assert the subject of the JWT is as expected
assertEquals(jwt.subject, "f1e33ab3-027f-47c5-bb07-8dd8ab37a2d3");

Sign and encode a JWT using RSA

// Build an RSA signer using a SHA-256 hash. A signer may also be built using the PrivateKey object.
Signer signer = RSASigner.newSHA256Signer(new String(Files.readAllBytes(Paths.get("private_key.pem"))));

// Build a new JWT with an issuer(iss), issued at(iat), subject(sub) and expiration(exp)
JWT jwt = new JWT().setIssuer("www.acme.com")
                   .setIssuedAt(ZonedDateTime.now(ZoneOffset.UTC))
                   .setSubject("f1e33ab3-027f-47c5-bb07-8dd8ab37a2d3")
                   .setExpiration(ZonedDateTime.now(ZoneOffset.UTC).plusMinutes(60));
        
// Sign and encode the JWT to a JSON string representation
String encodedJWT = JWT.getEncoder().encode(jwt, signer);

A higher strength hash can be used by changing the signer. The encoding and decoding steps are not affected.

// Build an RSA signer using a SHA-384 hash
Signer signer = RSASigner.newSHA384Signer(new String(Files.readAllBytes(Paths.get("private_key.pem"))));

// Build an RSA signer using a SHA5124 hash
Signer signer = RSASigner.newSHA512Signer(new String(Files.readAllBytes(Paths.get("private_key.pem"))));

Verify and decode a JWT using RSA

// Build an RSA verifier using an RSA Public Key. A verifier may also be built using the PublicKey object.
Verifier verifier = RSAVerifier.newVerifier(Paths.get("public_key.pem"));

// Verify and decode the encoded string JWT to a rich object
JWT jwt = JWT.getDecoder().decode(encodedJWT, verifier);

// Assert the subject of the JWT is as expected
assertEquals(jwt.subject, "f1e33ab3-027f-47c5-bb07-8dd8ab37a2d3");

Sign and encode a JWT using EC

// Build an EC signer using a SHA-256 hash. A signer may also be built using the PrivateKey object.
Signer signer = ECSigner.newSHA256Signer(new String(Files.readAllBytes(Paths.get("private_key.pem"))));

// Build a new JWT with an issuer(iss), issued at(iat), subject(sub) and expiration(exp)
JWT jwt = new JWT().setIssuer("www.acme.com")
                   .setIssuedAt(ZonedDateTime.now(ZoneOffset.UTC))
                   .setSubject("f1e33ab3-027f-47c5-bb07-8dd8ab37a2d3")
                   .setExpiration(ZonedDateTime.now(ZoneOffset.UTC).plusMinutes(60));
        
// Sign and encode the JWT to a JSON string representation
String encodedJWT = JWT.getEncoder().encode(jwt, signer);

A higher strength hash can be used by changing the signer. The encoding and decoding steps are not affected.

// Build an EC signer using a SHA-384 hash
Signer signer = ECSigner.newSHA384Signer(new String(Files.readAllBytes(Paths.get("private_key.pem"))));

// Build an EC signer using a SHA-512 hash
Signer signer = ECSigner.newSHA512Signer(new String(Files.readAllBytes(Paths.get("private_key.pem"))));

Verify and decode a JWT using EC

// Build an EC verifier using an EC Public Key. A verifier may also be built using the PublicKey object.
Verifier verifier = ECVerifier.newVerifier(Paths.get("public_key.pem"));

// Verify and decode the encoded string JWT to a rich object
JWT jwt = JWT.getDecoder().decode(encodedJWT, verifier);

// Assert the subject of the JWT is as expected
assertEquals(jwt.subject, "f1e33ab3-027f-47c5-bb07-8dd8ab37a2d3");

Verify a JWT adjusting for Clock Skew

// Build an EC verifier using an EC Public Key
Verifier verifier = ECVerifier.newVerifier(Paths.get("public_key.pem"));

// Verify and decode the encoded string JWT to a rich object and allow up to 60 seconds
// of clock skew when asserting the 'exp' and 'nbf' claims if they exist.
JWT jwt = JWT.getDecoder().withClockSkew(60).decode(encodedJWT, verifier);

// Assert the subject of the JWT is as expected
assertEquals(jwt.subject, "f1e33ab3-027f-47c5-bb07-8dd8ab37a2d3");

Verify an expired JWT by going back in time

In a scenario where you may have a hard coded JWT in a test case that you wish to validate, you may use the time machine JWT decoder. Ideally you would not hard code JWTs in your tests and instead generate a new one each time so that the JWT would pass the expiration check. If this is not possible, this option is provided.

// Build an EC verifier using an EC Public Key
Verifier verifier = ECVerifier.newVerifier(Paths.get("public_key.pem"));

// Using the time machine decoder, you may adjust 'now' to any point in the past, or future.
// Note, this is only provided for testing, and should not be used in production.
ZonedDateTime thePast = ZonedDateTime.of(2019, 1, 1, 0, 0, 0, 0, ZoneOffset.UTC) 
JWT jwt = JWT.getTimeMachineDecoder(thePast).decode(encodedJWT, verifier);

// Assert the subject of the JWT is as expected
assertEquals(jwt.subject, "f1e33ab3-027f-47c5-bb07-8dd8ab37a2d3");

Build a Signer, or a Verifier using a provided CryptoProvider

This pattern is available on the HMAC, RSA and EC verifier and signers.

// Build and EC signer using a BC Fips ready Crypto Provider
Signer signer = ECSigner.newSHA256Signer(new String(Files.readAllBytes(Paths.get("private_key.pem"))), new BCFIPSCryptoProvider());

// Build an EC verifier using a BC Fips ready Crypto Provider
Verifier verifier = ECVerifier.newVerifier(Paths.get("public_key.pem"), new BCFIPSCryptoProvider());

JSON Web Keys

Retrieve JSON Web Keys from a JWKS endpoint

// Retrieve JSON Web Keys using a known JWKS endpoint
// - You may optionally provide a HttpURLConnection to this method instead of a string if you want to build your own connection.
List<JSONWebKey> keys = JSONWebKeySetHelper.retrieveKeysFromJWKS("https://www.googleapis.com/oauth2/v3/certs");

// Retrieve JSON Web Keys using a well known OpenID Connect configuration endpoint
// - You may optionally provide a HttpURLConnection to this method instead of a string if you want to build your own connection.
List<JSONWebKey> keys = JSONWebKeySetHelper.retrieveKeysFromWellKnownConfiguration("https://accounts.google.com/.well-known/openid-configuration");

// Retrieve JSON Web Keys using an OpenID Connect issuer endpoint
List<JSONWebKey> keys = JSONWebKeySetHelper.retrieveKeysFromIssuer("https://accounts.google.com");

Convert a Public Key to JWK

JSONWebKey jwk = JSONWebKey.build(publicKey);
String json = jwk.toJSON();
{
  "e": "AQAB",
  "kty": "RSA",
  "n": "Auchby3lZKHbiAZrTkJh79hJvgC3W7STSS4y6UZEhhxx3m3W2hD8qCyw6BEyrciPpwou-vmeDN7qBSk2QKqTTjlg5Pkf8O4z8d9HAlBTUDg4p98qLFOF2EFWWTiFbQwAP2qODOIv9WCAM2rkXEPwGiF962XAoOwiSmldeDu7Uo5A-bnTi0z3oNu4qm_48kv90o9CMiELszE9jsfoH32WE71HDqhsRjVNddDJ81e5zxBN8UEmaR-gmWqa63laON2KANPugJP7PrYJ_PC9ilQfV3F1rDpqbvlFQkshohJ39VrVpEtSRmJ12nqTFuspXLApekOyic3J9jo6ZI7o3IdQmy3bpnJIT_U",
  "use": "sig"
}

Extract the Public Key from a JWK

{
  "e": "AQAB",
  "kty": "RSA",
  "n": "Auchby3lZKHbiAZrTkJh79hJvgC3W7STSS4y6UZEhhxx3m3W2hD8qCyw6BEyrciPpwou-vmeDN7qBSk2QKqTTjlg5Pkf8O4z8d9HAlBTUDg4p98qLFOF2EFWWTiFbQwAP2qODOIv9WCAM2rkXEPwGiF962XAoOwiSmldeDu7Uo5A-bnTi0z3oNu4qm_48kv90o9CMiELszE9jsfoH32WE71HDqhsRjVNddDJ81e5zxBN8UEmaR-gmWqa63laON2KANPugJP7PrYJ_PC9ilQfV3F1rDpqbvlFQkshohJ39VrVpEtSRmJ12nqTFuspXLApekOyic3J9jo6ZI7o3IdQmy3bpnJIT_U",
  "use": "sig"
}
String json = { ... example above ... }
byte[] bytes = json.getBytes(StandardCharsets.UTF_8);
JSONWebKey jwk = Mapper.deserialize(bytes, JSONWebKey.class);
PublicKey publicKey = JSONWebKey.parse(jwk);

Convert a Private Key to JWK

JSONWebKey jwk = JSONWebKey.build(privateKey);
String json = jwk.toJSON();
{
  "p": "9dy6wUxA0eOHopUP-E5QjDzuW8rXdaQMR566oDJ1qL0iD0koQAB9X3hboB-2Rru0aATu6WDW-jd4mgtYnXO8ow",
  "kty": "RSA",
  "q": "6Nfc6c8meTRkVRAHCF24LB5GLfsjoMB0tOeEO9w9Ous1a4o-D24bAePMUImAp3woFoNDRfWtlNktOqLel5Pjew",
  "d": "C0G3QGI6OQ6tvbCNYGCqq043YI_8MiBl7C5dqbGZmx1ewdJBhMNJPStuckhskURaDwk4-8VBW9SlvcfSJJrnZhgFMjOYSSsBtPGBIMIdM5eSKbenCCjO8Tg0BUh_xa3CHST1W4RQ5rFXadZ9AeNtaGcWj2acmXNO3DVETXAX3x0",
  "e": "AQAB",
  "use": "sig",
  "qi": "XLE5O360x-MhsdFXx8Vwz4304-MJg-oGSJXCK_ZWYOB_FGXFRTfebxCsSYi0YwJo-oNu96bvZCuMplzRI1liZw",
  "dp": "32QGgDmjr9GX3N6p2wh1YWa_gMHmUSqUScLseUA_7eijeNYU70pCoCtAvVXzDYPhoJ3S4lQuIL2kI_tpMe8GFw",
  "dq": "21tJjqeN-k-mWhCwX2xTbpTSzsyy4uWMzUTy6aXxtUkTWY2yK70yClS-Df2MS70G0za0MPtjnUAAgSYhB7HWcw",
  "n": "359ZykLITko_McOOKAtpJRVkjS5itwZxzjQidW2X6tBEOYCH4LZbwfj8fGGvlUtzpyuwnYuIlNX8TvZLTenOk45pphXr5PMCMKi7YZgkhd6_t_oeHnXY-4bnDLF1r9OUFKwj6C-mFFM-woKc-62tuK6QJiuc-5bFfn9wRL15K1E"
}

Add a custom property to a JWK

JSONWebKey jwk = JSONWebKey.build(privateKey)
                           .add("boom", "goes the dynamite")
                           .add("more", "cowbell");
String json = jwk.toJSON();
{
  "alg" : "ES256",
  "boom" : "goes the dynamite",
  "crv" : "P-256",
  "kty" : "EC",
  "more" : "cowbell",
  "use" : "sig",
  "x" : "NIWpsIea0qzB22S0utDG8dGFYqEInv9C7ZgZuKtwjno",
  "y" : "iVFFtTgiInz_fjh-n1YqbibnUb2vtBZFs3wPpQw3mc0"
}

Building

Building with Maven

$ mvn install

Building with Savant

$ sb int

Note: If you do not yet have Savant build tool installed, use the following instructions.

mkdir ~/savant
cd ~/savant
wget http://savant.inversoft.org/org/savantbuild/savant-core/2.0.0-RC.6/savant-2.0.0-RC.6.tar.gz
tar xvfz savant-2.0.0-RC.6.tar.gz
ln -s ./savant-2.0.0-RC.6 current
export PATH=$PATH:~/savant/current/bin/

For more information, checkout savantbuild.org.

More Repositories

1

security-scripts

Scripts built from our Guide to User Data Security
Shell
442
star
2

java-http

A full featured, stand-alone, high-performance HTTP server and client written entirely in plain Java
Java
204
star
3

fusionauth-containers

Container definitions for docker, kubernetes, helm, and whatever containers come next!
Dockerfile
196
star
4

fusionauth-issues

FusionAuth issue submission project
91
star
5

fusionauth-install

FusionAuth simple install scripts. Copy, Paste, Code.
PowerShell
68
star
6

fusionauth-typescript-client

A TypeScript client for FusionAuth
TypeScript
52
star
7

fusionauth-site

Website and documentation for FusionAuth
MDX
49
star
8

terraform-provider-fusionauth

FusionAuth Terraform Provider
Go
34
star
9

fusionauth-example-modern-guide-to-oauth

The example application paired with the Modern Guide to OAuth
CSS
26
star
10

fusionauth-netcore-client

The .NET Core client for FusionAuth
C#
24
star
11

fusionauth-node-client

Node.js client library for FusionAuth
JavaScript
23
star
12

charts

Public helm charts
Mustache
23
star
13

go-client

FusionAuth Go Client Library!
Go
22
star
14

fusionauth-example-react

This simple example app shows how you can use FusionAuth in a React app to log in, log out, and manipulate user data.
JavaScript
20
star
15

fusionauth-php-client

PHP client library for FusionAuth
PHP
19
star
16

webauthn.wtf

The webauthn.wtf website
Astro
19
star
17

fusionauth-python-client

FusionAuth Python Client
Python
19
star
18

fusionauth-example-symfony-multitenant

An example multi tenant application.
PHP
16
star
19

fusionauth-nodejs-react-example

FusionAuth Example for Node.js and React
JavaScript
13
star
20

fusionauth-example-spring-security

An example usage of the fusionauth-spring-security project
Java
12
star
21

fusionauth-ruby-client

Ruby client library for FusionAuth
Ruby
11
star
22

fusionauth-localization

FusionAuth translations
Ruby
11
star
23

fusionauth-example-go-jwt-microservices

Example of a golang API gateway with authorization using JWT
Go
10
star
24

fusionauth-react-sdk

An SDK for using FusionAuth with React
TypeScript
10
star
25

fusionauth-import-scripts

FusionAuth Import scripts for Auth0 and other examples
Ruby
10
star
26

fusionauth-java-client

Java 8 client library for FusionAuth
Java
10
star
27

fusionauth-contrib

Community contributed examples and code
Java
9
star
28

fusionauth-dart-client

A Dart client for FusionAuth, Flutter compatible
Dart
9
star
29

fusionauth-javascript-sdk

Javascript SDK for FusionAuth
TypeScript
9
star
30

fusionauth-javascript-client

JavaScript client library for FusionAuth
JavaScript
8
star
31

fusionauth-example-node

Node.js example application that uses the OAuth 2 Authorization Code grant
JavaScript
8
star
32

fusionauth-openapi

FusionAuth OpenAPI client
Shell
7
star
33

fusionauth-example-vue

Vue.js and Express example application that uses the OAuth 2 Authorization Code grant
JavaScript
7
star
34

fusionauth-example-flask-portal

A user portal written in python/flask, using FusionAuth as the user data store
Python
7
star
35

fusionauth-theme-helper

Scripts to help update FusionAuth themes
Shell
6
star
36

fusionauth-example-node-services-gateway-jwtauth

Using JWT Auth for node microservices
JavaScript
6
star
37

fusionauth-example-laravel-single-sign-on

Sample application from the "Single sign-on with Laravel and FusionAuth" article
PHP
6
star
38

fusionauth-example-kickstart

Example Kickstart files
FreeMarker
6
star
39

fusionauth-example-python-flask

Sample flask application using FusionAuth for OAuth/OIDC
Python
6
star
40

fusionauth-2fa

Two Factor Helper for RFC4226 HMAC-Based One-Time Password Algorithm
JavaScript
6
star
41

fusionauth-example-go

Go
5
star
42

fusionauth-client-builder

The FusionAuth client library builder
FreeMarker
5
star
43

fusionauth-example-python-django

Python
5
star
44

fusionauth-samlv2

SAML v2.0 bindings in Java using JAXB
Java
5
star
45

fusionauth-example-flutter-dart

Dart
5
star
46

fusionauth-example-react-native-0-71

Java
5
star
47

fusionauth-quickstart-python-flask-web

CSS
5
star
48

fusionauth-astro-components

Astro component to pull in remote values or code at build time
Astro
5
star
49

fusionauth-spring-security

FusionAuth OpenID Connect Library for Spring Security
Java
4
star
50

fusionauth-example-rails-oauth

Example securing Rails app using FusionAuth
Ruby
4
star
51

fusionauth-example-react-native

demo for tutorial How to use FusionAuth with React native
Java
4
star
52

omniauth-fusionauth

Ruby OmniAuth Strategy for FusionAuth
Ruby
4
star
53

fusionauth-example-angular

Example of integrating Angular with FusionAuth via OAuth Authorization Code Grant
TypeScript
4
star
54

fusionauth-example-node-sso

Example of single sign-on with FusionAuth and node
JavaScript
4
star
55

fusionauth-example-react-2.0

JavaScript
4
star
56

fusionauth-csharp-client

C# client library for FusionAuth
C#
4
star
57

fusionauth-example-go-jwt

JWT manipulation in golang
Go
3
star
58

fusionauth-example-django-single-sign-on

Single sign-on with django and FusionAuth
Python
3
star
59

fusionauth-example-node-services-gateway

A FusionAuth-powered API gateway with microservices example
JavaScript
3
star
60

fusionauth-load-tests

FusionAuth load tests
Java
3
star
61

fusionauth-angular-example

Angular7 example integration with FusionAuth
TypeScript
3
star
62

fusionauth-javascript-sdk-express

JavaScript
3
star
63

fusionauth-quickstart-dotnet-web

CSS
3
star
64

fusionauth-quickstart-dotnet-api

CSS
3
star
65

fusionauth-android-sdk

Android SDK for FusionAuth
CSS
3
star
66

fusionauth-example-node-multi-tenant

Multi tenant applications with FusionAuth
JavaScript
3
star
67

fusionauth-example-scripts

Example script which pulls all user data iterating by email prefix.
Shell
2
star
68

gdpr.js

JavaScript library for handling those pesky GDPR rules
JavaScript
2
star
69

fusionauth-example-java-spring

FusionAuth, Spring and OIDC example application
Java
2
star
70

fusionauth-example-password-encryptor

A example you can use to build a Password Encryptor Plugin for FusionAuth
Java
2
star
71

fusionauth-android-client

FusionAuth Android Client
Java
2
star
72

fusionauth-ebooks

Source for ebooks
2
star
73

fusionauth-example-go-device-code-grant

get-gif: An Example Golang CLI app using the FusionAuth Golang Client Library to provide Device Code OAuth
Go
2
star
74

fusionauth-example-java-jwt

Java JWT usage
Java
2
star
75

fusionauth-oauth1

Helper to build an OAuth v1 authorization header for Twitter or other OAuth v1 services.
Java
2
star
76

fusionauth-example-python-hotspot

Control a hotspot with FusionAuth
Python
2
star
77

fusionauth-example-rails-app

Ruby
2
star
78

fusionauth-example-rails-api

A rails API using JWT authentication
Ruby
2
star
79

fusionauth-example-python-jwt

JWT examples in python
Python
2
star
80

fusionauth-example-javascript-jwt

Example of JavaScript JWT manipulation
JavaScript
2
star
81

fusionauth-theme-history

Historical theme files
FreeMarker
2
star
82

homebrew-fusionauth

macOS Homebrew tap for FusionAuth
Ruby
2
star
83

fusionauth-example-react-sdk

Example of using FusionAuth with the react SDK.
CSS
2
star
84

fusionauth-quickstart-javascript-react-web

CSS
2
star
85

fusionauth-quickstart-javascript-angular-web

CSS
2
star
86

fusionauth-web-template

Web template for use with FusionAuth websites
HTML
2
star
87

fusionauth-quickstart-python-django-web

CSS
2
star
88

fusionauth-quickstart-react-native

Sample application for the React Native quickstart app
CSS
2
star
89

fusionauth-quickstart-golang-api

The quickstart for Go API
Go
2
star
90

fusionauth-example-cross-platform-game

An example of a cross platform game built using FusionAuth and dart
C++
1
star
91

fusionauth-example-laravel

A demo using FusionAuth to manage user authentication in Laravel
PHP
1
star
92

fusionauth-example-express-twitter

Example of using passport.js and FusionAuth to add login with twitter to your app.
JavaScript
1
star
93

fusionauth-swift-client

iOS Swift client library for FusionAuth
Swift
1
star
94

fusionauth-example-php-connector

Example application for use with a generic Connector.
PHP
1
star
95

fusionauth-theme-management

Shell
1
star
96

fusionauth-example-asp-netcore

An ASP.NET Core web application using FusionAuth as the identity server
C#
1
star
97

fusionauth-example-supabase

Sample application demonstrating how to use Supabase in a Next.js application with FusionAuth
JavaScript
1
star
98

fusionauth-angular-client

TypeScript
1
star
99

fusionauth-example-5-minute-guide

The 5 minute guide codebase
JavaScript
1
star
100

fusionauth-example-java

An example of using the java client
Java
1
star