Releases: losol/fides-auth
Release list
@eventuras/fides-auth@0.11.0
Minor Changes
-
82ec137: Route
clientCredentialsGrantthrough openid-client instead of a rawfetch.It was the one place the server module talked to a token endpoint directly, so it
missed the transport guards the rest of the package gets for free — while being the
request that carries the client secret. Three behaviour changes, all breaking:- The token endpoint must now be https. A plain-http endpoint rejects with
OAUTH_HTTP_REQUEST_FORBIDDENinstead of posting the secret in the clear. - Failures throw openid-client's typed errors rather than a generic
Error("Client credentials grant failed: <status> - <body>"). Code matching on
that message needs updating. - Requests time out, 30 seconds by default, where previously they never did.
Configurable via the newtimeoutoption (seconds).
Also adds an optional
issuertoClientCredentialsConfig, defaulting to the token
endpoint's origin. - The token endpoint must now be https. A plain-http endpoint rejects with
-
fa9de74: RP-initiated logout: send
id_token_hint.Tokens.idTokennow holds the raw ID token — populated bybuildSessionFromTokens,
kept fresh byrefreshSession, and stored in its ownsession_itcookie so no cookie
has to carry two large JWTs.readIdTokenreads it independently of session validity,
since logout needs the hint after the access token has expired.buildOidcLogoutUrl(oauthConfig, options)acceptsidTokenHint,state,
logoutHintandincludeClientIdalongsidepostLogoutRedirectUri. A string second
argument still meanspostLogoutRedirectUri, and it still returnsnullwhen the
provider advertises noend_session_endpoint.New
handleOidcLogouthandler in@eventuras/fides-auth/server—POST-only by
default and same-origin checked viaSec-Fetch-Site/Origin— wrapped for Next.js at
@eventuras/fides-auth-next/oidc-logout. See
packages/fides-auth/docs/rp-initiated-logout.mdfor the full parameter set, where
the ID token is stored, and whyclient_idis still sent.Also fixes the
./oidc-callbackand./oidc-loginsubpath exports in
@eventuras/fides-auth-next, which pointed at files the build never emitted.persistSessionnow size-checks every cookie value before writing any of them.
Previously a value that exceeded the browser limit threw part-way through, leaving the
new session cookie next to the previous user's tokens. -
2468ac6: Set
secureon the default cookie options unconditionally.Breaking for anyone serving over plain http on a non-localhost host. Minor rather
than major because this package is pre-1.0, where minor is the breaking channel — a
major would cut 1.0.0.defaultSessionCookieOptionsanddefaultOAuthCookieOptionsderived the flag from
process.env.NODE_ENV === 'production', so any deployment that did not set
NODE_ENV— staging, a container, any server that isn't following the Next
convention — served the session cookie withoutSecure, over plain HTTP, silently.The cookie spec exempts localhost from the https requirement, so
Securecookies are
still set and sent overhttp://localhostand local development is unaffected. Plain
http on a LAN address or a custom dev hostname now needs an explicitsecure: false,
which is a deliberate choice rather than a silent default.
Patch Changes
-
db99ad0: Widen the
josedependency from an exact pin to^6.2.8.An exact pin in a library forces a second copy of
joseinto any consumer tree that
already resolves it through a range —openid-clientdepends onjose: ^6.2.2, so
this repo was carrying two copies itself — and it withholds patch releases from
consumers until we cut a release of our own. Reproducibility is the lockfile's job,
not a library's dependency range.
@eventuras/fides-auth-store@0.1.2
@eventuras/fides-auth-react@0.1.2
@eventuras/fides-auth-next@0.5.0
Minor Changes
-
fa9de74: RP-initiated logout: send
id_token_hint.Tokens.idTokennow holds the raw ID token — populated bybuildSessionFromTokens,
kept fresh byrefreshSession, and stored in its ownsession_itcookie so no cookie
has to carry two large JWTs.readIdTokenreads it independently of session validity,
since logout needs the hint after the access token has expired.buildOidcLogoutUrl(oauthConfig, options)acceptsidTokenHint,state,
logoutHintandincludeClientIdalongsidepostLogoutRedirectUri. A string second
argument still meanspostLogoutRedirectUri, and it still returnsnullwhen the
provider advertises noend_session_endpoint.New
handleOidcLogouthandler in@eventuras/fides-auth/server—POST-only by
default and same-origin checked viaSec-Fetch-Site/Origin— wrapped for Next.js at
@eventuras/fides-auth-next/oidc-logout. See
packages/fides-auth/docs/rp-initiated-logout.mdfor the full parameter set, where
the ID token is stored, and whyclient_idis still sent.Also fixes the
./oidc-callbackand./oidc-loginsubpath exports in
@eventuras/fides-auth-next, which pointed at files the build never emitted.persistSessionnow size-checks every cookie value before writing any of them.
Previously a value that exceeded the browser limit threw part-way through, leaving the
new session cookie next to the previous user's tokens.
Patch Changes
@eventuras/fides-auth@0.10.0
Minor Changes
-
f8c2ee3: Move the framework-agnostic cookie attributes, size limits, and size guard into
the core package.The new
@eventuras/fides-auth/cookiesexport holdsCookieOptions,
defaultSessionCookieOptions,defaultOAuthCookieOptions,
ACCESS_TOKEN_COOKIE_NAME, theCOOKIE_MAX_BYTES/COOKIE_INFO_BYTESlimits,
theCookieTooLargeErrorclass, and purecookieByteSize/
assertCookieWithinLimithelpers — none of which need a framework. This makes
them reusable by future adapters (e.g. React Router) instead of living only in
the Next.js binding.@eventuras/fides-auth-nextnow re-exports these from the core package and keeps
only the actual cookie I/O (vianext/headers). Its public API is unchanged. -
019f8a0: Add a framework-agnostic
createHeartbeat()engine at@eventuras/fides-auth/heartbeat.fides-auth-next'suseHeartbeatis now a thin wrapper over it; behaviour and API unchanged. -
dcf1b7d: Add a framework-agnostic
CookieStoreinterface and session persistence helpers (persistSession,readSession,refreshSessionInStore,clearSession) at@eventuras/fides-auth/server.fides-auth-next's session functions now delegate to them through a Next cookie-store adapter; public API unchanged. -
50f6882: Move the OIDC request handlers —
handleOidcLogin,handleOidcCallback,handleHeartbeat— into@eventuras/fides-auth/server, taking aCookieStoreand an optional rate-limit callback over the standard Request/Response.fides-auth-nextnow wraps them with its Next cookie store and rate limiters; public API unchanged. -
3c72759: Split the session across two cookies to make room for large access tokens.
The access token — typically the largest part of a session — now lives in its
ownsession_atcookie, while the rest stays insession, so each gets a full
per-cookie byte budget instead of competing for one ~4KB limit.The framework-agnostic encode/decode logic lives in the core package as a new
@eventuras/fides-auth/session-cookiesexport (encodeSessionCookies/
decodeSessionCookies), plus adecryptJWThelper in@eventuras/fides-auth/utils.
@eventuras/fides-auth-nextis a thin adapter that wires these to the Next.js
cookie store. Legacy single-cookie sessions are still read transparently, and the
"expired access token means no session" contract is preserved.
Patch Changes
-
39f2cbd: Standardize MIT licensing across the workspace.
Every package now carries a
LICENSEfile with a consistent
Copyright (c) 2024 Losol ASnotice, and@eventuras/fides-auth-nextgains the
license/authormetadata it was missing and ships itsLICENSEin the
published tarball.@eventuras/fides-auth's existing license notice is updated
to the same copyright holder.
@eventuras/fides-auth-store@0.1.1
@eventuras/fides-auth-react@0.1.1
@eventuras/fides-auth-next@0.4.0
Minor Changes
-
2468c15: Add a size guard for auth cookies.
setAuthCookienow measures the cookie's
name + value and throws a new exportedCookieTooLargeErrorat or above the
browser's 4096-byte per-cookie limit, instead of letting the browser silently
drop the cookie (which manifested as a broken login). An informational log is
emitted at 3500 bytes for visibility before the hard limit. -
3c72759: Split the session across two cookies to make room for large access tokens.
The access token — typically the largest part of a session — now lives in its
ownsession_atcookie, while the rest stays insession, so each gets a full
per-cookie byte budget instead of competing for one ~4KB limit.The framework-agnostic encode/decode logic lives in the core package as a new
@eventuras/fides-auth/session-cookiesexport (encodeSessionCookies/
decodeSessionCookies), plus adecryptJWThelper in@eventuras/fides-auth/utils.
@eventuras/fides-auth-nextis a thin adapter that wires these to the Next.js
cookie store. Legacy single-cookie sessions are still read transparently, and the
"expired access token means no session" contract is preserved.
Patch Changes
-
f8c2ee3: Move the framework-agnostic cookie attributes, size limits, and size guard into
the core package.The new
@eventuras/fides-auth/cookiesexport holdsCookieOptions,
defaultSessionCookieOptions,defaultOAuthCookieOptions,
ACCESS_TOKEN_COOKIE_NAME, theCOOKIE_MAX_BYTES/COOKIE_INFO_BYTESlimits,
theCookieTooLargeErrorclass, and purecookieByteSize/
assertCookieWithinLimithelpers — none of which need a framework. This makes
them reusable by future adapters (e.g. React Router) instead of living only in
the Next.js binding.@eventuras/fides-auth-nextnow re-exports these from the core package and keeps
only the actual cookie I/O (vianext/headers). Its public API is unchanged. -
01a31d1: Move the React hooks (
createAuthStoreHooks,useSessionMonitor,useHeartbeat) into a new@eventuras/fides-auth-reactpackage.fides-auth-nextre-exports them, so its public API is unchanged. -
7453d3f: Move the framework-agnostic authentication store into a new
@eventuras/fides-auth-storepackage.The XState-Store-based auth state (
createAuthStore,initializeAuth,
checkAuth,startSessionMonitor,configureAuthLogger, and theSessionUser
/AuthStatus/AuthStoreContext/AuthStoreConfig/SessionMonitorConfig
types) has no dependency on Next.js or React — the application supplies a
checkAuthStatuscallback and the store never touches cookies or a server. It
now lives in its own package so other adapters (e.g. React Router) and plain
JavaScript can use it directly.@eventuras/fides-auth-nextre-exports the store from the new package, so
@eventuras/fides-auth-next/storeimports keep working unchanged. The React
hooks (createAuthStoreHooks,useSessionMonitor,useHeartbeat) stay in this
package for now. -
019f8a0: Add a framework-agnostic
createHeartbeat()engine at@eventuras/fides-auth/heartbeat.fides-auth-next'suseHeartbeatis now a thin wrapper over it; behaviour and API unchanged. -
dcf1b7d: Add a framework-agnostic
CookieStoreinterface and session persistence helpers (persistSession,readSession,refreshSessionInStore,clearSession) at@eventuras/fides-auth/server.fides-auth-next's session functions now delegate to them through a Next cookie-store adapter; public API unchanged. -
50f6882: Move the OIDC request handlers —
handleOidcLogin,handleOidcCallback,handleHeartbeat— into@eventuras/fides-auth/server, taking aCookieStoreand an optional rate-limit callback over the standard Request/Response.fides-auth-nextnow wraps them with its Next cookie store and rate limiters; public API unchanged. -
39f2cbd: Standardize MIT licensing across the workspace.
Every package now carries a
LICENSEfile with a consistent
Copyright (c) 2024 Losol ASnotice, and@eventuras/fides-auth-nextgains the
license/authormetadata it was missing and ships itsLICENSEin the
published tarball.@eventuras/fides-auth's existing license notice is updated
to the same copyright holder. -
Updated dependencies [f8c2ee3]
-
Updated dependencies [019f8a0]
-
Updated dependencies [dcf1b7d]
-
Updated dependencies [50f6882]
-
Updated dependencies [3c72759]
-
Updated dependencies [39f2cbd]
- @eventuras/fides-auth@0.10.0
- @eventuras/fides-auth-react@0.1.1
- @eventuras/fides-auth-store@0.1.1
@eventuras/fides-auth@0.9.0
Minor Changes
- 7bcf252: Type
tokens.accessTokenExpiresAt/tokens.refreshTokenExpiresAtas ISO 8601stringinstead ofDate. The session is a JSON/JWT envelope, so these values are always strings on the wire — theDatetype was a lie after avalidateSessionJwtround-trip. Consumers doing date math should wrap innew Date(value).
@eventuras/fides-auth-next@0.3.0
Minor Changes
- d2b4f73:
useHeartbeatnow schedules session refreshes from the access-token expiry
instead of a fixed interval, so the cadence self-adjusts to any token TTL.
Addsfraction,minSkewMs,minRefreshIntervalMsandinitialExpiresAt
config and decouplesidleThresholdMsfrom the token TTL; removesintervalMs.
Patch Changes
- 7e4039e: Preserve the request path when reconstructing the OIDC callback URL. Behind a TLS-terminating proxy the token-exchange
redirect_uricollapsed to/, causing Keycloak to reject login withinvalid_redirect_uri. - 7250e63: Upgrade
@xstate/storeto v4. React hooks moved to the dedicated@xstate/store-reactpackage; the store API itself is unchanged. - Updated dependencies [7bcf252]
- @eventuras/fides-auth@0.9.0