@enkaku/server 0.13.2 → 0.14.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.
@@ -1,3 +1,4 @@
1
+ import { type DelegationChainOptions } from '@enkaku/capability';
1
2
  import type { SignedToken } from '@enkaku/token';
2
3
  export type EncryptionPolicy = 'required' | 'optional' | 'none';
3
4
  export type ProcedureAccessConfig = {
@@ -14,6 +15,6 @@ export type ProcedureAccessPayload = {
14
15
  prc?: string;
15
16
  exp?: number;
16
17
  };
17
- export declare function checkProcedureAccess(serverID: string, record: ProcedureAccessRecord, token: SignedToken<ProcedureAccessPayload>, atTime?: number): Promise<void>;
18
- export declare function checkClientToken(serverID: string, record: ProcedureAccessRecord, token: SignedToken, atTime?: number): Promise<void>;
18
+ export declare function checkProcedureAccess(serverID: string, record: ProcedureAccessRecord, token: SignedToken<ProcedureAccessPayload>, options?: DelegationChainOptions): Promise<void>;
19
+ export declare function checkClientToken(serverID: string, record: ProcedureAccessRecord, token: SignedToken, options?: DelegationChainOptions): Promise<void>;
19
20
  //# sourceMappingURL=access-control.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"access-control.d.ts","sourceRoot":"","sources":["../src/access-control.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAEhD,MAAM,MAAM,gBAAgB,GAAG,UAAU,GAAG,UAAU,GAAG,MAAM,CAAA;AAE/D,MAAM,MAAM,qBAAqB,GAAG;IAClC,KAAK,CAAC,EAAE,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,CAAA;IAC/B,UAAU,CAAC,EAAE,gBAAgB,CAAA;CAC9B,CAAA;AAED,MAAM,MAAM,oBAAoB,GAAG,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,qBAAqB,CAAA;AAElF,MAAM,MAAM,qBAAqB,GAAG,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAA;AAgBxE,wBAAgB,uBAAuB,CACrC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,qBAAqB,GAAG,SAAS,EACzC,YAAY,EAAE,gBAAgB,GAC7B,gBAAgB,CAYlB;AAED,MAAM,MAAM,sBAAsB,GAAG;IACnC,GAAG,EAAE,MAAM,CAAA;IACX,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,GAAG,CAAC,EAAE,MAAM,CAAA;CACb,CAAA;AAED,wBAAsB,oBAAoB,CACxC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,qBAAqB,EAC7B,KAAK,EAAE,WAAW,CAAC,sBAAsB,CAAC,EAC1C,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC,CAkCf;AAED,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,qBAAqB,EAC7B,KAAK,EAAE,WAAW,EAClB,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC,CA4Bf"}
1
+ {"version":3,"file":"access-control.d.ts","sourceRoot":"","sources":["../src/access-control.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,sBAAsB,EAE5B,MAAM,oBAAoB,CAAA;AAC3B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAEhD,MAAM,MAAM,gBAAgB,GAAG,UAAU,GAAG,UAAU,GAAG,MAAM,CAAA;AAE/D,MAAM,MAAM,qBAAqB,GAAG;IAClC,KAAK,CAAC,EAAE,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,CAAA;IAC/B,UAAU,CAAC,EAAE,gBAAgB,CAAA;CAC9B,CAAA;AAED,MAAM,MAAM,oBAAoB,GAAG,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,qBAAqB,CAAA;AAElF,MAAM,MAAM,qBAAqB,GAAG,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAA;AAgBxE,wBAAgB,uBAAuB,CACrC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,qBAAqB,GAAG,SAAS,EACzC,YAAY,EAAE,gBAAgB,GAC7B,gBAAgB,CAYlB;AAED,MAAM,MAAM,sBAAsB,GAAG;IACnC,GAAG,EAAE,MAAM,CAAA;IACX,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,GAAG,CAAC,EAAE,MAAM,CAAA;CACb,CAAA;AAED,wBAAsB,oBAAoB,CACxC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,qBAAqB,EAC7B,KAAK,EAAE,WAAW,CAAC,sBAAsB,CAAC,EAC1C,OAAO,CAAC,EAAE,sBAAsB,GAC/B,OAAO,CAAC,IAAI,CAAC,CA2Cf;AAED,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,qBAAqB,EAC7B,KAAK,EAAE,WAAW,EAClB,OAAO,CAAC,EAAE,sBAAsB,GAC/B,OAAO,CAAC,IAAI,CAAC,CAiCf"}
@@ -24,7 +24,7 @@ export function resolveEncryptionPolicy(procedure, record, globalPolicy) {
24
24
  }
25
25
  return globalPolicy;
26
26
  }
27
- export async function checkProcedureAccess(serverID, record, token, atTime) {
27
+ export async function checkProcedureAccess(serverID, record, token, options) {
28
28
  const payload = token.payload;
29
29
  if (payload.prc == null) {
30
30
  throw new Error('No procedure to check');
@@ -51,14 +51,19 @@ export async function checkProcedureAccess(serverID, record, token, atTime) {
51
51
  await checkCapability({
52
52
  act: payload.prc,
53
53
  res: serverID
54
- }, payload, atTime);
54
+ }, payload, options);
55
55
  return;
56
- } catch {}
56
+ } catch (err) {
57
+ const message = err instanceof Error ? err.message : '';
58
+ if (!message.startsWith('Invalid capability') && !message.startsWith('Invalid payload') && !message.startsWith('Invalid token')) {
59
+ throw err;
60
+ }
61
+ }
57
62
  }
