@mcp-abap-adt/auth-broker 4.0.0 → 5.0.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.
@@ -4,18 +4,40 @@
4
4
  * Two fields choose the provider — `authType` and, for `jwt` and `saml`,
5
5
  * `grantType` — and nothing else: no field's presence or absence is ever
6
6
  * read to pick a row. Both come from the key store's means.
7
+ *
8
+ * Every token row takes the consumer's `renewal` (called once per build, with
9
+ * the destination and its grant) and persists through auth-providers'
10
+ * `refreshStatePersistence` over the broker's write, governed by the
11
+ * consumer's `onWriteFailure`; a row built without either is refused naming
12
+ * it, beside every other missing field, in one error. A failure the broker
13
+ * reads — the SNC provider's, a validator's, a provider constructor's — is
14
+ * read through auth-errors (`readFailure`) and carried by the
15
+ * `DestinationConfigError`, never matched by class.
7
16
  */
8
- import { type IDeviceCodePresenter, type OidcCallbackResult } from '@mcp-abap-adt/auth-providers';
9
- import type { IAssertionReplayStore, IAuthorizationStrategy, IAuthProvider, ITokenResult } from '@mcp-abap-adt/interfaces-auth';
17
+ import { type IDeviceCodePresenter, type OidcCallbackResult, type PersistedTokens } from '@mcp-abap-adt/auth-providers';
18
+ import type { IAssertionReplayStore, IAuthorizationStrategy, IAuthProvider, IClientAuthentication, IRenewalStrategy } from '@mcp-abap-adt/interfaces-auth';
10
19
  import type { DestinationGrant, IConfig, IConnectionConfig } from '@mcp-abap-adt/interfaces-auth-broker';
11
20
  import type { IAuthorizationConfig } from '@mcp-abap-adt/interfaces-auth-sap';
12
21
  import type { ILogger } from '@mcp-abap-adt/interfaces-utils';
13
22
  import { type Binding } from './binding';
23
+ import type { ClientIdentity } from './clientAuthentication';
24
+ import { DestinationConfigError } from './DestinationConfigError';
14
25
  type StatedAuthType = NonNullable<IConnectionConfig['authType']>;
26
+ /**
27
+ * `authType` and `grantType` are a `jwt` / `saml` pair of the closed list —
28
+ * so neither holds `;` or `/`. Never throws.
29
+ */
30
+ export declare function isStatedRow(authType: unknown, grant: unknown): grant is DestinationGrant & string;
15
31
  /** The stated `authType`, or the error naming it. */
16
32
  export declare function statedAuthType(destination: string, means: IConnectionConfig | null): StatedAuthType;
17
33
  /** The stated grant of a `jwt` or `saml` destination, or the error naming it. */
18
34
  export declare function statedGrant(destination: string, authType: 'jwt' | 'saml', means: IConnectionConfig): DestinationGrant;
35
+ /**
36
+ * A row's client: the key store's secret client, or — on the strategy path
37
+ * without one — the certificate client's identity, which carries no secret
38
+ * field at all, so it can never pass for a (public) secret client.
39
+ */
40
+ export type RowClient = IAuthorizationConfig | ClientIdentity;
19
41
  /** `basic` → `BasicAuthProvider(username, password)`, from the means alone. */
20
42
  export declare function basicProvider(destination: string, means: IConnectionConfig): IAuthProvider;
21
43
  /**
@@ -24,96 +46,192 @@ export declare function basicProvider(destination: string, means: IConnectionCon
24
46
  * `sncLib` is absent and the user's name taken from the credential when
25
47
  * `sncMyName` is, and the provider documents its own `qop` default.
26
48
  */
27
- export declare function sncProvider(destination: string, means: IConnectionConfig, logger: ILogger): IAuthProvider;
49
+ export declare function sncProvider(destination: string, means: IConnectionConfig, logger: ILogger): IAuthProvider & Attachable;
28
50
  /**
29
51
  * `none` → the credential handed over, from the session: the only way in, so
30
52
  * required. Read from the secret alone — the means are not a seed.
31
53
  *
32
54
  * The broker did not obtain it and cannot obtain it again, so a binding that
33
- * does not match is refused, never discarded: `issuedFor`
34
- * must always equal the destination's resource — it is what stops the
35
- * credential going to another one; `issuedBy` is compared only when the means
36
- * state an issuer.
55
+ * does not match is refused, never discarded: `issuedFor` must equal the
56
+ * destination's resource — it is what stops the credential going to another
57
+ * one — and `issuedBy` must be exactly the row's record: a credential
58
+ * handed over with a 4.x binding, or none, is refused until it is written
59
+ * again with 5.0.0's `bindingOf`.
37
60
  */
38
61
  export declare function handedOverProvider(destination: string, authType: 'jwt' | 'saml', secret: IConfig | null, binding: Binding): IAuthProvider;
