@digi-io/device-sdk
v1.1.1
Published
Device Identity SDK
Readme
@digi-io/device-sdk
Device Identity SDK for browser and device fingerprinting.
This package provides a DeviceSDK class with a generate() method to extract various signals (browser, screen, timezone, language, hardware, etc.) and normalizes them into a stable SHA-256 fingerprint hash.
Installation
npm install @digi-io/device-sdkUsage
Phase 1: Core Signals
By default, the SDK collects stable, non-intrusive core signals (browser, screen, language, timezone, and hardware):
import { DeviceSDK } from "@digi-io/device-sdk";
const sdk = new DeviceSDK();
sdk.generate().then((fingerprint) => {
console.log("Device Hash:", fingerprint.hash);
console.log("Device Data:", fingerprint);
});Phase 2: Advanced Fingerprinting
To generate a more unique fingerprint, you can enable advanced collectors like Canvas, WebGL, and Audio:
import { DeviceSDK } from "@digi-io/device-sdk";
const sdk = new DeviceSDK({
includeCanvas: true,
includeWebGL: true,
includeAudio: true,
includeFonts: true,
includePlugins: true,
includeMediaDevices: true
});
const fingerprint = await sdk.generate();
console.log("Advanced Fingerprint:", fingerprint.hash);Phase 3: Integrity & Risk Signals
You can also enable integrity checks and heuristics to detect bots, emulators, and tampering:
import { DeviceSDK } from "@digi-io/device-sdk";
const sdk = new DeviceSDK({
// Advanced Fingerprinting
includeCanvas: true,
includeWebGL: true,
// Integrity & Risk Signals
detectIncognito: true,
detectAutomation: true, // e.g. WebDriver
detectHeadless: true,
detectVM: true,
detectDevTools: true,
enableAntiTampering: true
});
const fingerprint = await sdk.generate();
console.log("Risk Score & Integrity Data:", fingerprint);Phase 4: Identity Integration
The SDK also provides helpers for securely integrating with identity backend systems via signed payloads and API clients.
import { DeviceSDK, DeviceIdentity, DeviceAPI } from "@digi-io/device-sdk";
const sdk = new DeviceSDK();
const fingerprint = await sdk.generate();
// 1. Generate JWT-compatible Claims & Signed Payloads
const identity = new DeviceIdentity();
await identity.generateKeyPair(); // ECDSA Key Pair
const signedPayload = await identity.generateSignedDevicePayload(fingerprint, {
risk_score: fingerprint.integrity?.entropyScore || 0,
trusted_device: false
});
console.log("Signed Device Payload:", signedPayload);
// 2. Interact with Backend Device APIs
const deviceApi = new DeviceAPI({
baseUrl: 'https://api.digi-io.com',
getToken: () => 'my-digi-token'
});
// Register or fetch devices
const userDevices = await deviceApi.getDevices();
console.log("User Devices:", userDevices);
// Trust or Revoke Devices
await deviceApi.trustDevice('device_123');
await deviceApi.revokeDevice('device_123');