58
63
  }
59
64
  throw new Error('Access denied');
60
65
  }
61
- export async function checkClientToken(serverID, record, token, atTime) {
66
+ export async function checkClientToken(serverID, record, token, options) {
62
67
  const payload = token.payload;
63
68
  const procedure = payload.prc;
64
69
  if (procedure == null) {
@@ -70,7 +75,7 @@ export async function checkClientToken(serverID, record, token, atTime) {
70
75
  throw new Error('Invalid audience');
71
76
  }
72
77
  if (payload.exp != null) {
73
- assertNonExpired(payload, atTime);
78
+ assertNonExpired(payload, options?.atTime);
74
79
  }
75
80
  return;
76
81
  }
@@ -79,11 +84,11 @@ export async function checkClientToken(serverID, record, token, atTime) {
79
84
  await checkCapability({
80
85
  act: procedure,
81
86
  res: serverID
82
- }, payload, atTime);
87
+ }, payload, options);
83
88
  return;
84
89
  }
85
90
  if (payload.aud !== serverID) {
86
91
  throw new Error('Invalid audience');
87
92
  }
88
- await checkProcedureAccess(serverID, record, token, atTime);
93
+ await checkProcedureAccess(serverID, record, token, options);
89
94
  }
@@ -1 +1 @@
1
- {"version":3,"file":"channel.d.ts","sourceRoot":"","sources":["../../src/handlers/channel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,gBAAgB,EAChB,aAAa,EACb,kBAAkB,EACnB,MAAM,kBAAkB,CAAA;AAGzB,OAAO,KAAK,EAGV,cAAc,EAGf,MAAM,aAAa,CAAA;AAGpB,MAAM,MAAM,gBAAgB,CAC1B,QAAQ,SAAS,kBAAkB,EACnC,SAAS,SAAS,MAAM,QAAQ,GAAG,MAAM,GAAG,MAAM,QAAQ,GAAG,MAAM,IACjE,aAAa,CAAC,gBAAgB,CAAC,SAAS,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;AAEnE,wBAAgB,aAAa,CAC3B,QAAQ,SAAS,kBAAkB,EACnC,SAAS,SAAS,MAAM,QAAQ,GAAG,MAAM,EAEzC,GAAG,EAAE,cAAc,CAAC,QAAQ,CAAC,EAC7B,GAAG,EAAE,gBAAgB,CAAC,QAAQ,EAAE,SAAS,CAAC,GACzC,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAgFvB"}
1
+ {"version":3,"file":"channel.d.ts","sourceRoot":"","sources":["../../src/handlers/channel.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAEV,gBAAgB,EAChB,aAAa,EACb,kBAAkB,EACnB,MAAM,kBAAkB,CAAA;AAGzB,OAAO,KAAK,EAGV,cAAc,EAGf,MAAM,aAAa,CAAA;AAGpB,MAAM,MAAM,gBAAgB,CAC1B,QAAQ,SAAS,kBAAkB,EACnC,SAAS,SAAS,MAAM,QAAQ,GAAG,MAAM,GAAG,MAAM,QAAQ,GAAG,MAAM,IACjE,aAAa,CAAC,gBAAgB,CAAC,SAAS,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;AAEnE,wBAAgB,aAAa,CAC3B,QAAQ,SAAS,kBAAkB,EACnC,SAAS,SAAS,MAAM,QAAQ,GAAG,MAAM,EAEzC,GAAG,EAAE,cAAc,CAAC,QAAQ,CAAC,EAC7B,GAAG,EAAE,gBAAgB,CAAC,QAAQ,EAAE,SAAS,CAAC,GACzC,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CA6FvB"}
@@ -1,3 +1,4 @@
1
+ import { AttributeKeys, getActiveSpan } from '@enkaku/otel';
1
2
  import { createPipe, tap, writeTo } from '@enkaku/stream';
2
3
  import { executeHandler } from '../utils.js';
3
4
  export function handleChannel(ctx, msg) {
@@ -18,8 +19,11 @@ export function handleChannel(ctx, msg) {
18
19
  param
19
20
  });
20
21
  }
22
+ const activeSpan = getActiveSpan();
21
23
  const sendStream = createPipe();
24
+ const issuer = msg.payload.iss;
22
25
  const controller = Object.assign(new AbortController(), {
26
+ issuer,
23
27
  writer: sendStream.writable.getWriter()
24
28
  });
25
29
  controller.signal.addEventListener('abort', ()=>{
@@ -31,6 +35,11 @@ export function handleChannel(ctx, msg) {
31
35
  if (controller.signal.aborted) {
32
36
  return;
33
37
  }
38
+ if (activeSpan != null) {
39
+ activeSpan.addEvent('channel.message.sent', {
40
+ [AttributeKeys.MESSAGE_DIRECTION]: 'send'
41
+ });
42
+ }
34
43
  ctx.logger.trace('send value to channel {procedure} with ID {rid}: {val}', {
35
44
  procedure: msg.payload.prc,
36
45
  rid: msg.payload.rid,
@@ -43,6 +52,11 @@ export function handleChannel(ctx, msg) {
43
52
  });
44
53
  }));
45
54
  const readable = sendStream.readable.pipeThrough(tap((value)=>{
55
+ if (activeSpan != null) {
56
+ activeSpan.addEvent('channel.message.received', {
57
+ [AttributeKeys.MESSAGE_DIRECTION]: 'receive'
58
+ });
59
+ }
46
60
  ctx.logger.trace('received value from channel {procedure} with ID {rid}: {value}', {
47
61
  procedure: msg.payload.prc,
48
62
  rid: msg.payload.rid,
@@ -1 +1 @@
1
- {"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../../src/handlers/stream.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,aAAa,EACb,kBAAkB,EAClB,eAAe,EAChB,MAAM,kBAAkB,CAAA;AAGzB,OAAO,KAAK,EAAE,cAAc,EAA8B,MAAM,aAAa,CAAA;AAG7E,MAAM,MAAM,eAAe,CACzB,QAAQ,SAAS,kBAAkB,EACnC,SAAS,SAAS,MAAM,QAAQ,GAAG,MAAM,GAAG,MAAM,QAAQ,GAAG,MAAM,IACjE,aAAa,CAAC,eAAe,CAAC,SAAS,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;AAElE,wBAAgB,YAAY,CAC1B,QAAQ,SAAS,kBAAkB,EACnC,SAAS,SAAS,MAAM,QAAQ,GAAG,MAAM,EACzC,GAAG,EAAE,cAAc,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,eAAe,CAAC,QAAQ,EAAE,SAAS,CAAC,GAAG,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CA8DjG"}
1
+ {"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../../src/handlers/stream.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAEV,aAAa,EACb,kBAAkB,EAClB,eAAe,EAChB,MAAM,kBAAkB,CAAA;AAGzB,OAAO,KAAK,EAAE,cAAc,EAA8B,MAAM,aAAa,CAAA;AAG7E,MAAM,MAAM,eAAe,CACzB,QAAQ,SAAS,kBAAkB,EACnC,SAAS,SAAS,MAAM,QAAQ,GAAG,MAAM,GAAG,MAAM,QAAQ,GAAG,MAAM,IACjE,aAAa,CAAC,eAAe,CAAC,SAAS,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;AAElE,wBAAgB,YAAY,CAC1B,QAAQ,SAAS,kBAAkB,EACnC,SAAS,SAAS,MAAM,QAAQ,GAAG,MAAM,EACzC,GAAG,EAAE,cAAc,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,eAAe,CAAC,QAAQ,EAAE,SAAS,CAAC,GAAG,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAqEjG"}
@@ -1,3 +1,4 @@
1
+ import { AttributeKeys, getActiveSpan } from '@enkaku/otel';
1
2
  import { createPipe, writeTo } from '@enkaku/stream';
2
3
  import { executeHandler } from '../utils.js';
3
4
  export function handleStream(ctx, msg) {
@@ -18,6 +19,7 @@ export function handleStream(ctx, msg) {
18
19
  param
19
20
  });
20
21
  }
22
+ const activeSpan = getActiveSpan();
21
23
  const controller = new AbortController();
22
24
  ctx.controllers[msg.payload.rid] = controller;
23
25
  const receiveStream = createPipe();
@@ -25,6 +27,11 @@ export function handleStream(ctx, msg) {
25
27
  if (controller.signal.aborted) {
26
28
  return;
27
29
  }
30
+ if (activeSpan != null) {
31
+ activeSpan.addEvent('stream.message.sent', {
32
+ [AttributeKeys.MESSAGE_DIRECTION]: 'send'
33
+ });
34
+ }
28
35
  ctx.logger.trace('send value to stream {procedure} with ID {rid}: {val}', {
29
36
  procedure: msg.payload.prc,
30
37
  rid: msg.payload.rid,
package/lib/server.d.ts CHANGED
@@ -1,5 +1,7 @@
1
1
  import { Disposer } from '@enkaku/async';
2
+ import type { VerifyTokenHook } from '@enkaku/capability';
2
3
  import { type Logger } from '@enkaku/log';
4
+ import { type Tracer } from '@enkaku/otel';
3
5
  import { type AnyClientMessageOf, type ProtocolDefinition, type ServerTransportOf } from '@enkaku/protocol';
4
6
  import { type Validator } from '@enkaku/schema';
5
7
  import { type Identity } from '@enkaku/token';
@@ -7,15 +9,16 @@ import { type EncryptionPolicy, type ProcedureAccessRecord } from './access-cont
7
9
  import { type ResourceLimiter, type ResourceLimits } from './limits.js';
8
10
  import type { ProcedureHandlers, ServerEmitter } from './types.js';
9
11
  export type AccessControlParams = ({
10
- public: true;
12
+ requireAuth: false;
11
13
  serverID?: string;
12
- access?: ProcedureAccessRecord;
14
+ access: ProcedureAccessRecord;
13
15
  } | {
14
- public: false;
16
+ requireAuth: true;
15
17
  serverID: string;
16
18
  access: ProcedureAccessRecord;
17
19
  }) & {
18
20
  encryptionPolicy?: EncryptionPolicy;
21
+ verifyToken?: VerifyTokenHook;
19
22
  };
20
23
  export type HandleMessagesParams<Protocol extends ProtocolDefinition> = AccessControlParams & {
21
24
  events: ServerEmitter;
@@ -23,11 +26,12 @@ export type HandleMessagesParams<Protocol extends ProtocolDefinition> = AccessCo
23
26
  limiter: ResourceLimiter;
24
27
  logger: Logger;
25
28
  signal: AbortSignal;
29
+ tracer: Tracer;
26
30
  transport: ServerTransportOf<Protocol>;
27
31
  validator?: Validator<AnyClientMessageOf<Protocol>>;
28
32
  };
29
33
  export type ServerParams<Protocol extends ProtocolDefinition> = {
30
- access?: ProcedureAccessRecord;
34
+ accessControl?: false | true | ProcedureAccessRecord;
31
35
  encryptionPolicy?: EncryptionPolicy;
32
36
  getRandomID?: () => string;
33
37
  handlers: ProcedureHandlers<Protocol>;
@@ -35,14 +39,15 @@ export type ServerParams<Protocol extends ProtocolDefinition> = {
35
39
  limits?: Partial<ResourceLimits>;
36
40
  logger?: Logger;
37
41
  protocol?: Protocol;
38
- public?: boolean;
42
+ tracer?: Tracer;
39
43
  signal?: AbortSignal;
40
44
  transports?: Array<ServerTransportOf<Protocol>>;
45
+ verifyToken?: VerifyTokenHook;
41
46
  };
42
47
  export type HandleOptions = {
43
- access?: ProcedureAccessRecord;
48
+ accessControl?: false | true | ProcedureAccessRecord;
44
49
  logger?: Logger;
45
- public?: boolean;
50
+ verifyToken?: VerifyTokenHook;
46
51
  };
47
52
  export declare class Server<Protocol extends ProtocolDefinition> extends Disposer {
48
53
  #private;
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
package/lib/server.js CHANGED
@@ -1,6 +1,7 @@
1
1
  import { DisposeInterruption, Disposer } from '@enkaku/async';
2
2
  import { EventEmitter } from '@enkaku/event';
3
3
  import { getEnkakuLogger } from '@enkaku/log';
4
+ import { AttributeKeys, createTracer, extractTraceContext, SpanNames, SpanStatusCode, setSpanOnContext, TraceFlags, withActiveContext } from '@enkaku/otel';
4
5
  import { createClientMessageSchema } from '@enkaku/protocol';
5
6
  import { createValidator, ValidationError } from '@enkaku/schema';
6
7
  import { createUnsignedToken, isSignedToken } from '@enkaku/token';
@@ -11,6 +12,7 @@ import { handleEvent } from './handlers/event.js';
11
12
  import { handleRequest } from './handlers/request.js';
12
13
  import { handleStream } from './handlers/stream.js';
13
14
  import { createResourceLimiter } from './limits.js';
15
+ const defaultTracer = createTracer('server');
14
16
  function defaultRandomID() {
15
17
  return globalThis.crypto.randomUUID();
16
18
  }
@@ -70,6 +72,20 @@ async function handleMessages(params) {
70
72
  const processMessage = validator ? (message)=>{
71
73
  const result = validator(message);
72
74
  if (result instanceof ValidationError) {
75
+ const validationSpan = params.tracer.startSpan(SpanNames.SERVER_HANDLE, {
76
+ attributes: {
77
+ [AttributeKeys.RPC_SYSTEM]: 'enkaku'
78
+ }
79
+ });
80
+ validationSpan.addEvent('enkaku.validation', {
81
+ [AttributeKeys.VALIDATION_SUCCESS]: false,
82
+ [AttributeKeys.VALIDATION_ERROR]: result.message
83
+ });
84
+ validationSpan.setStatus({
85
+ code: SpanStatusCode.ERROR,
86
+ message: 'Validation failed'
87
+ });
88
+ validationSpan.end();
73
89
  logger.debug('received invalid message', {
74
90
  error: result
75
91
  });
@@ -167,26 +183,174 @@ async function handleMessages(params) {
167
183
  context.send(error.toPayload(message.payload.rid));
168
184
  }
169
185
  }
170
- const process = params.public ? (message, handle)=>{
186
+ function getParentContext(message) {
187
+ const header = message.header;
188
+ return extractTraceContext(header);
189
+ }
190
+ function createHandleSpan(message) {
191
+ const parentCtx = getParentContext(message);
192
+ const procedure = message.payload.prc;
193
+ const rid = 'rid' in message.payload ? message.payload.rid : undefined;
194
+ // Build span links from client trace context
195
+ const header = message.header;
196
+ const links = [];
197
+ if (typeof header.tid === 'string' && typeof header.sid === 'string') {
198
+ links.push({
199
+ context: {
200
+ traceId: header.tid,
201
+ spanId: header.sid,
202
+ traceFlags: TraceFlags.SAMPLED,
203
+ isRemote: true
204
+ }
205
+ });
206
+ }
207
+ return params.tracer.startSpan(SpanNames.SERVER_HANDLE, {
208
+ attributes: {
209
+ [AttributeKeys.RPC_SYSTEM]: 'enkaku',
210
+ ...procedure != null ? {
211
+ [AttributeKeys.RPC_PROCEDURE]: procedure
212
+ } : {},
213
+ ...rid != null ? {
214
+ [AttributeKeys.RPC_REQUEST_ID]: rid
215
+ } : {}
216
+ },
217
+ links
218
+ }, parentCtx);
219
+ }
220
+ function wrapHandle(span, handle) {
221
+ return ()=>{
222
+ const spanCtx = setSpanOnContext(undefined, span);
223
+ const result = withActiveContext(spanCtx, ()=>{
224
+ const handlerSpan = params.tracer.startSpan(SpanNames.SERVER_HANDLER);
225
+ const handlerResult = handle();
226
+ if (handlerResult instanceof Error) {
227
+ if ('code' in handlerResult) {
228
+ handlerSpan.setAttribute(AttributeKeys.ERROR_CODE, handlerResult.code);
229
+ }
230
+ handlerSpan.setAttribute(AttributeKeys.ERROR_MESSAGE, handlerResult.message);
231
+ handlerSpan.setStatus({
232
+ code: SpanStatusCode.ERROR,
233
+ message: handlerResult.message
234
+ });
235
+ handlerSpan.recordException(handlerResult);
236
+ handlerSpan.end();
237
+ return handlerResult;
238
+ }
239
+ handlerResult.then(()=>{
240
+ handlerSpan.setStatus({
241
+ code: SpanStatusCode.OK
242
+ });
243
+ handlerSpan.end();
244
+ }).catch((err)=>{
245
+ if ('code' in err) {
246
+ handlerSpan.setAttribute(AttributeKeys.ERROR_CODE, err.code);
247
+ }
248
+ handlerSpan.setAttribute(AttributeKeys.ERROR_MESSAGE, err.message);
249
+ handlerSpan.setStatus({
250
+ code: SpanStatusCode.ERROR,
251
+ message: err.message
252
+ });
253
+ handlerSpan.recordException(err);
254
+ handlerSpan.end();
255
+ });
256
+ return handlerResult;
257
+ });
258
+ if (result instanceof Error) {
259
+ if ('code' in result) {
260
+ span.setAttribute(AttributeKeys.ERROR_CODE, result.code);
261
+ }
262
+ span.setAttribute(AttributeKeys.ERROR_MESSAGE, result.message);
263
+ span.setStatus({
264
+ code: SpanStatusCode.ERROR,
265
+ message: result.message
266
+ });
267
+ span.recordException(result);
268
+ span.end();
269
+ return result;
270
+ }
271
+ result.then(()=>{
272
+ span.setStatus({
273
+ code: SpanStatusCode.OK
274
+ });
275
+ span.end();
276
+ }).catch((err)=>{
277
+ if ('code' in err) {
278
+ span.setAttribute(AttributeKeys.ERROR_CODE, err.code);
279
+ }
280
+ span.setAttribute(AttributeKeys.ERROR_MESSAGE, err.message);
281
+ span.setStatus({
282
+ code: SpanStatusCode.ERROR,
283
+ message: err.message
284
+ });
285
+ span.recordException(err);
286
+ span.end();
287
+ });
288
+ return result;
289
+ };
290
+ }
291
+ const process = !params.requireAuth ? (message, handle)=>{
292
+ const span = createHandleSpan(message);
293
+ if (validator != null) {
294
+ span.addEvent('enkaku.validation', {
295
+ [AttributeKeys.VALIDATION_SUCCESS]: true
296
+ });
297
+ }
171
298
  if (!checkMessageEncryption(message)) {
299
+ span.setAttribute(AttributeKeys.AUTH_REASON, 'encryption_required');
300
+ span.setAttribute(AttributeKeys.ERROR_CODE, 'EK_ENCRYPTION');
301
+ span.setAttribute(AttributeKeys.ERROR_MESSAGE, 'Encryption required');
302
+ span.setStatus({
303
+ code: SpanStatusCode.ERROR,
304
+ message: 'Encryption required'
305
+ });
306
+ span.end();
172
307
  handleEncryptionViolation(message);
173
308
  return;
174
309
  }
175
- processHandler(message, handle);
310
+ processHandler(message, wrapHandle(span, handle));
176
311
  } : async (message, handle)=>{
312
+ const span = createHandleSpan(message);
313
+ if (validator != null) {
314
+ span.addEvent('enkaku.validation', {
315
+ [AttributeKeys.VALIDATION_SUCCESS]: true
316
+ });
317
+ }
177
318
  try {
178
- if (!params.public) {
179
- if (!isSignedToken(message)) {
180
- throw new Error('Message is not signed');
181
- }
182
- await checkClientToken(params.serverID, params.access, message);
319
+ if (!isSignedToken(message)) {
320
+ span.setAttribute(AttributeKeys.AUTH_REASON, 'unsigned_message');
321
+ span.setAttribute(AttributeKeys.AUTH_ALLOWED, false);
322
+ throw new Error('Message is not signed');
183
323
  }
324
+ await checkClientToken(params.serverID, params.access, message, params.verifyToken != null ? {
325
+ verifyToken: params.verifyToken
326
+ } : undefined);
327
+ const did = message.payload.iss;
328
+ if (did != null) {
329
+ span.setAttribute(AttributeKeys.AUTH_DID, did);
330
+ }
331
+ span.setAttribute(AttributeKeys.AUTH_ALLOWED, true);
184
332
  } catch (cause) {
333
+ const did = isSignedToken(message) ? message.payload.iss : undefined;
334
+ if (did != null) {
335
+ span.setAttribute(AttributeKeys.AUTH_DID, did);
336
+ }
337
+ span.setAttribute(AttributeKeys.AUTH_ALLOWED, false);
338
+ if (!cause.message?.includes('unsigned')) {
339
+ span.setAttribute(AttributeKeys.AUTH_REASON, cause.message);
340
+ }
185
341
  const error = new HandlerError({
186
342
  cause,
187
343
  code: 'EK02',
188
344
  message: cause.message ?? 'Access denied'
189
345
  });
346
+ span.setAttribute(AttributeKeys.ERROR_CODE, error.code);
347
+ span.setAttribute(AttributeKeys.ERROR_MESSAGE, error.message);
348
+ span.setStatus({
349
+ code: SpanStatusCode.ERROR,
350
+ message: error.message
351
+ });
352
+ span.recordException(error);
353
+ span.end();
190
354
  if (message.payload.typ === 'event') {
191
355
  events.emit('eventAuthError', {
192
356
  error,
@@ -202,10 +366,18 @@ async function handleMessages(params) {
202
366
  return;
203
367
  }
204
368
  if (!checkMessageEncryption(message)) {
369
+ span.setAttribute(AttributeKeys.AUTH_REASON, 'encryption_required');
370
+ span.setAttribute(AttributeKeys.ERROR_CODE, 'EK_ENCRYPTION');
371
+ span.setAttribute(AttributeKeys.ERROR_MESSAGE, 'Encryption required');
372
+ span.setStatus({
373
+ code: SpanStatusCode.ERROR,
374
+ message: 'Encryption required'
375
+ });
376
+ span.end();
205
377
  handleEncryptionViolation(message);
206
378
  return;
207
379
  }
208
- processHandler(message, handle);
380
+ processHandler(message, wrapHandle(span, handle));
209
381
  };
210
382
  async function handleNext() {
211
383
  const next = await transport.read();
@@ -262,8 +434,8 @@ async function handleMessages(params) {
262
434
  });
263
435
  break;
264
436
  }
265
- // In non-public mode, validate send messages
266
- if (!params.public) {
437
+ // In authenticated mode, validate send messages against the channel owner
438
+ if (params.requireAuth) {
267
439
  if (!isSignedToken(msg)) {
268
440
  const error = new HandlerError({
269
441
  code: 'EK02',
@@ -272,13 +444,11 @@ async function handleMessages(params) {
272
444
  context.send(error.toPayload(msg.payload.rid));
273
445
  break;
274
446
  }
275
- try {
276
- await checkClientToken(params.serverID, params.access, msg);
277
- } catch (cause) {
447
+ const sendIssuer = msg.payload.iss;
448
+ if (controller.issuer != null && sendIssuer !== controller.issuer) {
278
449
  const error = new HandlerError({
279
- cause,
280
450
  code: 'EK02',
281
- message: cause.message ?? 'Send authorization denied'
451
+ message: 'Send issuer does not match channel owner'
282
452
  });
283
453
  context.send(error.toPayload(msg.payload.rid));
284
454
  break;
@@ -309,6 +479,7 @@ export class Server extends Disposer {
309
479
  #handling = [];
310
480
  #limiter;
311
481
  #logger;
482
+ #tracer;
312
483
  #validator;
313
484
  constructor(params){
314
485
  super({
@@ -350,22 +521,37 @@ export class Server extends Disposer {
350
521
  this.#logger = params.logger ?? getEnkakuLogger('server', {
351
522
  serverID: serverID ?? this.#getRandomID()
352
523
  });
524
+ this.#tracer = params.tracer ?? defaultTracer;
525
+ const accessControl = params.accessControl;
353
526
  if (serverID == null) {
354
- if (params.public) {
355
- this.#accessControl = {
356
- public: true,
357
- access: params.access,
358
- encryptionPolicy: params.encryptionPolicy
359
- };
360
- } else {
361
- throw new Error('Invalid server parameters: either the server "identity" must be provided or the "public" parameter must be set to true');
527
+ // No identity: accessControl must be explicitly false
528
+ if (accessControl !== false) {
529
+ throw new Error('Invalid server parameters: either "identity" must be provided or "accessControl" must be set to false');
362
530
  }
531
+ this.#accessControl = {
532
+ requireAuth: false,
533
+ access: {},
534
+ encryptionPolicy: params.encryptionPolicy,
535
+ verifyToken: params.verifyToken
536
+ };
537
+ } else if (accessControl === false) {
538
+ // Has identity but public access
539
+ this.#accessControl = {
540
+ requireAuth: false,
541
+ serverID,
542
+ access: {},
543
+ encryptionPolicy: params.encryptionPolicy,
544
+ verifyToken: params.verifyToken
545
+ };
363
546
  } else {
547
+ // Has identity with access control (true = server-only, record = granular)
548
+ const access = accessControl === true || accessControl == null ? {} : accessControl;
364
549
  this.#accessControl = {
365
- public: !!params.public,
550
+ requireAuth: true,
366
551
  serverID,
367
- access: params.access ?? {},
368
- encryptionPolicy: params.encryptionPolicy
552
+ access,
553
+ encryptionPolicy: params.encryptionPolicy,
554
+ verifyToken: params.verifyToken
369
555
  };
370
556
  }
371
557
  this.#limiter = createResourceLimiter(params.limits);
@@ -382,29 +568,38 @@ export class Server extends Disposer {
382
568
  return this.#events;
383
569
  }
384
570
  handle(transport, options = {}) {
385
- const publicAccess = options.public ?? this.#accessControl.public;
386
- const access = options.access ?? this.#accessControl.access ?? {};
571
+ const accessControlOverride = options.accessControl;
387
572
  const logger = options.logger ?? this.#logger.getChild('handler').with({
388
573
  transportID: this.#getRandomID()
389
574
  });
390
575
  const encryptionPolicy = this.#accessControl.encryptionPolicy;
391
576
  let accessControl;
392
- if (publicAccess) {
577
+ if (accessControlOverride === false) {
393
578
  accessControl = {
394
- public: true,
395
- access,
396
- encryptionPolicy
579
+ requireAuth: false,
580
+ access: this.#accessControl.access ?? {},
581
+ encryptionPolicy,
582
+ verifyToken: options.verifyToken ?? this.#accessControl.verifyToken
397
583
  };
398
- } else {
584
+ } else if (accessControlOverride != null) {
585
+ // Override with true or ProcedureAccessRecord
399
586
  const serverID = this.#accessControl.serverID;
400
587
  if (serverID == null) {
401
- return Promise.reject(new Error('Server ID is required to enable access control'));
588
+ return Promise.reject(new Error('Server identity is required to enable access control on transport'));
402
589
  }
590
+ const access = accessControlOverride === true ? {} : accessControlOverride;
403
591
  accessControl = {
404
- public: false,
592
+ requireAuth: true,
405
593
  serverID,
406
594
  access,
407
- encryptionPolicy
595
+ encryptionPolicy,
596
+ verifyToken: options.verifyToken ?? this.#accessControl.verifyToken
597
+ };
598
+ } else {
599
+ // Use server-level defaults
600
+ accessControl = {
601
+ ...this.#accessControl,
602
+ verifyToken: options.verifyToken ?? this.#accessControl.verifyToken
408
603
  };
409
604
  }
410
605
  const done = handleMessages({
@@ -413,6 +608,7 @@ export class Server extends Disposer {
413
608
  limiter: this.#limiter,
414
609
  logger,
415
610
  signal: this.#abortController.signal,
611
+ tracer: this.#tracer,
416
612
  transport,
417
613
  validator: this.#validator,
418
614
  ...accessControl
package/lib/types.d.ts CHANGED
@@ -4,6 +4,7 @@ import type { AnyRequestProcedureDefinition, AnyServerPayloadOf, ChannelProcedur
4
4
  import type { HandlerError } from './error.js';
5
5
  export type RequestController = AbortController;
6
6
  export type ChannelController<Send = unknown> = AbortController & {
7
+ issuer?: string;
7
8
  writer: WritableStreamDefaultWriter<Send>;
8
9
  };
9
10
  export type HandlerController<Send = unknown> = RequestController | ChannelController<Send>;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@enkaku/server",
3
- "version": "0.13.2",
3
+ "version": "0.14.0",
4
4
  "license": "MIT",
5
5
  "homepage": "https://enkaku.dev",
6
6
  "description": "Server logic for Enkaku RPC",
@@ -25,17 +25,18 @@
25
25
  ],
26
26
  "sideEffects": false,
27
27
  "dependencies": {
28
- "@enkaku/async": "^0.13.0",
29
- "@enkaku/capability": "^0.13.0",
30
- "@enkaku/event": "^0.13.0",
31
- "@enkaku/log": "^0.13.1",
32
- "@enkaku/protocol": "^0.13.0",
33
- "@enkaku/schema": "^0.13.0",
34
- "@enkaku/stream": "^0.13.0",
35
- "@enkaku/token": "^0.13.0"
28
+ "@enkaku/async": "^0.14.0",
29
+ "@enkaku/capability": "^0.14.0",
30
+ "@enkaku/otel": "^0.14.0",
31
+ "@enkaku/log": "^0.14.0",
32
+ "@enkaku/protocol": "^0.14.0",
33
+ "@enkaku/stream": "^0.14.0",
34
+ "@enkaku/event": "^0.14.0",
35
+ "@enkaku/schema": "^0.14.0",
36
+ "@enkaku/token": "^0.14.0"
36
37
  },
37
38
  "devDependencies": {
38
- "@enkaku/transport": "^0.13.1"
39
+ "@enkaku/transport": "^0.14.0"
39
40
  },
40
41
  "scripts": {
41
42
  "build:clean": "del lib",