62
+ /** Every grant that obtains a secret: `DestinationGrant` without `'none'`. */
63
+ export type TokenGrant = Exclude<DestinationGrant, 'none'>;
64
+ /**
65
+ * A provider that has parties: every token provider
66
+ * (`BaseTokenProvider.attach`) and the SNC one (`SncLogonProvider.attach`).
67
+ */
68
+ export interface Attachable {
69
+ attach(signal: AbortSignal): () => void;
70
+ }
71
+ /**
72
+ * A token row's provider, and the refresh token the builder handed it from
73
+ * the session — the very value in the provider's config, so what the broker
74
+ * takes as the refresh token the build owns at its start is what the
75
+ * provider was given, for every grant, and cannot drift from it:
76
+ * `client_credentials` is handed none (its row takes no seed), `saml2_pure`
77
+ * none (it holds cookies), and a build that started with nothing none.
78
+ */
79
+ export interface RowBuild {
80
+ /** A token provider: it has parties. */
81
+ readonly provider: IAuthProvider & Attachable;
82
+ readonly seededRefreshToken: string | undefined;
83
+ }
84
+ /** How the consumer's `renewal` option is shaped. */
85
+ export type RenewalOption = (destination: string, grant: TokenGrant) => IRenewalStrategy;
86
+ /**
87
+ * What every token row takes from the broker beside its own data: the
88
+ * consumer's `renewal` and `onWriteFailure` (each refused by name when
89
+ * absent) and the broker's one write of the destination's session.
90
+ */
91
+ export interface TokenRowOptions {
92
+ renewal: RenewalOption | undefined;
93
+ onWriteFailure: 'fail' | 'continue' | undefined;
94
+ /**
95
+ * One session write for the destination: resolves when it landed, rejects
96
+ * with the store's error when it did not.
97
+ */
98
+ write: (tokens: PersistedTokens) => Promise<void>;
99
+ logger: ILogger;
100
+ /**
101
+ * The consumer's `authDebug === true`, decided once by the broker: every
102
+ * token provider a row builds is given it.
103
+ */
104
+ authDebug: boolean;
105
+ }
106
+ /** `onWriteFailure` as given: `'fail'` or `'continue'`, nothing else. */
107
+ export declare function isWriteFailurePolicy(value: unknown): value is 'fail' | 'continue';
108
+ /**
109
+ * The consumer options a token row lacks, by name: `renewal` when it is no
110
+ * function, `onWriteFailure` when it is neither `'fail'` nor `'continue'`.
111
+ * There is no default for either.
112
+ */
113
+ export declare function optionsLacking(options: Pick<TokenRowOptions, 'renewal' | 'onWriteFailure'>): string[];
39
114
  /** The UAA grants: one client, one token endpoint (`<uaaUrl>/oauth/token`). */
40
115
  export type UaaGrant = 'authorization_code' | 'client_credentials' | 'passcode';
41
116
  export declare function isUaaGrant(grant: DestinationGrant): grant is UaaGrant;
