@benlampson/heimdall-server 5.5.3 → 5.6.0

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/README.md CHANGED
@@ -1,9 +1,13 @@
1
1
  # @benlampson/heimdall-server
2
2
 
3
+ 新增独立的 `HeimdallUserProvisioningClient`,通过标准 `client_credentials` 和显式授予的 `heimdall.users.create` 创建本租户普通用户,按当前应用 RBAC 授予普通默认角色。接口、角色配置和迁移见 [用户创建接入](../../../../../docs/backend-user-provisioning.md)。该能力从 5.6.0 起提供,浏览器包不增加接口,现有登录不变。
4
+
3
5
  Node 22+ 的 Heimdall 协议与只读目录客户端,版本跟随 Heimdall 整体 Release。支持 public/confidential 授权码、Device Code、服务 Token、刷新、JWT 校验、opaque Token、UserInfo、撤销/内省、退出地址和 MCP 认证头。没有 HTTP 路由、Cookie、UI 或数据库。
4
6
 
5
7
  机密凭据由调用方的 credentialProvider 提供,不能将此入口打包到浏览器。完整示例与接口见仓库 sdk/README.md 和 sdk/API.md。
6
8
 
9
+ JWT 时间容差 `clockSkewSeconds` 默认 `30`,客户可设为非负安全整数秒数,`0` 禁用容差。`nbf`、`exp`、未来 `iat` 使用相同设置;缓存/刷新仍按真实到期时间执行,不跳过验签或身份边界。
10
+
7
11
  ```ts
8
12
  import { HeimdallServerClient, HeimdallDirectoryClient } from '@benlampson/heimdall-server';
9
13
  const server = new HeimdallServerClient({
package/dist/client.js CHANGED
@@ -26,14 +26,16 @@ export class HeimdallServerClient extends HeimdallProtocolClient {
26
26
  const promise = (async () => {
27
27
  const tokens = await this.requestToken({ grant_type: 'client_credentials', scope: this.options.scope ?? '' }, signal, (fields, headers) => this.applyAuthentication(credential, fields, headers));
28
28
  const claims = await this.validateTokens(tokens, 'BackendService');
29
- const scopes = typeof claims?.scope === 'string' ? parseScopes(claims.scope) : Array.isArray(claims?.scope) ? claims.scope : (tokens.scope ?? '').split(' ');
29
+ // OAuth 响应省略 scope 时表示与请求一致;JWT 存在时仍以验签后的实际声明为准。
30
+ const scopes = typeof claims?.scope === 'string' ? parseScopes(claims.scope) : Array.isArray(claims?.scope) ? claims.scope : (tokens.scope ?? this.options.scope ?? '').split(' ');
30
31
  if (!(this.options.scope ?? '').split(' ').filter(Boolean).every(scope => scopes.includes(scope)))
31
32
  throw new HeimdallProtocolError('token_scope_mismatch');
32
33
  const expires = Math.min(tokens.obtained_at + tokens.expires_in * 1000, typeof claims?.exp === 'number' ? claims.exp * 1000 : Infinity);
33
34
  const refreshAt = expires - Math.min(30000, (expires - Date.now()) / 2);
35
+ const verifiedTokens = { ...tokens, scope: scopes.join(' ') };
34
36
  if (this.serverOptions.cacheClientCredentials !== false)
35
- this.cached = { tokens, version: credential.version, refreshAt };
36
- return { ...tokens };
37
+ this.cached = { tokens: verifiedTokens, version: credential.version, refreshAt };
38
+ return { ...verifiedTokens };
37
39
  })().finally(() => { this.tokenRequest = undefined; });
38
40
  this.tokenRequest = { version: credential.version, promise };
39
41
  return promise;
@@ -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
@@ -1,6 +1,8 @@
1
1
  export { HeimdallServerClient } from './client.js';
2
2
  export type { HeimdallServerOptions } from './client.js';
3
3
  export { HeimdallDirectoryClient } from './directory.js';
4
+ export { HeimdallUserProvisioningClient } from './provisioning.js';
5
+ export type { HeimdallUserCreateRequest, HeimdallCreatedUser } from './provisioning.js';
4
6
  export type { DirectoryUser, DirectoryGroup, DirectoryMember, DirectoryUserPermissions, HeimdallPage } from './directory.js';
5
7
  export { createMcpAuthenticationHeaders } from './mcp.js';
6
8
  export { HeimdallProtocolError } from '@benlampson/heimdall-browser/protocol';
package/dist/index.js CHANGED
@@ -1,5 +1,6 @@
1
1
  export { HeimdallServerClient } from './client.js';
2
2
  export { HeimdallDirectoryClient } from './directory.js';
3
+ export { HeimdallUserProvisioningClient } from './provisioning.js';
3
4
  export { createMcpAuthenticationHeaders } from './mcp.js';
4
5
  export { HeimdallProtocolError } from '@benlampson/heimdall-browser/protocol';
5
6
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAEnD,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAEzD,OAAO,EAAE,8BAA8B,EAAE,MAAM,UAAU,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAEnD,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,8BAA8B,EAAE,MAAM,mBAAmB,CAAC;AAGnE,OAAO,EAAE,8BAA8B,EAAE,MAAM,UAAU,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAC"}
@@ -0,0 +1,30 @@
1
+ import { HeimdallServerClient } from './client.js';
2
+ /** 仅允许普通用户资料;归属、角色和审计字段不由请求决定。 */
3
+ export interface HeimdallUserCreateRequest {
4
+ username: string;
5
+ email: string;
6
+ password: string;
7
+ displayName?: string;
8
+ phone?: string;
9
+ }
10
+ /** 用户与当前应用角色已提交的结果,不包含登录凭据。 */
11
+ export interface HeimdallCreatedUser {
12
+ id: string;
13
+ tenantId: string;
14
+ applicationId: string;
15
+ username: string;
16
+ email: string;
17
+ displayName?: string | null;
18
+ phone?: string | null;
19
+ roleCodes: string[];
20
+ }
21
+ /** 独立的 Node 服务端用户创建客户端,不向浏览器包增加任何能力。 */
22
+ export declare class HeimdallUserProvisioningClient {
23
+ private readonly tokens;
24
+ private readonly tenantId;
25
+ private readonly applicationId;
26
+ private readonly endpoint;
27
+ constructor(tokens: HeimdallServerClient, apiBaseUrl: string, tenantId: string, applicationId: string, allowLocalhostHttp?: boolean);
28
+ /** 单次 POST;超时或网络失败保留失败结果,不自动重试创建。 */
29
+ createUser(user: HeimdallUserCreateRequest, signal?: AbortSignal): Promise<HeimdallCreatedUser>;
30
+ }
@@ -0,0 +1,52 @@
1
+ import { HeimdallProtocolError } from '@benlampson/heimdall-browser/protocol';
2
+ /** 独立的 Node 服务端用户创建客户端,不向浏览器包增加任何能力。 */
3
+ export class HeimdallUserProvisioningClient {
4
+ tokens;
5
+ tenantId;
6
+ applicationId;
7
+ endpoint;
8
+ constructor(tokens, apiBaseUrl, tenantId, applicationId, allowLocalhostHttp = false) {
9
+ this.tokens = tokens;
10
+ this.tenantId = tenantId;
11
+ this.applicationId = applicationId;
12
+ const base = new URL(apiBaseUrl.endsWith('/') ? apiBaseUrl : apiBaseUrl + '/');
13
+ if ((base.protocol !== 'https:' && !(allowLocalhostHttp && base.protocol === 'http:' && ['localhost', '127.0.0.1', '[::1]'].includes(base.hostname)))
14
+ || base.username || base.password || base.search || base.hash || !tenantId || !applicationId)
15
+ throw new HeimdallProtocolError('invalid_user_provisioning_configuration');
16
+ this.endpoint = new URL('api/backend/users', base);
17
+ }
18
+ /** 单次 POST;超时或网络失败保留失败结果,不自动重试创建。 */
19
+ async createUser(user, signal) {
20
+ const allowed = ['username', 'email', 'password', 'displayName', 'phone'];
21
+ if (!user || Object.keys(user).some(key => !allowed.includes(key)) || typeof user.username !== 'string' || !user.username.trim()
22
+ || typeof user.email !== 'string' || !user.email.trim() || typeof user.password !== 'string' || !user.password.trim()
23
+ || user.password.length < 12 || user.password.length > 128)
24
+ throw new HeimdallProtocolError('invalid_user_create_request');
25
+ const token = await this.tokens.getClientCredentialsToken(signal);
26
+ if (!(token.scope ?? '').split(' ').includes('heimdall.users.create'))
27
+ throw new HeimdallProtocolError('missing_user_create_scope');
28
+ const response = await fetch(this.endpoint, {
29
+ method: 'POST', headers: { Authorization: `Bearer ${token.access_token}`, 'Content-Type': 'application/json' },
30
+ body: JSON.stringify({ username: user.username, email: user.email, password: user.password, displayName: user.displayName, phone: user.phone }),
31
+ credentials: 'omit', redirect: 'error', signal: signal ? AbortSignal.any([signal, AbortSignal.timeout(15000)]) : AbortSignal.timeout(15000),
32
+ });
33
+ if (!response.ok)
34
+ throw new HeimdallProtocolError(`http_${response.status}`, response.status);
35
+ let value;
36
+ try {
37
+ value = await response.json();
38
+ }
39
+ catch {
40
+ throw new HeimdallProtocolError('invalid_response');
41
+ }
42
+ if (!value || typeof value !== 'object' || value.code !== 200)
43
+ throw new HeimdallProtocolError('resource_error');
44
+ const created = value.data;
45
+ if (!created || typeof created.id !== 'string' || !created.id.trim() || created.tenantId !== this.tenantId
46
+ || created.applicationId !== this.applicationId || created.username !== user.username.trim() || created.email !== user.email.trim()
47
+ || !Array.isArray(created.roleCodes) || !created.roleCodes.length || created.roleCodes.some(code => typeof code !== 'string' || !code.trim()))
48
+ throw new HeimdallProtocolError('invalid_user_response');
49
+ return created;
50
+ }
51
+ }
52
+ //# sourceMappingURL=provisioning.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provisioning.js","sourceRoot":"","sources":["../src/provisioning.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "@benlampson/heimdall-server",
3
- "version": "5.5.3",
3
+ "version": "5.6.0",
4
4
  "type": "module",
5
- "description": "Heimdall server OAuth, read-only directory and MCP authentication adapters.",
5
+ "description": "Heimdall server OAuth, tenant user provisioning, read-only directory and MCP authentication adapters.",
6
6
  "license": "MIT",
7
7
  "repository": {
8
8
  "type": "git",
@@ -24,7 +24,7 @@
24
24
  "build": "tsc -p tsconfig.json"
25
25
  },
26
26
  "dependencies": {
27
- "@benlampson/heimdall-browser": "5.5.3"
27
+ "@benlampson/heimdall-browser": "5.6.0"
28
28
  },
29
29
  "engines": {
30
30
  "node": ">=22"