SDKs & Compatible Client Libraries

SDKs & Compatible Client Libraries

Fabrixly IDS is a fully standards-compliant OpenID Connect 1.0 and OAuth 2.0 authorization server. This means any standard OIDC/OAuth 2.0 client library works with it out of the box — and we also provide official SDKs and CLI for easy integration!

To connect any library, you need the following from your Fabrixly IDS — choose between cloud SaaS or self-hosted:

Config Cloud SaaS Value Self-hosted Value
Authority / Issuer URL https://ids.fabrixly.com/oidc https://auth.yourdomain.com/oidc
Discovery Document https://ids.fabrixly.com/oidc/.well-known/openid-configuration https://auth.yourdomain.com/oidc/.well-known/openid-configuration
JWKS Endpoint https://ids.fabrixly.com/oidc/.well-known/jwks.json https://auth.yourdomain.com/oidc/.well-known/jwks.json
Client ID Created via Fabrixly IDS Console → Clients Created via your self-hosted Fabrixly IDS Console → Clients
Client Secret For confidential clients only For confidential clients only

JavaScript / TypeScript

@fabrixly/sdk (Official)

Fabrixly's official Node.js SDK wraps both the management API (/api/*) and the OIDC endpoints (/oidc/*) behind a single, typed client.

npm install @fabrixly/sdk

The Two Authentication Models

Fabrixly IDS issues two different types of bearer tokens that are not interchangeable:

