@open-rap/runtime 0.0.0-stage → 0.1.1

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.
Files changed (144) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +14 -2
  3. package/dist/abap/background.d.ts +14 -0
  4. package/dist/abap/background.js +130 -0
  5. package/dist/abap/background.js.map +1 -0
  6. package/dist/abap/bridge.d.ts +62 -0
  7. package/dist/abap/bridge.js +402 -0
  8. package/dist/abap/bridge.js.map +1 -0
  9. package/dist/abap/convert.d.ts +26 -0
  10. package/dist/abap/convert.js +197 -0
  11. package/dist/abap/convert.js.map +1 -0
  12. package/dist/abap/http.d.ts +34 -0
  13. package/dist/abap/http.js +133 -0
  14. package/dist/abap/http.js.map +1 -0
  15. package/dist/abap/mail.d.ts +10 -0
  16. package/dist/abap/mail.js +83 -0
  17. package/dist/abap/mail.js.map +1 -0
  18. package/dist/abap/odata-client.d.ts +33 -0
  19. package/dist/abap/odata-client.js +576 -0
  20. package/dist/abap/odata-client.js.map +1 -0
  21. package/dist/abap/sql.d.ts +92 -0
  22. package/dist/abap/sql.js +261 -0
  23. package/dist/abap/sql.js.map +1 -0
  24. package/dist/abap/utils.d.ts +41 -0
  25. package/dist/abap/utils.js +976 -0
  26. package/dist/abap/utils.js.map +1 -0
  27. package/dist/app.d.ts +53 -0
  28. package/dist/app.js +169 -0
  29. package/dist/app.js.map +1 -0
  30. package/dist/auth/auth.d.ts +68 -0
  31. package/dist/auth/auth.js +140 -0
  32. package/dist/auth/auth.js.map +1 -0
  33. package/dist/auth/authorizations.d.ts +39 -0
  34. package/dist/auth/authorizations.js +103 -0
  35. package/dist/auth/authorizations.js.map +1 -0
  36. package/dist/auth/business-users.d.ts +15 -0
  37. package/dist/auth/business-users.js +36 -0
  38. package/dist/auth/business-users.js.map +1 -0
  39. package/dist/auth/dev-oauth.d.ts +38 -0
  40. package/dist/auth/dev-oauth.js +156 -0
  41. package/dist/auth/dev-oauth.js.map +1 -0
  42. package/dist/auth/environment.d.ts +7 -0
  43. package/dist/auth/environment.js +57 -0
  44. package/dist/auth/environment.js.map +1 -0
  45. package/dist/auth/session.d.ts +45 -0
  46. package/dist/auth/session.js +257 -0
  47. package/dist/auth/session.js.map +1 -0
  48. package/dist/auth/user.d.ts +21 -0
  49. package/dist/auth/user.js +12 -0
  50. package/dist/auth/user.js.map +1 -0
  51. package/dist/db/database.d.ts +30 -0
  52. package/dist/db/database.js +131 -0
  53. package/dist/db/database.js.map +1 -0
  54. package/dist/db/seed.d.ts +9 -0
  55. package/dist/db/seed.js +63 -0
  56. package/dist/db/seed.js.map +1 -0
  57. package/dist/index.d.ts +20 -0
  58. package/dist/index.js +21 -0
  59. package/dist/index.js.map +1 -0
  60. package/dist/launchpad/dev.d.ts +14 -0
  61. package/dist/launchpad/dev.js +48 -0
  62. package/dist/launchpad/dev.js.map +1 -0
  63. package/dist/launchpad/proxy.d.ts +30 -0
  64. package/dist/launchpad/proxy.js +98 -0
  65. package/dist/launchpad/proxy.js.map +1 -0
  66. package/dist/launchpad/server.d.ts +77 -0
  67. package/dist/launchpad/server.js +177 -0
  68. package/dist/launchpad/server.js.map +1 -0
  69. package/dist/mcp/server.d.ts +22 -0
  70. package/dist/mcp/server.js +222 -0
  71. package/dist/mcp/server.js.map +1 -0
  72. package/dist/odata/access.d.ts +31 -0
  73. package/dist/odata/access.js +142 -0
  74. package/dist/odata/access.js.map +1 -0
  75. package/dist/odata/batch.d.ts +36 -0
  76. package/dist/odata/batch.js +147 -0
  77. package/dist/odata/batch.js.map +1 -0
  78. package/dist/odata/csrf.d.ts +13 -0
  79. package/dist/odata/csrf.js +27 -0
  80. package/dist/odata/csrf.js.map +1 -0
  81. package/dist/odata/custom.d.ts +90 -0
  82. package/dist/odata/custom.js +373 -0
  83. package/dist/odata/custom.js.map +1 -0
  84. package/dist/odata/draft.d.ts +78 -0
  85. package/dist/odata/draft.js +590 -0
  86. package/dist/odata/draft.js.map +1 -0
  87. package/dist/odata/errors.d.ts +27 -0
  88. package/dist/odata/errors.js +41 -0
  89. package/dist/odata/errors.js.map +1 -0
  90. package/dist/odata/handler.d.ts +90 -0
  91. package/dist/odata/handler.js +312 -0
  92. package/dist/odata/handler.js.map +1 -0
  93. package/dist/odata/json.d.ts +23 -0
  94. package/dist/odata/json.js +85 -0
  95. package/dist/odata/json.js.map +1 -0
  96. package/dist/odata/read.d.ts +90 -0
  97. package/dist/odata/read.js +686 -0
  98. package/dist/odata/read.js.map +1 -0
  99. package/dist/odata/service.d.ts +45 -0
  100. package/dist/odata/service.js +145 -0
  101. package/dist/odata/service.js.map +1 -0
  102. package/dist/odata/uri/ast.d.ts +103 -0
  103. package/dist/odata/uri/ast.js +3 -0
  104. package/dist/odata/uri/ast.js.map +1 -0
  105. package/dist/odata/uri/parser.d.ts +26 -0
  106. package/dist/odata/uri/parser.js +697 -0
  107. package/dist/odata/uri/parser.js.map +1 -0
  108. package/dist/odata/write.d.ts +127 -0
  109. package/dist/odata/write.js +799 -0
  110. package/dist/odata/write.js.map +1 -0
  111. package/dist/platform.d.ts +14 -0
  112. package/dist/platform.js +66 -0
  113. package/dist/platform.js.map +1 -0
  114. package/dist/rap/bo.d.ts +76 -0
  115. package/dist/rap/bo.js +184 -0
  116. package/dist/rap/bo.js.map +1 -0
  117. package/dist/rap/kernel.d.ts +7 -0
  118. package/dist/rap/kernel.js +287 -0
  119. package/dist/rap/kernel.js.map +1 -0
  120. package/dist/rap/runtime.d.ts +84 -0
  121. package/dist/rap/runtime.js +128 -0
  122. package/dist/rap/runtime.js.map +1 -0
  123. package/dist/rap/transaction.d.ts +227 -0
  124. package/dist/rap/transaction.js +1385 -0
  125. package/dist/rap/transaction.js.map +1 -0
  126. package/dist/rap/types.d.ts +74 -0
  127. package/dist/rap/types.js +25 -0
  128. package/dist/rap/types.js.map +1 -0
  129. package/dist/server.d.ts +34 -0
  130. package/dist/server.js +114 -0
  131. package/dist/server.js.map +1 -0
  132. package/dist/ui/plugin.d.ts +14 -0
  133. package/dist/ui/plugin.js +47 -0
  134. package/dist/ui/plugin.js.map +1 -0
  135. package/dist/ui/resources.d.ts +22 -0
  136. package/dist/ui/resources.js +88 -0
  137. package/dist/ui/resources.js.map +1 -0
  138. package/dist/ui/variants.d.ts +25 -0
  139. package/dist/ui/variants.js +68 -0
  140. package/dist/ui/variants.js.map +1 -0
  141. package/dist/values.d.ts +43 -0
  142. package/dist/values.js +367 -0
  143. package/dist/values.js.map +1 -0
  144. package/package.json +60 -3
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/abap/utils.ts"],"names":[],"mappings":"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"}
package/dist/app.d.ts ADDED
@@ -0,0 +1,53 @@
1
+ /** The Fastify application of a generated service. */
2
+ import { type FastifyInstance, type FastifyServerOptions } from "fastify";
3
+ import type { McpToolsModel, Model } from "@open-rap/model";
4
+ import { Authenticator, type AuthOptions } from "./auth/auth.js";
5
+ import { type DevOAuthClient } from "./auth/dev-oauth.js";
6
+ import type { User } from "./auth/user.js";
7
+ import type { Database } from "./db/database.js";
8
+ import { Authorizations } from "./auth/authorizations.js";
9
+ import { CsrfTokens } from "./odata/csrf.js";
10
+ import { ODataHandler, type WriteHandler } from "./odata/handler.js";
11
+ import { ReadEngine } from "./odata/read.js";
12
+ import { ServiceRuntime } from "./odata/service.js";
13
+ import type { RapRuntime } from "./rap/runtime.js";
14
+ import { type UiOptions } from "./ui/plugin.js";
15
+ export interface AppOptions {
16
+ model: Model;
17
+ /** The generated $metadata document. */
18
+ metadata: string;
19
+ db: Database;
20
+ auth?: AuthOptions;
21
+ /** Secret of the CSRF tokens (default: random per process). */
22
+ csrfSecret?: string;
23
+ logger?: FastifyServerOptions["logger"];
24
+ /** Factory of the write handler, given the service and the reads (default: the managed RAP runtime of `rap`). */
25
+ writes?: (service: ServiceRuntime, read: ReadEngine, db: Database) => WriteHandler;
26
+ /** The managed RAP runtime (transpiled behavior pools): writes, actions and feature control. */
27
+ rap?: RapRuntime;
28
+ /** The authorizations of the users (D34); default: those of the RAP runtime, or of the model. */
29
+ authorizations?: Authorizations;
30
+ /** The generated UI (`ui/` folder) and the OpenUI5 resources. */
31
+ ui?: UiOptions;
32
+ /** The MCP tools of the service (D47), served at /mcp. */
33
+ mcp?: McpToolsModel;
34
+ /**
35
+ * Development mode only: the development OAuth 2.0 authorization server under /oauth (D60), its
36
+ * tokens accepted as bearer tokens; `true` for the default clients.
37
+ */
38
+ devOAuth?: boolean | DevOAuthClient[];
39
+ /** Extra plugins (UI, login routes), registered after the service. */
40
+ extend?: (app: FastifyInstance, services: AppServices) => Promise<void> | void;
41
+ }
42
+ export interface AppServices {
43
+ service: ServiceRuntime;
44
+ handler: ODataHandler;
45
+ authenticator: Authenticator;
46
+ csrf: CsrfTokens;
47
+ }
48
+ declare module "fastify" {
49
+ interface FastifyRequest {
50
+ user?: User;
51
+ }
52
+ }
53
+ export declare function createApp(options: AppOptions): Promise<FastifyInstance>;
package/dist/app.js ADDED
@@ -0,0 +1,169 @@
1
+ /** The Fastify application of a generated service. */
2
+ import Fastify, {} from "fastify";
3
+ import { registerMcp } from "./mcp/server.js";
4
+ import { AuthenticationError, Authenticator } from "./auth/auth.js";
5
+ import { DevOAuthServer } from "./auth/dev-oauth.js";
6
+ import { OidcSessions } from "./auth/session.js";
7
+ import { Authorizations } from "./auth/authorizations.js";
8
+ import { AccessControls, withReader } from "./odata/access.js";
9
+ import { CsrfTokens } from "./odata/csrf.js";
10
+ import { errorResponse, isIeee754, ODataHandler } from "./odata/handler.js";
11
+ import { CustomQueries } from "./odata/custom.js";
12
+ import { ReadEngine } from "./odata/read.js";
13
+ import { ServiceRuntime } from "./odata/service.js";
14
+ import { ODataError } from "./odata/errors.js";
15
+ import { RapWriteHandler } from "./odata/write.js";
16
+ import { registerUi } from "./ui/plugin.js";
17
+ import { UiVariants, VariantError } from "./ui/variants.js";
18
+ import { BUSINESS_USER_TABLE, BusinessUsers } from "./auth/business-users.js";
19
+ /** Fastify keeps headers lower case; multi-valued ones are joined. */
20
+ function headersOf(request) {
21
+ const headers = {};
22
+ for (const [name, value] of Object.entries(request.headers)) {
23
+ headers[name.toLowerCase()] = Array.isArray(value) ? value.join(", ") : value;
24
+ }
25
+ return headers;
26
+ }
27
+ function send(reply, response) {
28
+ reply.status(response.status);
29
+ for (const [name, value] of Object.entries(response.headers)) {
30
+ reply.header(name, value);
31
+ }
32
+ // a Buffer keeps the Content-Type as written (Fastify rewrites JSON media types of strings)
33
+ return reply.send(Buffer.from(response.body ?? "", "utf8"));
34
+ }
35
+ export async function createApp(options) {
36
+ const app = Fastify({ logger: options.logger ?? false, bodyLimit: 20 * 1024 * 1024, return503OnClosing: true });
37
+ const service = new ServiceRuntime(options.model);
38
+ const authorizations = options.authorizations ?? options.rap?.authorizations ?? new Authorizations(options.model.authorizations);
39
+ // the access controls (DCL) of the reads, for the user of each request (D35)
40
+ const read = new ReadEngine(service, () => options.db, new AccessControls(options.model.accessControls, authorizations));
41
+ if (options.rap !== undefined && options.model.entities.some((e) => e.kind === "custom")) {
42
+ read.queries = new CustomQueries(service, () => options.db, options.rap);
43
+ }
44
+ const writes = options.writes?.(service, read, options.db) ?? (options.rap === undefined ? undefined : new RapWriteHandler(service, read, options.db, options.rap));
45
+ const handler = new ODataHandler(service, read, options.metadata, writes);
46
+ const servicePath = options.model.service.path;
47
+ handler.setServicePath(servicePath);
48
+ const authenticator = new Authenticator(options.auth ?? { mode: "none" });
49
+ if (options.devOAuth !== undefined && options.devOAuth !== false && (options.auth === undefined || options.auth.mode === "none")) {
50
+ const server = await DevOAuthServer.create(Array.isArray(options.devOAuth) ? options.devOAuth : undefined);
51
+ server.register(app);
52
+ authenticator.devOAuth = server;
53
+ }
54
+ const csrf = new CsrfTokens(options.csrfSecret);
55
+ const auth = options.auth;
56
+ const variants = new UiVariants(() => options.db);
57
+ // I_BusinessUserBasic (D44): the users who used the application
58
+ const businessUsers = options.model.tables.some((t) => t.name === BUSINESS_USER_TABLE) ? new BusinessUsers(() => options.db) : undefined;
59
+ const sessions = auth?.mode === "oidc" && auth.session !== undefined ? new OidcSessions(authenticator, { ...auth, session: auth.session }) : undefined;
60
+ // bodies are read as text: the OData layer parses JSON (decimals as strings) and multipart
61
+ app.removeAllContentTypeParsers();
62
+ app.addContentTypeParser("*", { parseAs: "string" }, (_request, body, done) => done(null, body));
63
+ app.decorateRequest("user", undefined);
64
+ app.addHook("onRequest", async (request, reply) => {
65
+ if (sessions !== undefined && (request.url === "/" || request.url.startsWith("/ui")) && request.headers.authorization === undefined) {
66
+ // the UI needs a session: log in first
67
+ let user;
68
+ try {
69
+ user = sessions.user(request);
70
+ }
71
+ catch (error) {
72
+ // a session without the role the application requires (opened by a launchpad, D37)
73
+ return reply.status(error instanceof AuthenticationError ? error.status : 401).type("text/plain").send(error.message);
74
+ }
75
+ if (user === undefined) {
76
+ return reply.redirect(sessions.loginUrl(request.url === "/" ? "/ui/index.html" : request.url));
77
+ }
78
+ return;
79
+ }
80
+ if (!request.url.startsWith(servicePath.replace(/\/$/, ""))) {
81
+ return;
82
+ }
83
+ try {
84
+ const user = request.user ?? (request.headers.authorization === undefined ? sessions?.user(request) : undefined) ?? (await authenticator.fromAuthorization(request.headers.authorization));
85
+ if (user === undefined) {
86
+ throw new AuthenticationError("authentication required");
87
+ }
88
+ request.user = user;
89
+ businessUsers?.record(user);
90
+ }
91
+ catch (error) {
92
+ const status = error instanceof AuthenticationError ? error.status : 401;
93
+ const odata = new ODataError(status, status === 403 ? "FORBIDDEN" : "UNAUTHORIZED", error.message, undefined, [], status === 401 ? { "WWW-Authenticate": 'Bearer realm="open-rap-runtime"' } : {});
94
+ await send(reply, errorResponse(odata, false));
95
+ }
96
+ });
97
+ const serve = async (request, reply) => {
98
+ const user = request.user;
99
+ const headers = headersOf(request);
100
+ const url = request.url;
101
+ const relative = url.startsWith(servicePath) ? url.slice(servicePath.length) : url === servicePath.replace(/\/$/, "") ? "" : url.slice(servicePath.length - 1);
102
+ const question = relative.indexOf("?");
103
+ const odataRequest = {
104
+ method: request.method,
105
+ path: question < 0 ? relative : relative.slice(0, question),
106
+ query: question < 0 ? "" : relative.slice(question + 1),
107
+ headers,
108
+ };
109
+ if (typeof request.body === "string") {
110
+ odataRequest.body = request.body;
111
+ }
112
+ const ieee754 = isIeee754(headers);
113
+ const extra = {};
114
+ if ((headers["x-csrf-token"] ?? "").toLowerCase() === "fetch") {
115
+ extra["X-CSRF-Token"] = csrf.token(user, user.session);
116
+ }
117
+ if (csrf.required(user, request.method) && !csrf.valid(user, headers["x-csrf-token"], user.session)) {
118
+ const failure = errorResponse(new ODataError(403, "CSRF_TOKEN_REQUIRED", "CSRF token validation failed", undefined, [], { "X-CSRF-Token": "Required" }), ieee754);
119
+ return send(reply, failure);
120
+ }
121
+ const ctx = { user, ieee754, language: (headers["accept-language"] ?? "en").split(",")[0]?.trim() ?? "en" };
122
+ if (request.method === "HEAD") {
123
+ return send(reply, { status: 200, headers: { "OData-Version": "4.0", ...extra } });
124
+ }
125
+ if (odataRequest.path === "$permissions" && request.method === "GET") {
126
+ // the operations of the entity sets the user may perform (creation), for the UI (D36)
127
+ const permissions = { ...(writes instanceof RapWriteHandler ? await withReader(user, () => writes.permissions(ctx)) : {}), $user: user.abapName };
128
+ return send(reply, { status: 200, headers: { "Content-Type": "application/json", "Cache-Control": "no-store", ...extra }, body: JSON.stringify(permissions) });
129
+ }
130
+ if (odataRequest.path === "$variants" && (request.method === "GET" || request.method === "PUT")) {
131
+ // the views of the list reports of the user (filters, columns, sort order)
132
+ const page = new URLSearchParams(odataRequest.query).get("page") ?? "";
133
+ const json = { "Content-Type": "application/json", "Cache-Control": "no-store", ...extra };
134
+ if (page === "" || page.length > 200) {
135
+ return send(reply, { status: 400, headers: json, body: JSON.stringify({ error: "the page parameter is required" }) });
136
+ }
137
+ try {
138
+ if (request.method === "GET") {
139
+ return send(reply, { status: 200, headers: json, body: JSON.stringify(await variants.read(user.id, page)) });
140
+ }
141
+ await variants.write(user.id, page, odataRequest.body ?? "");
142
+ return send(reply, { status: 204, headers: extra });
143
+ }
144
+ catch (error) {
145
+ if (error instanceof VariantError) {
146
+ return send(reply, { status: 400, headers: json, body: JSON.stringify({ error: error.message }) });
147
+ }
148
+ throw error;
149
+ }
150
+ }
151
+ const response = await withReader(user, () => handler.handle(odataRequest, ctx));
152
+ response.headers = { ...response.headers, ...extra };
153
+ return send(reply, response);
154
+ };
155
+ const root = servicePath.replace(/\/$/, "");
156
+ app.route({ method: ["GET", "HEAD", "POST", "PATCH", "PUT", "DELETE"], url: root, handler: serve });
157
+ app.route({ method: ["GET", "HEAD", "POST", "PATCH", "PUT", "DELETE"], url: `${root}/*`, handler: serve });
158
+ app.get("/health", async () => ({ status: "ok" }));
159
+ if (options.mcp !== undefined) {
160
+ registerMcp(app, { tools: options.mcp, handler, authenticator });
161
+ }
162
+ sessions?.register(app);
163
+ if (options.ui !== undefined) {
164
+ await registerUi(app, options.ui);
165
+ }
166
+ await options.extend?.(app, { service, handler, authenticator, csrf });
167
+ return app;
168
+ }
169
+ //# sourceMappingURL=app.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,68 @@
1
+ /**
2
+ * Authentication (PLAN.md §6.8): development mode (fixed user) or generic OIDC. In OIDC mode an
3
+ * API client sends a bearer JWT, verified against the JWKS of the issuer; browser sessions
4
+ * (authorization code + PKCE) are added on top of the same verification (milestone M6).
5
+ */
6
+ import { type JWTPayload, type JWTVerifyGetKey } from "jose";
7
+ import { type User } from "./user.js";
8
+ import type { DevOAuthServer } from "./dev-oauth.js";
9
+ export interface DevelopmentAuthOptions {
10
+ mode: "none";
11
+ user?: string;
12
+ /** Roles of the development user (default: every role, `*`). */
13
+ roles?: string[];
14
+ /** Claims of the development user, for the values `{claim:x}` of the roles. */
15
+ attributes?: Record<string, string[]>;
16
+ }
17
+ export interface OidcAuthOptions {
18
+ mode: "oidc";
19
+ /** Issuer URL; its discovery document gives the JWKS URI. */
20
+ issuer: string;
21
+ /** Expected `aud` of access tokens (optional). */
22
+ audience?: string;
23
+ /** Claim giving the user identifier (default preferred_username, then sub). */
24
+ userClaim?: string;
25
+ /** Claim holding the roles: a list, or Keycloak's realm_access.roles (default). */
26
+ rolesClaim?: string;
27
+ /** Role every user must have (optional). */
28
+ requiredRole?: string;
29
+ /** Claims kept with the user, for the values `{claim:x}` of the roles (D34). */
30
+ attributeClaims?: string[];
31
+ /** Key set, for tests or a fixed configuration (default: from the discovery document). */
32
+ jwks?: JWTVerifyGetKey;
33
+ /**
34
+ * Where the discovery document is fetched, when it differs from the issuer (an internal URL of
35
+ * the provider, the tokens naming its public URL).
36
+ */
37
+ discoveryUrl?: string;
38
+ /** Browser sessions: authorization code flow with PKCE (auth/session.ts). */
39
+ session?: {
40
+ clientId: string;
41
+ clientSecret?: string;
42
+ /** Public URL of the application, for the redirect URI. */
43
+ baseUrl: string;
44
+ /** Secret of the session cookie (32 characters or more). */
45
+ secret: string;
46
+ scopes?: string;
47
+ /** Lifetime of a session in seconds (default 8 hours). */
48
+ maxAge?: number;
49
+ };
50
+ }
51
+ export type AuthOptions = DevelopmentAuthOptions | OidcAuthOptions;
52
+ export declare class AuthenticationError extends Error {
53
+ readonly status: number;
54
+ constructor(message: string, status?: number);
55
+ }
56
+ export declare class Authenticator {
57
+ readonly options: AuthOptions;
58
+ private jwks;
59
+ /** Development mode: the tokens of the development authorization server (D60). */
60
+ devOAuth: DevOAuthServer | undefined;
61
+ constructor(options: AuthOptions);
62
+ private keySet;
63
+ userFromClaims(payload: JWTPayload, authenticatedBy: User["authenticatedBy"]): User;
64
+ /** Verifies an access token and returns its user. */
65
+ verifyToken(token: string): Promise<User>;
66
+ /** The user of a request from its Authorization header; undefined when there is none. */
67
+ fromAuthorization(header: string | undefined): Promise<User | undefined>;
68
+ }
@@ -0,0 +1,140 @@
1
+ /**
2
+ * Authentication (PLAN.md §6.8): development mode (fixed user) or generic OIDC. In OIDC mode an
3
+ * API client sends a bearer JWT, verified against the JWKS of the issuer; browser sessions
4
+ * (authorization code + PKCE) are added on top of the same verification (milestone M6).
5
+ */
6
+ import { createRemoteJWKSet, jwtVerify } from "jose";
7
+ import { abapUserName, developmentUser } from "./user.js";
8
+ export class AuthenticationError extends Error {
9
+ status;
10
+ constructor(message, status = 401) {
11
+ super(message);
12
+ this.status = status;
13
+ }
14
+ }
15
+ export class Authenticator {
16
+ options;
17
+ jwks;
18
+ /** Development mode: the tokens of the development authorization server (D60). */
19
+ devOAuth;
20
+ constructor(options) {
21
+ this.options = options;
22
+ if (options.mode === "oidc" && options.jwks !== undefined) {
23
+ this.jwks = options.jwks;
24
+ }
25
+ }
26
+ async keySet(options) {
27
+ if (this.jwks === undefined) {
28
+ const base = options.discoveryUrl ?? options.issuer;
29
+ const discovery = await fetch(base.includes(".well-known") ? base : new URL(".well-known/openid-configuration", base.endsWith("/") ? base : `${base}/`));
30
+ if (!discovery.ok) {
31
+ throw new AuthenticationError(`OIDC discovery failed (${discovery.status})`, 503);
32
+ }
33
+ const document = (await discovery.json());
34
+ if (document.jwks_uri === undefined) {
35
+ throw new AuthenticationError("OIDC discovery document without jwks_uri", 503);
36
+ }
37
+ this.jwks = createRemoteJWKSet(new URL(document.jwks_uri));
38
+ }
39
+ return this.jwks;
40
+ }
41
+ userFromClaims(payload, authenticatedBy) {
42
+ const options = this.options;
43
+ const claim = options.userClaim ?? "preferred_username";
44
+ // a token of the client credentials flow names the client (technical user, D60)
45
+ const id = String(payload[claim] ?? payload["client_id"] ?? payload.sub ?? "");
46
+ if (id === "") {
47
+ throw new AuthenticationError(`the token has no ${claim} or sub claim`);
48
+ }
49
+ const roles = rolesOf(payload, options.rolesClaim);
50
+ if (options.requiredRole !== undefined && !roles.includes(options.requiredRole)) {
51
+ throw new AuthenticationError(`the role ${options.requiredRole} is required`, 403);
52
+ }
53
+ const user = { id, abapName: abapUserName(id), roles, authenticatedBy };
54
+ if (typeof payload["name"] === "string")
55
+ user.name = payload["name"];
56
+ if (typeof payload["email"] === "string")
57
+ user.email = payload["email"];
58
+ const attributes = attributesOf(payload, options.attributeClaims ?? []);
59
+ if (Object.keys(attributes).length > 0) {
60
+ user.attributes = attributes;
61
+ }
62
+ return user;
63
+ }
64
+ /** Verifies an access token and returns its user. */
65
+ async verifyToken(token) {
66
+ const options = this.options;
67
+ if (options.mode !== "oidc") {
68
+ throw new AuthenticationError("bearer tokens need the OIDC mode");
69
+ }
70
+ const verifyOptions = { issuer: options.issuer };
71
+ if (options.audience !== undefined) {
72
+ verifyOptions.audience = options.audience;
73
+ }
74
+ let payload;
75
+ try {
76
+ ({ payload } = await jwtVerify(token, await this.keySet(options), verifyOptions));
77
+ }
78
+ catch (error) {
79
+ if (error instanceof AuthenticationError) {
80
+ throw error;
81
+ }
82
+ throw new AuthenticationError(`invalid token: ${error.message}`);
83
+ }
84
+ return this.userFromClaims(payload, "bearer");
85
+ }
86
+ /** The user of a request from its Authorization header; undefined when there is none. */
87
+ async fromAuthorization(header) {
88
+ if (this.options.mode === "none") {
89
+ const bearer = header === undefined ? null : /^Bearer\s+(.+)$/i.exec(header);
90
+ if (bearer !== null && this.devOAuth !== undefined) {
91
+ // a token of the development authorization server (D60)
92
+ let payload;
93
+ try {
94
+ payload = await this.devOAuth.verify(bearer[1].trim());
95
+ }
96
+ catch (error) {
97
+ throw new AuthenticationError(`invalid token: ${error.message}`);
98
+ }
99
+ const id = String(payload["preferred_username"] ?? payload["client_id"] ?? payload.sub ?? "DEVELOPER");
100
+ const roles = Array.isArray(payload["roles"]) ? payload["roles"].map(String) : ["*"];
101
+ // a development user: with the roles of the token (`*`: every authorization, like DEV_ROLES)
102
+ return developmentUser(id, roles, this.options.attributes);
103
+ }
104
+ return developmentUser(this.options.user, this.options.roles, this.options.attributes);
105
+ }
106
+ if (header === undefined) {
107
+ return undefined;
108
+ }
109
+ const match = /^Bearer\s+(.+)$/i.exec(header);
110
+ if (match === null) {
111
+ throw new AuthenticationError("unsupported authorization scheme (Bearer expected)");
112
+ }
113
+ return this.verifyToken(match[1].trim());
114
+ }
115
+ }
116
+ /** The claims the authorizations read, as lists of strings (a claim path may have dots). */
117
+ function attributesOf(payload, claims) {
118
+ const attributes = {};
119
+ for (const claim of claims) {
120
+ const value = claim.split(".").reduce((o, k) => (o !== null && typeof o === "object" ? o[k] : undefined), payload);
121
+ if (value === undefined || value === null) {
122
+ continue;
123
+ }
124
+ attributes[claim] = (Array.isArray(value) ? value : [value]).map(String);
125
+ }
126
+ return attributes;
127
+ }
128
+ function rolesOf(payload, claim) {
129
+ if (claim !== undefined) {
130
+ const value = claim.split(".").reduce((o, k) => (o !== null && typeof o === "object" ? o[k] : undefined), payload);
131
+ return Array.isArray(value) ? value.map(String) : typeof value === "string" ? value.split(/[\s,]+/) : [];
132
+ }
133
+ const realm = payload["realm_access"]?.roles;
134
+ if (Array.isArray(realm)) {
135
+ return realm.map(String);
136
+ }
137
+ const roles = payload["roles"];
138
+ return Array.isArray(roles) ? roles.map(String) : [];
139
+ }
140
+ //# sourceMappingURL=auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/auth/auth.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * The authorizations of the users (decision D34): the roles of the identity provider (claims of
3
+ * the token) give authorizations, instances of authorization objects with field values, defined
4
+ * in rapt/authorizations.json — the counterpart of the business roles of the ABAP environment.
5
+ * AUTHORITY-CHECK and the access controls (pfcg_auth) read them.
6
+ */
7
+ import { type AuthorizationsModel, type AuthorizationValue, type RoleModel } from "@open-rap/model";
8
+ import type { User } from "./user.js";
9
+ /** One authorization of a user: field → accepted values (the claims of the token expanded). */
10
+ export type UserAuthorization = Record<string, AuthorizationValue[]>;
11
+ /** A value of an authorization field against an accepted value of a role (PFCG semantics). */
12
+ export declare function valueMatches(value: string, accepted: AuthorizationValue): boolean;
13
+ /** The roles of rapt/authorizations.json (`roles`: role name → authorizations) as a model. */
14
+ export declare function rolesFromJson(json: unknown): RoleModel[];
15
+ export declare class Authorizations {
16
+ private readonly roles;
17
+ constructor(model: AuthorizationsModel | undefined);
18
+ /** Whether roles are defined (else AUTHORITY-CHECK fails for every user: no authorization). */
19
+ get defined(): boolean;
20
+ /** The claims of the token that values of the roles read (`{claim:agency}`). */
21
+ claims(): string[];
22
+ /**
23
+ * The development user without DEV_ROLES (`*`) has every authorization, like SAP_ALL in a
24
+ * development system: every role, and AUTHORITY-CHECK passes for every object.
25
+ */
26
+ isUnrestricted(user: User): boolean;
27
+ /** The roles of a user: those of its token; all of them for the unrestricted development user. */
28
+ rolesOf(user: User): RoleModel[];
29
+ /** The authorizations of a user for an authorization object, the claims of its token expanded. */
30
+ of(user: User, object: string): UserAuthorization[];
31
+ /**
32
+ * AUTHORITY-CHECK: 0 when one authorization of the object accepts every checked field (a field
33
+ * given with DUMMY is not checked), 4 when none does, 12 without authorization for the object.
34
+ */
35
+ check(user: User, object: string, fields: Array<{
36
+ id: string;
37
+ value?: string;
38
+ }>): 0 | 4 | 12;
39
+ }