42
- /** What a UAA row is built from. */
43
- export interface UaaRow {
117
+ /**
118
+ * What a token row's check reads of its client and options. `client`
119
+ * `undefined` means "not known yet": the consumer's `clientAuthentication`
120
+ * strategy will tell the client identity, so its fields are not judged.
121
+ */
122
+ interface ClientCheck {
44
123
  destination: string;
124
+ client: RowClient | null | undefined;
125
+ /** Whether the client authenticates through the consumer's strategy. */
126
+ clientAuthenticated: boolean;
127
+ renewal: RenewalOption | undefined;
128
+ onWriteFailure: 'fail' | 'continue' | undefined;
129
+ }
130
+ /** What a UAA row's check reads. */
131
+ export interface UaaCheck extends ClientCheck {
45
132
  grant: UaaGrant;
46
- /** The client, from the key store's `getAuthorizationConfig`. */
47
- client: IAuthorizationConfig | null;
48
- /** The session secret — the seed; `null` when there is no session. */
49
- secret: IConfig | null;
50
133
  /** The consumer's `authorization` option. */
51
134
  authorization: ((destination: string, grant: 'authorization_code' | 'passcode') => IAuthorizationStrategy<string>) | undefined;
52
- logger: ILogger;
53
- onTokens: (result: ITokenResult) => Promise<void>;
135
+ }
136
+ /** What a UAA row is built from. */
137
+ export interface UaaRow extends Omit<UaaCheck, 'client' | 'clientAuthenticated'>, TokenRowOptions {
138
+ /**
139
+ * The client: the key store's `getAuthorizationConfig` — or, with a
140
+ * strategy and no secret client, the certificate client's identity.
141
+ */
142
+ client: RowClient | null;
143
+ /** The session secret — the seed; `null` when there is no session. */
144
+ secret: IConfig | null;
145
+ /**
146
+ * The consumer strategy's answer. Given, the provider authenticates its
147
+ * client with it and gets no `clientSecret`; absent, 4.0.0's secret.
148
+ */
149
+ clientAuthentication?: IClientAuthentication;
54
150
  }
151
+ /**
152
+ * Every field and option a UAA row lacks, named in one error — or nothing.
153
+ * `serviceUrl` is not among them: the providers read the client and `uaaUrl`
154
+ * only. Without a strategy, `uaaClientSecret: ''` is a public client:
155
+ * `passcode` takes it as no secret; the other two rows' providers require a
156
+ * secret, so for them `''` is missing.
157
+ */
158
+ export declare function uaaRefusal(check: UaaCheck): DestinationConfigError | undefined;
55
159
  /**
56
160
  * `jwt` / `authorization_code` → `AuthorizationCodeProvider`,
57
161
  * `client_credentials` → `ClientCredentialsProvider`, `passcode` →
58
162
  * `UaaPasscodeProvider`: the client from the key store, the seed from the
59
- * session (not for `client_credentials`, whose row takes the client alone).
163
+ * session (not for `client_credentials`, whose row takes the client alone),
164
+ * the consumer's renewal for this grant, and the broker's persistence.
60
165
  *
61
- * Every field and option the row lacks is named in one error, before the
62
- * consumer's `authorization` is called. `serviceUrl` is not among them: the
63
- * providers read the client and `uaaUrl` only. `uaaClientSecret: ''` is a public
64
- * client: `passcode` takes it as no secret; the other two rows' providers
65
- * require a secret, so for them `''` is missing.
166
+ * Every field and option the row lacks is named in one error
167
+ * (`uaaRefusal`), before the consumer's `authorization` or `renewal` is
168
+ * called. On the strategy path the client may be a certificate client's
169
+ * identity, which holds no secret field at all (`RowClient`). With the
170
+ * strategy's answer (`clientAuthentication`) no secret is required and none
171
+ * is passed: the provider authenticates its client with the answer.
66
172
  */
67
- export declare function uaaProvider(row: UaaRow): IAuthProvider;
173
+ export declare function uaaProvider(row: UaaRow): RowBuild;
68
174
  /** The OIDC grants: a client, and an issuer or explicit endpoints. */
69
175
  export type OidcGrant = 'oidc_authorization_code' | 'device_code' | 'password' | 'token_exchange';
70
176
  export declare function isOidcGrant(grant: DestinationGrant): grant is OidcGrant;
71
- /** What an OIDC row is built from. */
72
- export interface OidcRow {
73
- destination: string;
177
+ /** What an OIDC row's check reads. */
178
+ export interface OidcCheck extends ClientCheck {
74
179
  grant: OidcGrant;
75
180
  means: IConnectionConfig;
181
+ oidcAuthorization: ((destination: string) => IAuthorizationStrategy<OidcCallbackResult>) | undefined;
182
+ deviceCodePresenter: ((destination: string) => IDeviceCodePresenter) | undefined;
183
+ }
184
+ /** What an OIDC row is built from. */
185
+ export interface OidcRow extends Omit<OidcCheck, 'client' | 'clientAuthenticated'>, TokenRowOptions {
76
186
  /** The client, from the key store's `getAuthorizationConfig`. */
77
- client: IAuthorizationConfig | null;
187
+ client: RowClient | null;
78
188
  /** The session secret — the seed; `null` when there is none, or it is not bound here. */
79
189
  secret: IConfig | null;
80
- oidcAuthorization: ((destination: string) => IAuthorizationStrategy<OidcCallbackResult>) | undefined;
81
- deviceCodePresenter: ((destination: string) => IDeviceCodePresenter) | undefined;
82
- logger: ILogger;
83
- onTokens: (result: ITokenResult) => Promise<void>;
190
+ /** The consumer strategy's answer: given, it replaces the secret. */
191
+ clientAuthentication?: IClientAuthentication;
84
192
  }
193
+ /**
194
+ * Every field and option an OIDC row lacks, named in one error — or nothing.
195
+ * The endpoints: `oidcIssuerUrl`, from which the provider discovers them, or
196
+ * every explicit endpoint the row uses — without either the error names the
197
+ * issuer and the endpoints missing.
198
+ */
199
+ export declare function oidcRefusal(check: OidcCheck): DestinationConfigError | undefined;
85
200
  /**
86
201
  * `jwt` / `oidc_authorization_code` → `OidcBrowserProvider`, `device_code` →
87
202
  * `OidcDeviceFlowProvider`, `password` → `OidcPasswordProvider`,
88
203
  * `token_exchange` → `OidcTokenExchangeProvider`: the client id (and secret,
89
204
  * `''` being a public client) from the key store's client, the grant's data
90
- * from its `oidc*` fields, the seed from the session.
205
+ * from its `oidc*` fields, the seed from the session, the consumer's renewal
206
+ * for this grant, and the broker's persistence.
91
207
  *
92
- * The endpoints: `oidcIssuerUrl`, from which the provider discovers them, or
93
- * every explicit endpoint the row uses — without either the error names the
94
- * issuer and the endpoints missing. Every field and option the row lacks is
95
- * named in one error, before any collaborator is called. `token_exchange`
96
- * takes one scope string: the stored scopes joined by a space.
208
+ * Every field and option the row lacks is named in one error
209
+ * (`oidcRefusal`), before any collaborator is called. `token_exchange` takes
210
+ * one scope string: the stored scopes joined by a space.
97
211
  */
98
- export declare function oidcProvider(row: OidcRow): IAuthProvider;
212
+ export declare function oidcProvider(row: OidcRow): RowBuild;
99
213
  /** The SAML grants: an identity provider's assertion, validated first. */
100
214
  export type SamlGrant = 'saml2_pure' | 'saml2_bearer';
101
215
  export declare function isSamlGrant(grant: DestinationGrant): grant is SamlGrant;
102
- /** What a SAML row is built from. */
103
- export interface SamlRow {
104
- destination: string;
216
+ /** What a SAML row's check reads. */
217
+ export interface SamlCheck extends ClientCheck {
105
218
  grant: SamlGrant;
106
219
  means: IConnectionConfig;
107
- /** `saml2_bearer`'s client, from the key store; `null` for `saml2_pure`. */
108
- client: IAuthorizationConfig | null;
109
- /** The session secret — the seed; `null` when there is none, or it is not bound here. */
110
- secret: IConfig | null;
111
220
  authorization: ((destination: string, grant: SamlGrant) => IAuthorizationStrategy<string>) | undefined;
112
221
  samlCookies: ((destination: string) => (samlResponse: string) => Promise<string>) | undefined;
113
222
  assertionReplayStore: ((destination: string) => IAssertionReplayStore) | undefined;
114
- logger: ILogger;
115
- onTokens: (result: ITokenResult) => Promise<void>;
116
223
  }
224
+ /** What a SAML row is built from. */
225
+ export interface SamlRow extends Omit<SamlCheck, 'client' | 'clientAuthenticated'>, TokenRowOptions {
226
+ /** `saml2_bearer`'s client, from the key store; `null` for `saml2_pure`. */
227
+ client: RowClient | null;
228
+ /** The session secret — the seed; `null` when there is none, or it is not bound here. */
229
+ secret: IConfig | null;
230
+ /** `saml2_bearer`: the consumer strategy's answer; given, it replaces the secret. */
231
+ clientAuthentication?: IClientAuthentication;
232
+ }
233
+ /** Every field and option a SAML row lacks, named in one error — or nothing. */
234
+ export declare function samlRefusal(check: SamlCheck): DestinationConfigError | undefined;
117
235
  /**
118
236
  * `saml` / `saml2_pure` → `Saml2PureProvider`, `saml2_bearer` →
119
237
  * `Saml2BearerProvider`, each validating the assertion before anything uses
@@ -126,14 +244,17 @@ export interface SamlRow {
126
244
  *
127
245
  * `saml2_pure` is seeded with the stored cookies and `expiresAt`;
128
246
  * `saml2_bearer` with the stored token, its refresh token and expiry, and
129
- * takes the client (`uaaUrl`, `uaaClientId`; `uaaClientSecret` `''` a public
130
- * client) and `samlTokenUrl` when stated.
247
+ * takes the client (`uaaUrl`, `uaaClientId`; without a strategy,
248
+ * `uaaClientSecret` `''` a public client; on the strategy path the identity
249
+ * alone, no secret) and `samlTokenUrl` when stated. Both take the consumer's
250
+ * renewal for their grant and the broker's persistence.
131
251
  *
132
- * Every field and option the row lacks is named in one error, before any
133
- * collaborator is called; so is a `samlClockSkewMs` that is not a whole number
134
- * of milliseconds, and a certificate the validator cannot read — by name, never
135
- * the value.
252
+ * Every field and option the row lacks is named in one error
253
+ * (`samlRefusal`), before any collaborator is called; so is a
254
+ * `samlClockSkewMs` that is not a whole number of milliseconds, and a
255
+ * certificate the validator cannot read — by name, never the value, the
256
+ * validator's error carried.
136
257
  */
137
- export declare function samlProvider(row: SamlRow): IAuthProvider;
258
+ export declare function samlProvider(row: SamlRow): RowBuild;
138
259
  export {};
139
260
  //# sourceMappingURL=destinations.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"destinations.d.ts","sourceRoot":"","sources":["../src/destinations.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"destinations.d.ts","sourceRoot":"","sources":["../src/destinations.ts"],"names":[],"mappings":"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"}