@hanzo/iam 0.6.0 → 0.6.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/auth.d.ts +1 -1
- package/dist/auth.js +3 -3
- package/dist/auth.js.map +1 -1
- package/dist/betterauth.d.ts +67 -0
- package/dist/betterauth.d.ts.map +1 -0
- package/dist/betterauth.js +64 -0
- package/dist/betterauth.js.map +1 -0
- package/dist/browser.d.ts +84 -1
- package/dist/browser.d.ts.map +1 -1
- package/dist/browser.js +224 -3
- package/dist/browser.js.map +1 -1
- package/dist/client.d.ts +11 -22
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +39 -90
- package/dist/client.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/nextauth.d.ts +12 -10
- package/dist/nextauth.d.ts.map +1 -1
- package/dist/nextauth.js +12 -11
- package/dist/nextauth.js.map +1 -1
- package/dist/passport.d.ts +44 -0
- package/dist/passport.d.ts.map +1 -0
- package/dist/passport.js +67 -0
- package/dist/passport.js.map +1 -0
- package/dist/pkce.d.ts +1 -1
- package/dist/pkce.js +1 -1
- package/dist/react.d.ts +1 -87
- package/dist/react.d.ts.map +1 -1
- package/dist/react.js +20 -446
- package/dist/react.js.map +1 -1
- package/dist/types.d.ts +1 -16
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +1 -1
- package/package.json +16 -7
- package/src/auth.ts +3 -3
- package/src/betterauth.ts +91 -0
- package/src/browser.ts +247 -3
- package/src/client.ts +47 -147
- package/src/index.ts +1 -2
- package/src/nextauth.ts +15 -13
- package/src/passport.ts +97 -0
- package/src/pkce.ts +1 -1
- package/src/react.ts +20 -622
- package/src/types.ts +1 -21
package/dist/client.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Core HTTP client for Hanzo IAM
|
|
2
|
+
* Core HTTP client for Hanzo IAM API.
|
|
3
3
|
*/
|
|
4
|
-
import type { IamConfig,
|
|
4
|
+
import type { IamConfig, IamUser, IamOrganization, IamProject, OidcDiscovery, TokenResponse } from "./types.js";
|
|
5
5
|
export declare class IamClient {
|
|
6
6
|
private readonly baseUrl;
|
|
7
7
|
private readonly clientId;
|
|
@@ -28,6 +28,15 @@ export declare class IamClient {
|
|
|
28
28
|
redirectUri: string;
|
|
29
29
|
codeVerifier?: string;
|
|
30
30
|
}): Promise<TokenResponse>;
|
|
31
|
+
/**
|
|
32
|
+
* Resource Owner Password Credentials grant.
|
|
33
|
+
* Used for service-to-service auth, CLI login, and e2e tests.
|
|
34
|
+
*/
|
|
35
|
+
passwordGrant(params: {
|
|
36
|
+
username: string;
|
|
37
|
+
password: string;
|
|
38
|
+
scope?: string;
|
|
39
|
+
}): Promise<TokenResponse>;
|
|
31
40
|
/** Refresh an access token. */
|
|
32
41
|
refreshToken(refreshToken: string): Promise<TokenResponse>;
|
|
33
42
|
/** Get user info from access token (OIDC userinfo endpoint). */
|
|
@@ -40,26 +49,6 @@ export declare class IamClient {
|
|
|
40
49
|
getOrganization(id: string, token?: string): Promise<IamOrganization | null>;
|
|
41
50
|
/** Get organizations a user belongs to. */
|
|
42
51
|
getUserOrganizations(userId: string, token?: string): Promise<IamOrganization[]>;
|
|
43
|
-
/** Create a new organization. */
|
|
44
|
-
createOrganization(org: Partial<IamOrganization>, token?: string): Promise<IamApiResponse<IamOrganization>>;
|
|
45
|
-
/** Update an existing organization. */
|
|
46
|
-
updateOrganization(org: Partial<IamOrganization>, token?: string): Promise<IamApiResponse<IamOrganization>>;
|
|
47
|
-
/** Delete an organization by owner and name. */
|
|
48
|
-
deleteOrganization(org: {
|
|
49
|
-
owner: string;
|
|
50
|
-
name: string;
|
|
51
|
-
}, token?: string): Promise<IamApiResponse<IamOrganization>>;
|
|
52
|
-
/** List invitations for an owner (organization). */
|
|
53
|
-
getInvitations(owner: string, token?: string): Promise<IamInvitation[]>;
|
|
54
|
-
/** Create a new invitation. */
|
|
55
|
-
createInvitation(invitation: Partial<IamInvitation>, token?: string): Promise<IamApiResponse<IamInvitation>>;
|
|
56
|
-
/** Send an invitation by owner and name. */
|
|
57
|
-
sendInvitation(invitation: {
|
|
58
|
-
owner: string;
|
|
59
|
-
name: string;
|
|
60
|
-
}, token?: string): Promise<IamApiResponse<IamInvitation>>;
|
|
61
|
-
/** Verify an invitation code. */
|
|
62
|
-
verifyInvitation(code: string, token?: string): Promise<IamApiResponse<IamInvitation>>;
|
|
63
52
|
/** List projects (for the configured owner). */
|
|
64
53
|
getProjects(token?: string): Promise<IamProject[]>;
|
|
65
54
|
/** Get a specific project by ID ("owner/name" format). */
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EACV,SAAS,
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EACV,SAAS,EAET,OAAO,EACP,eAAe,EACf,UAAU,EACV,aAAa,EACb,aAAa,EACd,MAAM,YAAY,CAAC;AAIpB,qBAAa,SAAS;IACpB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAqB;IAClD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqB;IAC7C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqB;IAC7C,OAAO,CAAC,cAAc,CAA2D;gBAErE,MAAM,EAAE,SAAS;YAYf,OAAO;IAkEf,YAAY,IAAI,OAAO,CAAC,aAAa,CAAC;IAY5C,iDAAiD;IAC3C,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC;IASnC,2DAA2D;IACrD,mBAAmB,CAAC,MAAM,EAAE;QAChC,WAAW,EAAE,MAAM,CAAC;QACpB,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,mBAAmB,CAAC,EAAE,MAAM,CAAC;KAC9B,GAAG,OAAO,CAAC,MAAM,CAAC;IAenB,8CAA8C;IACxC,YAAY,CAAC,MAAM,EAAE;QACzB,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,GAAG,OAAO,CAAC,aAAa,CAAC;IAkC1B;;;OAGG;IACG,aAAa,CAAC,MAAM,EAAE;QAC1B,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,GAAG,OAAO,CAAC,aAAa,CAAC;IAgC1B,+BAA+B;IACzB,YAAY,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAkChE,gEAAgE;IAC1D,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAkBxD,gDAAgD;IAC1C,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAYtE,qDAAqD;IAC/C,gBAAgB,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IASlE,mCAAmC;IAC7B,eAAe,CACnB,EAAE,EAAE,MAAM,EACV,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;IAQlC,2CAA2C;IACrC,oBAAoB,CACxB,MAAM,EAAE,MAAM,EACd,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,eAAe,EAAE,CAAC;IAiB7B,gDAAgD;IAC1C,WAAW,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IASxD,0DAA0D;IACpD,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAQxE,4CAA4C;IACtC,uBAAuB,CAC3B,YAAY,EAAE,MAAM,EACpB,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,UAAU,EAAE,CAAC;IAYxB,8DAA8D;IACxD,UAAU,CAAC,CAAC,GAAG,OAAO,EAC1B,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,GAC1F,OAAO,CAAC,CAAC,CAAC;CAGd;AAMD,qBAAa,WAAY,SAAQ,KAAK;IACpC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;gBAEZ,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAK5C"}
|
package/dist/client.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Core HTTP client for Hanzo IAM
|
|
2
|
+
* Core HTTP client for Hanzo IAM API.
|
|
3
3
|
*/
|
|
4
4
|
const DEFAULT_TIMEOUT_MS = 10_000;
|
|
5
5
|
export class IamClient {
|
|
@@ -131,6 +131,41 @@ export class IamClient {
|
|
|
131
131
|
clearTimeout(timer);
|
|
132
132
|
}
|
|
133
133
|
}
|
|
134
|
+
/**
|
|
135
|
+
* Resource Owner Password Credentials grant.
|
|
136
|
+
* Used for service-to-service auth, CLI login, and e2e tests.
|
|
137
|
+
*/
|
|
138
|
+
async passwordGrant(params) {
|
|
139
|
+
const discovery = await this.getDiscovery();
|
|
140
|
+
const body = new URLSearchParams({
|
|
141
|
+
grant_type: "password",
|
|
142
|
+
client_id: this.clientId,
|
|
143
|
+
username: params.username,
|
|
144
|
+
password: params.password,
|
|
145
|
+
scope: params.scope ?? "openid profile email phone",
|
|
146
|
+
});
|
|
147
|
+
if (this.clientSecret) {
|
|
148
|
+
body.set("client_secret", this.clientSecret);
|
|
149
|
+
}
|
|
150
|
+
const controller = new AbortController();
|
|
151
|
+
const timer = setTimeout(() => controller.abort(), DEFAULT_TIMEOUT_MS);
|
|
152
|
+
try {
|
|
153
|
+
const res = await fetch(discovery.token_endpoint, {
|
|
154
|
+
method: "POST",
|
|
155
|
+
headers: { "Content-Type": "application/x-www-form-urlencoded" },
|
|
156
|
+
body: body.toString(),
|
|
157
|
+
signal: controller.signal,
|
|
158
|
+
});
|
|
159
|
+
if (!res.ok) {
|
|
160
|
+
const text = await res.text().catch(() => "");
|
|
161
|
+
throw new IamApiError(res.status, `Password grant failed: ${text}`);
|
|
162
|
+
}
|
|
163
|
+
return (await res.json());
|
|
164
|
+
}
|
|
165
|
+
finally {
|
|
166
|
+
clearTimeout(timer);
|
|
167
|
+
}
|
|
168
|
+
}
|
|
134
169
|
/** Refresh an access token. */
|
|
135
170
|
async refreshToken(refreshToken) {
|
|
136
171
|
const discovery = await this.getDiscovery();
|
|
@@ -196,63 +231,9 @@ export class IamClient {
|
|
|
196
231
|
// -----------------------------------------------------------------------
|
|
197
232
|
/** List organizations (for the configured owner). */
|
|
198
233
|
async getOrganizations(token) {
|
|
199
|
-
// Build the user's org list from JWT claims.
|
|
200
|
-
// The user's "owner" field is the signup org (used for auth only).
|
|
201
|
-
// Their personal org (name == username) is their actual workspace.
|
|
202
|
-
// Additional orgs come from invitations (future: membership table).
|
|
203
|
-
const orgs = [];
|
|
204
|
-
const orgNames = new Set();
|
|
205
|
-
let signupOrg = "";
|
|
206
|
-
if (token) {
|
|
207
|
-
try {
|
|
208
|
-
let b64 = token.split(".")[1].replace(/-/g, "+").replace(/_/g, "/");
|
|
209
|
-
while (b64.length % 4)
|
|
210
|
-
b64 += "=";
|
|
211
|
-
const payload = JSON.parse(atob(b64));
|
|
212
|
-
const userOwner = payload.owner;
|
|
213
|
-
const userName = payload.name;
|
|
214
|
-
signupOrg = userOwner;
|
|
215
|
-
// Personal org (name == username) is the user's primary workspace.
|
|
216
|
-
// Show this first — it's their default org.
|
|
217
|
-
if (userName && userName !== userOwner) {
|
|
218
|
-
orgs.push({
|
|
219
|
-
owner: "admin",
|
|
220
|
-
name: userName,
|
|
221
|
-
displayName: userName,
|
|
222
|
-
});
|
|
223
|
-
orgNames.add(userName);
|
|
224
|
-
}
|
|
225
|
-
// If no personal org (username == owner), show the signup org as workspace
|
|
226
|
-
if (!orgNames.size && userOwner) {
|
|
227
|
-
orgs.push({ owner: "admin", name: userOwner, displayName: userOwner });
|
|
228
|
-
orgNames.add(userOwner);
|
|
229
|
-
}
|
|
230
|
-
}
|
|
231
|
-
catch {
|
|
232
|
-
// JWT parse failed
|
|
233
|
-
}
|
|
234
|
-
}
|
|
235
|
-
// Try the API to get additional orgs the user was invited to.
|
|
236
|
-
// Exclude the signup org (it's just for auth, not a workspace).
|
|
237
234
|
const owner = this.orgName ?? "admin";
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
if (resp.data) {
|
|
241
|
-
for (const org of resp.data) {
|
|
242
|
-
// Skip the signup org — it's not a user workspace
|
|
243
|
-
if (org.name === signupOrg && orgNames.size > 0)
|
|
244
|
-
continue;
|
|
245
|
-
if (!orgNames.has(org.name)) {
|
|
246
|
-
orgs.push(org);
|
|
247
|
-
orgNames.add(org.name);
|
|
248
|
-
}
|
|
249
|
-
}
|
|
250
|
-
}
|
|
251
|
-
}
|
|
252
|
-
catch {
|
|
253
|
-
// API failed — JWT-derived orgs are sufficient
|
|
254
|
-
}
|
|
255
|
-
return orgs;
|
|
235
|
+
const resp = await this.request("/api/get-organizations", { params: { owner }, token });
|
|
236
|
+
return resp.data ?? [];
|
|
256
237
|
}
|
|
257
238
|
/** Get a specific organization. */
|
|
258
239
|
async getOrganization(id, token) {
|
|
@@ -261,7 +242,7 @@ export class IamClient {
|
|
|
261
242
|
}
|
|
262
243
|
/** Get organizations a user belongs to. */
|
|
263
244
|
async getUserOrganizations(userId, token) {
|
|
264
|
-
//
|
|
245
|
+
// IAM returns orgs the user is a member of via the user's properties.
|
|
265
246
|
// We can also query via get-user and read their signupApplication/org.
|
|
266
247
|
const user = await this.getUser(userId, token);
|
|
267
248
|
if (!user)
|
|
@@ -270,38 +251,6 @@ export class IamClient {
|
|
|
270
251
|
const org = await this.getOrganization(`admin/${user.owner}`, token);
|
|
271
252
|
return org ? [org] : [];
|
|
272
253
|
}
|
|
273
|
-
/** Create a new organization. */
|
|
274
|
-
async createOrganization(org, token) {
|
|
275
|
-
return this.request("/api/add-organization", { method: "POST", body: org, token });
|
|
276
|
-
}
|
|
277
|
-
/** Update an existing organization. */
|
|
278
|
-
async updateOrganization(org, token) {
|
|
279
|
-
return this.request("/api/update-organization", { method: "POST", body: org, token });
|
|
280
|
-
}
|
|
281
|
-
/** Delete an organization by owner and name. */
|
|
282
|
-
async deleteOrganization(org, token) {
|
|
283
|
-
return this.request("/api/delete-organization", { method: "POST", body: org, token });
|
|
284
|
-
}
|
|
285
|
-
// -----------------------------------------------------------------------
|
|
286
|
-
// Invitation
|
|
287
|
-
// -----------------------------------------------------------------------
|
|
288
|
-
/** List invitations for an owner (organization). */
|
|
289
|
-
async getInvitations(owner, token) {
|
|
290
|
-
const resp = await this.request("/api/get-invitations", { params: { owner }, token });
|
|
291
|
-
return resp.data ?? [];
|
|
292
|
-
}
|
|
293
|
-
/** Create a new invitation. */
|
|
294
|
-
async createInvitation(invitation, token) {
|
|
295
|
-
return this.request("/api/add-invitation", { method: "POST", body: invitation, token });
|
|
296
|
-
}
|
|
297
|
-
/** Send an invitation by owner and name. */
|
|
298
|
-
async sendInvitation(invitation, token) {
|
|
299
|
-
return this.request("/api/send-invitation", { method: "POST", body: invitation, token });
|
|
300
|
-
}
|
|
301
|
-
/** Verify an invitation code. */
|
|
302
|
-
async verifyInvitation(code, token) {
|
|
303
|
-
return this.request("/api/verify-invitation", { params: { code }, token });
|
|
304
|
-
}
|
|
305
254
|
// -----------------------------------------------------------------------
|
|
306
255
|
// Project
|
|
307
256
|
// -----------------------------------------------------------------------
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
* });
|
|
15
15
|
*
|
|
16
16
|
* const billing = new BillingClient({
|
|
17
|
-
* commerceUrl: "https://commerce
|
|
17
|
+
* commerceUrl: "https://commerce.hanzo.ai",
|
|
18
18
|
* });
|
|
19
19
|
* ```
|
|
20
20
|
*/
|
|
@@ -22,5 +22,5 @@ export { IamClient, IamApiError } from "./client.js";
|
|
|
22
22
|
export { validateToken, clearJwksCache } from "./auth.js";
|
|
23
23
|
export { BrowserIamSdk, type BrowserIamConfig } from "./browser.js";
|
|
24
24
|
export { generatePkceChallenge, generateState } from "./pkce.js";
|
|
25
|
-
export type { IamConfig, OidcDiscovery, TokenResponse, IamJwtClaims, IamUser, IamOrganization,
|
|
25
|
+
export type { IamConfig, OidcDiscovery, TokenResponse, IamJwtClaims, IamUser, IamOrganization, IamProject, Subscription, Plan, Pricing, Payment, Order, UsageRecord, UsageSummary, IamSubscription, IamPlan, IamPricing, IamPayment, IamOrder, IamUsageRecord, IamUsageSummary, IamAuthResult, IamApiResponse, } from "./types.js";
|
|
26
26
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAGH,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAMrD,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAG1D,OAAO,EAAE,aAAa,EAAE,KAAK,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACpE,OAAO,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAMjE,YAAY,EACV,SAAS,EACT,aAAa,EACb,aAAa,EACb,YAAY,EACZ,OAAO,EACP,eAAe,EACf,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAGH,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAMrD,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAG1D,OAAO,EAAE,aAAa,EAAE,KAAK,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACpE,OAAO,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAMjE,YAAY,EACV,SAAS,EACT,aAAa,EACb,aAAa,EACb,YAAY,EACZ,OAAO,EACP,eAAe,EACf,UAAU,EACV,YAAY,EACZ,IAAI,EACJ,OAAO,EACP,OAAO,EACP,KAAK,EACL,WAAW,EACX,YAAY,EACZ,eAAe,EACf,OAAO,EACP,UAAU,EACV,UAAU,EACV,QAAQ,EACR,cAAc,EACd,eAAe,EACf,aAAa,EACb,cAAc,GACf,MAAM,YAAY,CAAC"}
|
package/dist/index.js
CHANGED
package/dist/nextauth.d.ts
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* NextAuth.js provider for
|
|
2
|
+
* NextAuth.js / Auth.js provider for IAM (OIDC-based).
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
* so all Next.js apps can share one
|
|
4
|
+
* Provides a canonical NextAuth/Auth.js provider configuration
|
|
5
|
+
* so all Next.js apps can share one implementation.
|
|
6
6
|
*
|
|
7
7
|
* @example
|
|
8
8
|
* ```ts
|
|
9
9
|
* // next-auth config
|
|
10
|
-
* import {
|
|
10
|
+
* import { IamProvider } from "@hanzo/iam/nextauth";
|
|
11
11
|
*
|
|
12
12
|
* export default NextAuth({
|
|
13
13
|
* providers: [
|
|
14
|
-
*
|
|
14
|
+
* IamProvider({
|
|
15
15
|
* serverUrl: process.env.IAM_SERVER_URL!,
|
|
16
16
|
* clientId: process.env.IAM_CLIENT_ID!,
|
|
17
17
|
* clientSecret: process.env.IAM_CLIENT_SECRET!,
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
*
|
|
23
23
|
* @packageDocumentation
|
|
24
24
|
*/
|
|
25
|
-
interface
|
|
25
|
+
export interface IamProfile extends Record<string, unknown> {
|
|
26
26
|
sub: string;
|
|
27
27
|
name: string;
|
|
28
28
|
email: string;
|
|
@@ -33,7 +33,7 @@ interface HanzoIamProfile extends Record<string, unknown> {
|
|
|
33
33
|
email_verified?: boolean;
|
|
34
34
|
}
|
|
35
35
|
/**
|
|
36
|
-
* NextAuth.js / Auth.js compatible OAuth provider for
|
|
36
|
+
* NextAuth.js / Auth.js compatible OAuth provider for IAM.
|
|
37
37
|
*
|
|
38
38
|
* Uses standard OIDC well-known endpoint for automatic configuration.
|
|
39
39
|
* JWT id_token validation (issuer, audience, signature) is handled by
|
|
@@ -41,7 +41,7 @@ interface HanzoIamProfile extends Record<string, unknown> {
|
|
|
41
41
|
*
|
|
42
42
|
* Pass `checks: ["state", "pkce"]` in options for PKCE alignment.
|
|
43
43
|
*/
|
|
44
|
-
export declare function
|
|
44
|
+
export declare function IamProvider<P extends IamProfile>(options: {
|
|
45
45
|
serverUrl: string;
|
|
46
46
|
clientId: string;
|
|
47
47
|
clientSecret?: string;
|
|
@@ -51,6 +51,8 @@ export declare function HanzoIamProvider<P extends HanzoIamProfile>(options: {
|
|
|
51
51
|
checks?: ("state" | "pkce" | "nonce" | "none")[];
|
|
52
52
|
[key: string]: unknown;
|
|
53
53
|
}): Record<string, unknown>;
|
|
54
|
-
|
|
55
|
-
export
|
|
54
|
+
/** @deprecated Use IamProvider instead */
|
|
55
|
+
export { IamProvider as HanzoIamProvider };
|
|
56
|
+
/** @deprecated Use IamProfile instead */
|
|
57
|
+
export type { IamProfile as HanzoIamProfile };
|
|
56
58
|
//# sourceMappingURL=nextauth.d.ts.map
|
package/dist/nextauth.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nextauth.d.ts","sourceRoot":"","sources":["../src/nextauth.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,
|
|
1
|
+
{"version":3,"file":"nextauth.d.ts","sourceRoot":"","sources":["../src/nextauth.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,MAAM,WAAW,UAAW,SAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACzD,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,UAAU,EAC9C,OAAO,EAAE;IACP,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,kFAAkF;IAClF,MAAM,CAAC,EAAE,CAAC,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC,EAAE,CAAC;IACjD,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB,GACA,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAgCzB;AAGD,0CAA0C;AAC1C,OAAO,EAAE,WAAW,IAAI,gBAAgB,EAAE,CAAC;AAC3C,yCAAyC;AACzC,YAAY,EAAE,UAAU,IAAI,eAAe,EAAE,CAAC"}
|
package/dist/nextauth.js
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* NextAuth.js provider for
|
|
2
|
+
* NextAuth.js / Auth.js provider for IAM (OIDC-based).
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
* so all Next.js apps can share one
|
|
4
|
+
* Provides a canonical NextAuth/Auth.js provider configuration
|
|
5
|
+
* so all Next.js apps can share one implementation.
|
|
6
6
|
*
|
|
7
7
|
* @example
|
|
8
8
|
* ```ts
|
|
9
9
|
* // next-auth config
|
|
10
|
-
* import {
|
|
10
|
+
* import { IamProvider } from "@hanzo/iam/nextauth";
|
|
11
11
|
*
|
|
12
12
|
* export default NextAuth({
|
|
13
13
|
* providers: [
|
|
14
|
-
*
|
|
14
|
+
* IamProvider({
|
|
15
15
|
* serverUrl: process.env.IAM_SERVER_URL!,
|
|
16
16
|
* clientId: process.env.IAM_CLIENT_ID!,
|
|
17
17
|
* clientSecret: process.env.IAM_CLIENT_SECRET!,
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
* @packageDocumentation
|
|
24
24
|
*/
|
|
25
25
|
/**
|
|
26
|
-
* NextAuth.js / Auth.js compatible OAuth provider for
|
|
26
|
+
* NextAuth.js / Auth.js compatible OAuth provider for IAM.
|
|
27
27
|
*
|
|
28
28
|
* Uses standard OIDC well-known endpoint for automatic configuration.
|
|
29
29
|
* JWT id_token validation (issuer, audience, signature) is handled by
|
|
@@ -31,12 +31,12 @@
|
|
|
31
31
|
*
|
|
32
32
|
* Pass `checks: ["state", "pkce"]` in options for PKCE alignment.
|
|
33
33
|
*/
|
|
34
|
-
export function
|
|
34
|
+
export function IamProvider(options) {
|
|
35
35
|
const issuer = options.serverUrl.replace(/\/$/, "");
|
|
36
36
|
const checks = options.checks ?? ["state"];
|
|
37
37
|
return {
|
|
38
|
-
id: "
|
|
39
|
-
name: "
|
|
38
|
+
id: "iam",
|
|
39
|
+
name: "IAM",
|
|
40
40
|
type: "oauth",
|
|
41
41
|
wellKnown: `${issuer}/.well-known/openid-configuration`,
|
|
42
42
|
idToken: true,
|
|
@@ -62,6 +62,7 @@ export function HanzoIamProvider(options) {
|
|
|
62
62
|
options,
|
|
63
63
|
};
|
|
64
64
|
}
|
|
65
|
-
//
|
|
66
|
-
|
|
65
|
+
// Backwards-compatible aliases
|
|
66
|
+
/** @deprecated Use IamProvider instead */
|
|
67
|
+
export { IamProvider as HanzoIamProvider };
|
|
67
68
|
//# sourceMappingURL=nextauth.js.map
|
package/dist/nextauth.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nextauth.js","sourceRoot":"","sources":["../src/nextauth.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAaH;;;;;;;;GAQG;AACH,MAAM,UAAU,
|
|
1
|
+
{"version":3,"file":"nextauth.js","sourceRoot":"","sources":["../src/nextauth.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAaH;;;;;;;;GAQG;AACH,MAAM,UAAU,WAAW,CACzB,OASC;IAED,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACpD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC;IAE3C,OAAO;QACL,EAAE,EAAE,KAAK;QACT,IAAI,EAAE,KAAK;QACX,IAAI,EAAE,OAAO;QACb,SAAS,EAAE,GAAG,MAAM,mCAAmC;QACvD,OAAO,EAAE,IAAI;QACb,MAAM;QACN,aAAa,EAAE,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,sBAAsB,EAAE,EAAE;QAC5D,OAAO,CAAC,OAAU;YAChB,OAAO;gBACL,EAAE,EAAE,OAAO,CAAC,GAAG;gBACf,IAAI,EACF,OAAO,CAAC,WAAW;oBACnB,OAAO,CAAC,IAAI;oBACZ,OAAO,CAAC,kBAAkB;oBAC1B,OAAO,CAAC,KAAK;oBACb,EAAE;gBACJ,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,KAAK,EAAE,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,OAAO,IAAI,IAAI;aACjD,CAAC;QACJ,CAAC;QACD,KAAK,EAAE;YACL,EAAE,EAAE,SAAS;YACb,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,EAAE;SACT;QACD,OAAO;KACR,CAAC;AACJ,CAAC;AAED,+BAA+B;AAC/B,0CAA0C;AAC1C,OAAO,EAAE,WAAW,IAAI,gBAAgB,EAAE,CAAC"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Passport.js OAuth2 strategy factory for Hanzo IAM.
|
|
3
|
+
*
|
|
4
|
+
* Creates a pre-configured passport-oauth2 strategy that authenticates
|
|
5
|
+
* against hanzo.id with PKCE and fetches user info on callback.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```ts
|
|
9
|
+
* import passport from "passport";
|
|
10
|
+
* import { createIamPassportStrategy } from "@hanzo/iam/passport";
|
|
11
|
+
*
|
|
12
|
+
* passport.use("iam", createIamPassportStrategy({
|
|
13
|
+
* serverUrl: "https://hanzo.id",
|
|
14
|
+
* clientId: "hanzo-kms-client-id",
|
|
15
|
+
* clientSecret: process.env.IAM_CLIENT_SECRET!,
|
|
16
|
+
* callbackUrl: "https://kms.hanzo.ai/api/v1/sso/oidc/callback",
|
|
17
|
+
* }));
|
|
18
|
+
* ```
|
|
19
|
+
*
|
|
20
|
+
* @packageDocumentation
|
|
21
|
+
*/
|
|
22
|
+
import type { IamConfig } from "./types.js";
|
|
23
|
+
export interface IamPassportConfig extends IamConfig {
|
|
24
|
+
/** Full callback URL for OAuth2 redirect. */
|
|
25
|
+
callbackUrl: string;
|
|
26
|
+
/** OAuth2 scopes. Default: "openid profile email". */
|
|
27
|
+
scope?: string;
|
|
28
|
+
}
|
|
29
|
+
export interface IamPassportUser {
|
|
30
|
+
accessToken: string;
|
|
31
|
+
refreshToken?: string;
|
|
32
|
+
userinfo: Record<string, unknown>;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Create a Passport OAuth2 strategy for Hanzo IAM.
|
|
36
|
+
*
|
|
37
|
+
* Requires `passport-oauth2` as a peer dependency.
|
|
38
|
+
* Returns an OAuth2Strategy instance ready to pass to `passport.use()`.
|
|
39
|
+
*
|
|
40
|
+
* The verify callback fetches userinfo from the IAM server and passes
|
|
41
|
+
* `{ accessToken, refreshToken, userinfo }` as the user object.
|
|
42
|
+
*/
|
|
43
|
+
export declare function createIamPassportStrategy(config: IamPassportConfig): unknown;
|
|
44
|
+
//# sourceMappingURL=passport.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"passport.d.ts","sourceRoot":"","sources":["../src/passport.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,MAAM,WAAW,iBAAkB,SAAQ,SAAS;IAClD,6CAA6C;IAC7C,WAAW,EAAE,MAAM,CAAC;IACpB,sDAAsD;IACtD,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED;;;;;;;;GAQG;AACH,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,iBAAiB,GACxB,OAAO,CAgDT"}
|
package/dist/passport.js
ADDED
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Passport.js OAuth2 strategy factory for Hanzo IAM.
|
|
3
|
+
*
|
|
4
|
+
* Creates a pre-configured passport-oauth2 strategy that authenticates
|
|
5
|
+
* against hanzo.id with PKCE and fetches user info on callback.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```ts
|
|
9
|
+
* import passport from "passport";
|
|
10
|
+
* import { createIamPassportStrategy } from "@hanzo/iam/passport";
|
|
11
|
+
*
|
|
12
|
+
* passport.use("iam", createIamPassportStrategy({
|
|
13
|
+
* serverUrl: "https://hanzo.id",
|
|
14
|
+
* clientId: "hanzo-kms-client-id",
|
|
15
|
+
* clientSecret: process.env.IAM_CLIENT_SECRET!,
|
|
16
|
+
* callbackUrl: "https://kms.hanzo.ai/api/v1/sso/oidc/callback",
|
|
17
|
+
* }));
|
|
18
|
+
* ```
|
|
19
|
+
*
|
|
20
|
+
* @packageDocumentation
|
|
21
|
+
*/
|
|
22
|
+
/**
|
|
23
|
+
* Create a Passport OAuth2 strategy for Hanzo IAM.
|
|
24
|
+
*
|
|
25
|
+
* Requires `passport-oauth2` as a peer dependency.
|
|
26
|
+
* Returns an OAuth2Strategy instance ready to pass to `passport.use()`.
|
|
27
|
+
*
|
|
28
|
+
* The verify callback fetches userinfo from the IAM server and passes
|
|
29
|
+
* `{ accessToken, refreshToken, userinfo }` as the user object.
|
|
30
|
+
*/
|
|
31
|
+
export function createIamPassportStrategy(config) {
|
|
32
|
+
// Dynamic import to keep passport-oauth2 as optional peer dep.
|
|
33
|
+
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
34
|
+
const { Strategy: OAuth2Strategy } = require("passport-oauth2");
|
|
35
|
+
const baseUrl = config.serverUrl.replace(/\/+$/, "");
|
|
36
|
+
const verify = async (...args) => {
|
|
37
|
+
// passReqToCallback=true: (req, accessToken, refreshToken, profile, done)
|
|
38
|
+
const accessToken = args[1];
|
|
39
|
+
const refreshToken = args[2];
|
|
40
|
+
const done = args[4];
|
|
41
|
+
try {
|
|
42
|
+
const res = await fetch(`${baseUrl}/oauth/userinfo`, {
|
|
43
|
+
headers: { Authorization: `Bearer ${accessToken}` },
|
|
44
|
+
});
|
|
45
|
+
if (!res.ok) {
|
|
46
|
+
return done(new Error(`IAM userinfo failed: ${res.status}`));
|
|
47
|
+
}
|
|
48
|
+
const userinfo = (await res.json());
|
|
49
|
+
done(null, { accessToken, refreshToken, userinfo });
|
|
50
|
+
}
|
|
51
|
+
catch (err) {
|
|
52
|
+
done(err instanceof Error ? err : new Error(String(err)));
|
|
53
|
+
}
|
|
54
|
+
};
|
|
55
|
+
return new OAuth2Strategy({
|
|
56
|
+
authorizationURL: `${baseUrl}/oauth/authorize`,
|
|
57
|
+
tokenURL: `${baseUrl}/oauth/token`,
|
|
58
|
+
clientID: config.clientId,
|
|
59
|
+
clientSecret: config.clientSecret ?? "",
|
|
60
|
+
callbackURL: config.callbackUrl,
|
|
61
|
+
scope: config.scope ?? "openid profile email",
|
|
62
|
+
state: true,
|
|
63
|
+
pkce: true,
|
|
64
|
+
passReqToCallback: true,
|
|
65
|
+
}, verify);
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=passport.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"passport.js","sourceRoot":"","sources":["../src/passport.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAiBH;;;;;;;;GAQG;AACH,MAAM,UAAU,yBAAyB,CACvC,MAAyB;IAEzB,+DAA+D;IAC/D,iEAAiE;IACjE,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAK7D,CAAC;IAEF,MAAM,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAErD,MAAM,MAAM,GAAG,KAAK,EAClB,GAAG,IAAe,EACH,EAAE;QACjB,0EAA0E;QAC1E,MAAM,WAAW,GAAG,IAAI,CAAC,CAAC,CAAW,CAAC;QACtC,MAAM,YAAY,GAAG,IAAI,CAAC,CAAC,CAAuB,CAAC;QACnD,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAwD,CAAC;QAE5E,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,OAAO,iBAAiB,EAAE;gBACnD,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,WAAW,EAAE,EAAE;aACpD,CAAC,CAAC;YACH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;gBACZ,OAAO,IAAI,CAAC,IAAI,KAAK,CAAC,wBAAwB,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YAC/D,CAAC;YACD,MAAM,QAAQ,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAA4B,CAAC;YAC/D,IAAI,CAAC,IAAI,EAAE,EAAE,WAAW,EAAE,YAAY,EAAE,QAAQ,EAAE,CAAC,CAAC;QACtD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC,CAAC;IAEF,OAAO,IAAI,cAAc,CACvB;QACE,gBAAgB,EAAE,GAAG,OAAO,kBAAkB;QAC9C,QAAQ,EAAE,GAAG,OAAO,cAAc;QAClC,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,YAAY,EAAE,MAAM,CAAC,YAAY,IAAI,EAAE;QACvC,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,sBAAsB;QAC7C,KAAK,EAAE,IAAI;QACX,IAAI,EAAE,IAAI;QACV,iBAAiB,EAAE,IAAI;KACxB,EACD,MAAM,CACP,CAAC;AACJ,CAAC"}
|
package/dist/pkce.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* PKCE (Proof Key for Code Exchange) utilities for browser-side OAuth2 flows.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
4
|
+
* PKCE utilities for OAuth2 flows, using native Web Crypto API.
|
|
5
5
|
*/
|
|
6
6
|
/** Generate a PKCE code verifier + challenge pair. */
|
|
7
7
|
export declare function generatePkceChallenge(): Promise<{
|
package/dist/pkce.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* PKCE (Proof Key for Code Exchange) utilities for browser-side OAuth2 flows.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
4
|
+
* PKCE utilities for OAuth2 flows, using native Web Crypto API.
|
|
5
5
|
*/
|
|
6
6
|
function generateRandomString(length) {
|
|
7
7
|
const array = new Uint8Array(length);
|