Token Obtained Via Used For Rejected By
User session JWT sdk.login(email, password) All management endpoints (/api/*) /oidc/*
OIDC access token sdk.loginClientCredentials() or OAuth authorization flows /oidc/* endpoints and your resource APIs /api/*

Quick Start Example

import { FabrixlySDK } from '@fabrixly/sdk';

// 1. Management Model (uses user login JWT to manage users, orgs, etc.)
const sdk = new FabrixlySDK({ baseUrl: 'https://ids.fabrixly.com' });
const authResult = await sdk.login('admin@system.com', 'admin123');

// List users using management APIs
const users = await sdk.getUsers();
console.log('Users:', users);

// 2. Machine-to-Machine Model (uses client credentials to fetch OIDC access tokens)
const oidc = new FabrixlySDK({
  baseUrl: 'https://ids.fabrixly.com',
  clientId: 'your-client-id',
  clientSecret: 'your-client-secret',
});
const token = await oidc.loginClientCredentials();
const tokenInfo = await oidc.introspectToken();

🔗 npmjs.com/package/@fabrixly/sdk


@fabrixly/cli (Official CLI)

We provide an official Command-Line Interface (fab) to manage your Fabrixly IDS resources, trigger authentication flows, and manage credentials directly from your terminal.

🔗 For detailed commands, authentication profiles, and output formatting, see the CLI Documentation.


oidc-client-ts

The most widely used OIDC client for browser-based apps. Framework-agnostic, supports Authorization Code + PKCE, silent token renewal, and session monitoring.

npm install oidc-client-ts
import { UserManager } from 'oidc-client-ts';

const userManager = new UserManager({
  // For Cloud SaaS
  authority: 'https://ids.fabrixly.com/oidc',
  // For Self-hosted
  // authority: 'https://auth.yourdomain.com/oidc',
  client_id: 'your-client-id',
  redirect_uri: 'https://app.yourdomain.com/callback',
  scope: 'openid profile email',
});

// Login
await userManager.signinRedirect();

// Handle callback
const user = await userManager.signinRedirectCallback();

// Get current user
const user = await userManager.getUser();

🔗 npmjs.com/package/oidc-client-ts


openid-client (Node.js)

The gold-standard OIDC/OAuth 2.0 client for Node.js. Used server-side for token verification, introspection, client credentials, and all OAuth flows.

npm install openid-client
import { discovery, fetchUserInfo, clientCredentialsGrant } from 'openid-client';

// Auto-discover Fabrixly IDS endpoints
const config = await discovery(
  // For Cloud SaaS
  new URL('https://ids.fabrixly.com/oidc'),
  // For Self-hosted
  // new URL('https://auth.yourdomain.com/oidc'),
  'your-client-id',
  'your-client-secret'
);

// Client Credentials (M2M)
const tokens = await clientCredentialsGrant(config, { scope: 'api:read' });

🔗 npmjs.com/package/openid-client


React

react-oidc-context

A React context wrapper around oidc-client-ts. Provides useAuth() hook, <AuthProvider>, and <AuthConsumer> components.

npm install oidc-client-ts react-oidc-context
import { AuthProvider, useAuth } from 'react-oidc-context';

const oidcConfig = {
  // For Cloud SaaS
  authority: 'https://ids.fabrixly.com/oidc',
  // For Self-hosted
  // authority: 'https://auth.yourdomain.com/oidc',
  client_id: 'your-client-id',
  redirect_uri: 'https://app.yourdomain.com/callback',
};

// Wrap your app
<AuthProvider {...oidcConfig}>
  <App />
</AuthProvider>

// Inside any component
function App() {
  const auth = useAuth();
  if (auth.isLoading) return <div>Loading...</div>;
  if (!auth.isAuthenticated) return <button onClick={auth.signinRedirect}>Login</button>;
  return <p>Hello {auth.user?.profile.name}</p>;
}

🔗 npmjs.com/package/react-oidc-context


Next.js

Auth.js (NextAuth v5)

The most popular auth library for Next.js. Supports any OIDC provider via a custom provider config pointing to Fabrixly IDS.

npm install next-auth
// auth.ts
import NextAuth from 'next-auth';

export const { handlers, signIn, signOut, auth } = NextAuth({
  providers: [
    {
      id: 'fabrixly-ids',
      name: 'Fabrixly IDS',
      type: 'oidc',
      // For Cloud SaaS
      issuer: 'https://ids.fabrixly.com/oidc',
      // For Self-hosted
      // issuer: 'https://auth.yourdomain.com/oidc',
      clientId: process.env.FABRIXLY_CLIENT_ID,
      clientSecret: process.env.FABRIXLY_CLIENT_SECRET,
      // Fabrixly IDS UserInfo endpoint is /oidc/me — override required
      userinfo: 'https://ids.fabrixly.com/oidc/me', // Cloud
      // userinfo: 'https://auth.yourdomain.com/oidc/me', // Self-hosted
    },
  ],
});

🔗 authjs.dev


Angular

angular-oauth2-oidc

The most popular OIDC library for Angular apps. Supports Authorization Code + PKCE, silent refresh, and session checks.

npm install angular-oauth2-oidc
import { OAuthModule, AuthConfig } from 'angular-oauth2-oidc';

export const authConfig: AuthConfig = {
  // For Cloud SaaS
  issuer: 'https://ids.fabrixly.com/oidc',
  // For Self-hosted
  // issuer: 'https://auth.yourdomain.com/oidc',
  clientId: 'your-client-id',
  redirectUri: window.location.origin + '/callback',
  // Use offline_access to request a refresh token from Fabrixly IDS
  scope: 'openid profile email offline_access',
  responseType: 'code',
  useSilentRefresh: true,
  // Fabrixly IDS UserInfo endpoint is /oidc/me
  userinfoEndpoint: 'https://ids.fabrixly.com/oidc/me', // Cloud
  // userinfoEndpoint: 'https://auth.yourdomain.com/oidc/me', // Self-hosted
};

🔗 npmjs.com/package/angular-oauth2-oidc


Vue.js

vue-oidc-client

OIDC client for Vue 3 apps, built on top of oidc-client-ts.

npm install vue-oidc-client oidc-client-ts

🔗 npmjs.com/package/vue-oidc-client


Java / Spring Boot

Spring Security OAuth2 Resource Server

Built-in Spring Boot support for validating Fabrixly IDS JWTs using the JWKS endpoint.

<!-- pom.xml -->
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-oauth2-resource-server</artifactId>
</dependency>
# application.yml
spring:
  security:
    oauth2:
      resourceserver:
        jwt:
          # For Cloud SaaS
          issuer-uri: https://ids.fabrixly.com/oidc
          jwk-set-uri: https://ids.fabrixly.com/oidc/.well-known/jwks.json
          # For Self-hosted
          # issuer-uri: https://auth.yourdomain.com/oidc
          # jwk-set-uri: https://auth.yourdomain.com/oidc/.well-known/jwks.json

🔗 docs.spring.io/spring-security/oauth2

Nimbus OAuth 2.0 SDK (Java)

Low-level Java library for full OAuth 2.0 and OIDC protocol implementation.

<dependency>
  <groupId>com.nimbusds</groupId>
  <artifactId>oauth2-oidc-sdk</artifactId>
  <version>11.x</version>
</dependency>

🔗 connect2id.com/products/nimbus-oauth-2.0-sdk


.NET / C#

Microsoft.AspNetCore.Authentication.OpenIdConnect

Built-in .NET middleware for OIDC. Works directly with Fabrixly IDS discovery document.

dotnet add package Microsoft.AspNetCore.Authentication.OpenIdConnect
builder.Services.AddAuthentication().AddOpenIdConnect("fabrixly-ids", options => {
    // For Cloud SaaS
    options.Authority = "https://ids.fabrixly.com/oidc";
    // For Self-hosted
    // options.Authority = "https://auth.yourdomain.com/oidc";
    options.ClientId = "your-client-id";
    options.ClientSecret = "your-client-secret";
    options.ResponseType = "code";
    options.Scope.Add("openid");
    options.Scope.Add("profile");
});

🔗 learn.microsoft.com/aspnet/openidconnect

IdentityModel.OidcClient (.NET)

A certified OIDC client library for native and mobile .NET apps.

dotnet add package IdentityModel.OidcClient

🔗 identitymodel.readthedocs.io


Python

Authlib

The most complete OAuth 2.0 and OIDC library for Python — works with Flask, Django, FastAPI, and plain Python.

pip install authlib
from authlib.integrations.requests_client import OAuth2Session

client = OAuth2Session(
    client_id='your-client-id',
    client_secret='your-client-secret',
    scope='openid profile email'
)

# Authorization Code flow
# For Cloud SaaS
uri, state = client.create_authorization_url('https://ids.fabrixly.com/oidc/authorize')
# For Self-hosted
# uri, state = client.create_authorization_url('https://auth.yourdomain.com/oidc/authorize')

🔗 authlib.org

python-jose / PyJWT

For verifying Fabrixly IDS JWTs server-side using the JWKS endpoint.

pip install python-jose[cryptography]
# or
pip install PyJWT[crypto]

🔗 python-jose.readthedocs.io


Go

go-oidc + oauth2

The standard Go OIDC library by CoreOS — used with the golang.org/x/oauth2 package.

go get github.com/coreos/go-oidc/v3/oidc
go get golang.org/x/oauth2
// For Cloud SaaS
provider, err := oidc.NewProvider(ctx, "https://ids.fabrixly.com/oidc")
// For Self-hosted
// provider, err := oidc.NewProvider(ctx, "https://auth.yourdomain.com/oidc")

oauth2Config := oauth2.Config{
    ClientID:     "your-client-id",
    ClientSecret: "your-client-secret",
    RedirectURL:  "https://app.yourdomain.com/callback",
    Endpoint:     provider.Endpoint(),
    Scopes:       []string{oidc.ScopeOpenID, "profile", "email"},
}

🔗 pkg.go.dev/github.com/coreos/go-oidc


iOS / Swift

AppAuth-iOS

Google's official OIDC/OAuth 2.0 client library for iOS and macOS. Handles PKCE, token storage, and refresh.

// Package.swift
.package(url: "https://github.com/openid/AppAuth-iOS.git", from: "1.7.0")
// Use auto-discovery — Fabrixly IDS discovery is at /oidc/.well-known/openid-configuration
// For Cloud SaaS
let issuer = URL(string: "https://ids.fabrixly.com/oidc")!
// For Self-hosted
// let issuer = URL(string: "https://auth.yourdomain.com/oidc")!

OIDAuthorizationService.discoverConfiguration(forIssuer: issuer) { config, error in
    guard let config = config else { return }
    // config.authorizationEndpoint → https://ids.fabrixly.com/oidc/auth (cloud) or https://auth.yourdomain.com/oidc/auth (self-hosted)
    // config.tokenEndpoint         → https://ids.fabrixly.com/oidc/token (cloud) or https://auth.yourdomain.com/oidc/token (self-hosted)
    // config.userinfoEndpoint      → https://ids.fabrixly.com/oidc/me (cloud) or https://auth.yourdomain.com/oidc/me (self-hosted)
}

// Or configure manually with Fabrixly IDS endpoints:
let config = OIDServiceConfiguration(
    // For Cloud SaaS
    authorizationEndpoint: URL(string: "https://ids.fabrixly.com/oidc/auth")!,
    tokenEndpoint: URL(string: "https://ids.fabrixly.com/oidc/token")!
    // For Self-hosted
    // authorizationEndpoint: URL(string: "https://auth.yourdomain.com/oidc/auth")!,
    // tokenEndpoint: URL(string: "https://auth.yourdomain.com/oidc/token")!
)

🔗 github.com/openid/AppAuth-iOS


Android / Kotlin

AppAuth-Android

The Android counterpart to AppAuth-iOS. Supports Authorization Code + PKCE and secure token storage.

implementation 'net.openid:appauth:0.11.1'
// Use Fabrixly IDS discovery endpoint
// For Cloud SaaS
val issuerUri = Uri.parse("https://ids.fabrixly.com/oidc")
// For Self-hosted
// val issuerUri = Uri.parse("https://auth.yourdomain.com/oidc")

AuthorizationServiceConfiguration.fetchFromIssuer(issuerUri) { config, ex ->
    // config.authorizationEndpoint → https://ids.fabrixly.com/oidc/auth (cloud) or https://auth.yourdomain.com/oidc/auth (self-hosted)
    // config.tokenEndpoint         → https://ids.fabrixly.com/oidc/token (cloud) or https://auth.yourdomain.com/oidc/token (self-hosted)
}

// Or manually:
val config = AuthorizationServiceConfiguration(
    // For Cloud SaaS
    Uri.parse("https://ids.fabrixly.com/oidc/auth"),   // authorization
    Uri.parse("https://ids.fabrixly.com/oidc/token")   // token
    // For Self-hosted
    // Uri.parse("https://auth.yourdomain.com/oidc/auth"),   // authorization
    // Uri.parse("https://auth.yourdomain.com/oidc/token")   // token
)

🔗 github.com/openid/AppAuth-Android


Subscribe to The Fabrixly Blog

Don’t miss out on the latest issues. Sign up now to get access to the library of members-only issues.
jamie@example.com
Subscribe