@decionis/presence-auth
Advanced tools
+10
-10
| { | ||
| "name": "@decionis/presence-auth", | ||
| "version": "0.1.1", | ||
| "version": "0.2.0", | ||
| "description": "Server-side Presence auth hooks for Auth0, Clerk, Okta, Entra, PingOne, and Supabase: risk-based step-up and assurance that replaces always-on MFA, over the Presence /v1/check API.", | ||
@@ -52,14 +52,8 @@ "license": "Apache-2.0", | ||
| ], | ||
| "scripts": { | ||
| "build": "tsc -p tsconfig.json", | ||
| "test": "vitest run", | ||
| "lint": "eslint src", | ||
| "typecheck": "tsc -p tsconfig.json --noEmit" | ||
| }, | ||
| "devDependencies": { | ||
| "@presence/config": "workspace:*", | ||
| "@types/node": "^22.20.1", | ||
| "eslint": "^9.17.0", | ||
| "typescript": "^5.7.2", | ||
| "vitest": "^2.1.8" | ||
| "vitest": "^2.1.8", | ||
| "@presence/config": "0.1.0" | ||
| }, | ||
@@ -72,3 +66,9 @@ "engines": { | ||
| "registry": "https://registry.npmjs.org/" | ||
| }, | ||
| "scripts": { | ||
| "build": "tsc -p tsconfig.json", | ||
| "test": "vitest run", | ||
| "lint": "eslint src", | ||
| "typecheck": "tsc -p tsconfig.json --noEmit" | ||
| } | ||
| } | ||
| } |
+6
-7
| # Presence Auth Hooks | ||
| `packages/presence-auth` (npm: `@decionis/presence-auth`) is the **E-commerce & auth** channel from | ||
| the [ecosystem roadmap](../../docs/27-ecosystem-roadmap.md): server-side hooks that gate a login or | ||
| the ecosystem roadmap (docs/27): server-side hooks that gate a login or | ||
| sensitive action on a Presence disposition — the **MFA-replacement motion**. It is a thin adapter over | ||
| `POST /v1/check` ([docs/32](../../docs/32-presence-web.md)); the full contract is | ||
| [docs/37](../../docs/37-presence-auth.md). | ||
| `POST /v1/check` (docs/32); the full contract is docs/37 in the repository. | ||
| ## Model | ||
| The sign-in page runs the Presence [widget](../widget), which mints a browser **Session Token**. Your | ||
| The sign-in page runs the Presence [widget](https://www.npmjs.com/package/@decionis/presence-widget), which mints a browser **Session Token**. Your | ||
| auth hook holds the **tenant API secret** (server-side only), passes that token to `POST /v1/check`, | ||
@@ -79,3 +78,3 @@ and enforces the answer: | ||
| Beyond the consumer Auth0/Clerk hooks, the package ships **inline-hook handlers** for the enterprise | ||
| IdPs ([docs/39](../../docs/39-presence-idp-hooks.md)): the IdP calls a Presence-provided handler | ||
| IdPs (docs/39): the IdP calls a Presence-provided handler | ||
| during a privileged auth event, and the handler delegates to `/v1/check`. Each is framework-agnostic | ||
@@ -95,3 +94,3 @@ (`(request) => { status, body }`), verifies a configured shared secret, and fails closed: | ||
| returns a decision a DaVinci flow branches on. Distinct from the platform-side | ||
| [Okta connector](../../docs/17-okta-connector.md), which runs inside Presence. | ||
| Okta connector (docs/17), which runs inside Presence. | ||
@@ -114,5 +113,5 @@ ## Boundaries | ||
| Lockstep `0.x` npm line ([docs/23](../../docs/23-sdk-distribution.md)) with subpath exports (`.`, | ||
| Lockstep `0.x` npm line (docs/23) with subpath exports (`.`, | ||
| `./auth0`, `./clerk`, `./okta`, `./entra`, `./ping`) and no runtime dependencies — Node's global | ||
| `fetch` only. Consumer Shopify/Firebase listings and the enterprise Salesforce/ServiceNow plugins are | ||
| the planned follow-on for these channels. |
89236
-0.16%115
-0.86%