@keycardai/oauth 0.3.0 → 0.4.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.
- package/README.md +84 -2
- package/dist/cjs/credentials.d.ts +5 -1
- package/dist/cjs/credentials.d.ts.map +1 -1
- package/dist/cjs/errors.d.ts +23 -0
- package/dist/cjs/errors.d.ts.map +1 -1
- package/dist/cjs/errors.js +42 -1
- package/dist/cjs/errors.js.map +1 -1
- package/dist/cjs/index.d.ts +6 -3
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +10 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/jwt/substituteUser.d.ts +15 -0
- package/dist/cjs/jwt/substituteUser.d.ts.map +1 -0
- package/dist/cjs/jwt/substituteUser.js +29 -0
- package/dist/cjs/jwt/substituteUser.js.map +1 -0
- package/dist/cjs/keyring.d.ts +6 -0
- package/dist/cjs/keyring.d.ts.map +1 -1
- package/dist/cjs/keyring.js +11 -0
- package/dist/cjs/keyring.js.map +1 -1
- package/dist/cjs/server/accessContext.d.ts +26 -0
- package/dist/cjs/server/accessContext.d.ts.map +1 -0
- package/dist/cjs/server/accessContext.js +105 -0
- package/dist/cjs/server/accessContext.js.map +1 -0
- package/dist/cjs/server/accessToken.d.ts +8 -0
- package/dist/cjs/server/accessToken.d.ts.map +1 -0
- package/dist/cjs/server/accessToken.js +3 -0
- package/dist/cjs/server/accessToken.js.map +1 -0
- package/dist/cjs/server/clientSecret.d.ts +14 -0
- package/dist/cjs/server/clientSecret.d.ts.map +1 -0
- package/dist/cjs/server/clientSecret.js +76 -0
- package/dist/cjs/server/clientSecret.js.map +1 -0
- package/dist/cjs/server/index.d.ts +8 -0
- package/dist/cjs/server/index.d.ts.map +1 -0
- package/dist/cjs/server/index.js +10 -0
- package/dist/cjs/server/index.js.map +1 -0
- package/dist/cjs/server/tokenVerifier.d.ts +49 -0
- package/dist/cjs/server/tokenVerifier.d.ts.map +1 -0
- package/dist/cjs/server/tokenVerifier.js +118 -0
- package/dist/cjs/server/tokenVerifier.js.map +1 -0
- package/dist/cjs/tokenExchange.d.ts +27 -1
- package/dist/cjs/tokenExchange.d.ts.map +1 -1
- package/dist/cjs/tokenExchange.js +44 -6
- package/dist/cjs/tokenExchange.js.map +1 -1
- package/dist/esm/credentials.d.ts +5 -1
- package/dist/esm/credentials.d.ts.map +1 -1
- package/dist/esm/errors.d.ts +23 -0
- package/dist/esm/errors.d.ts.map +1 -1
- package/dist/esm/errors.js +39 -0
- package/dist/esm/errors.js.map +1 -1
- package/dist/esm/index.d.ts +6 -3
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +4 -2
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/jwt/substituteUser.d.ts +15 -0
- package/dist/esm/jwt/substituteUser.d.ts.map +1 -0
- package/dist/esm/jwt/substituteUser.js +26 -0
- package/dist/esm/jwt/substituteUser.js.map +1 -0
- package/dist/esm/keyring.d.ts +6 -0
- package/dist/esm/keyring.d.ts.map +1 -1
- package/dist/esm/keyring.js +11 -0
- package/dist/esm/keyring.js.map +1 -1
- package/dist/esm/server/accessContext.d.ts +26 -0
- package/dist/esm/server/accessContext.d.ts.map +1 -0
- package/dist/esm/server/accessContext.js +101 -0
- package/dist/esm/server/accessContext.js.map +1 -0
- package/dist/esm/server/accessToken.d.ts +8 -0
- package/dist/esm/server/accessToken.d.ts.map +1 -0
- package/dist/esm/server/accessToken.js +2 -0
- package/dist/esm/server/accessToken.js.map +1 -0
- package/dist/esm/server/clientSecret.d.ts +14 -0
- package/dist/esm/server/clientSecret.d.ts.map +1 -0
- package/dist/esm/server/clientSecret.js +72 -0
- package/dist/esm/server/clientSecret.js.map +1 -0
- package/dist/esm/server/index.d.ts +8 -0
- package/dist/esm/server/index.d.ts.map +1 -0
- package/dist/esm/server/index.js +4 -0
- package/dist/esm/server/index.js.map +1 -0
- package/dist/esm/server/tokenVerifier.d.ts +49 -0
- package/dist/esm/server/tokenVerifier.d.ts.map +1 -0
- package/dist/esm/server/tokenVerifier.js +114 -0
- package/dist/esm/server/tokenVerifier.js.map +1 -0
- package/dist/esm/tokenExchange.d.ts +27 -1
- package/dist/esm/tokenExchange.d.ts.map +1 -1
- package/dist/esm/tokenExchange.js +43 -5
- package/dist/esm/tokenExchange.js.map +1 -1
- package/package.json +38 -2
|
@@ -1,3 +1,13 @@
|
|
|
1
|
+
import type { ApplicationCredential } from "./credentials.js";
|
|
2
|
+
export declare const TokenType: {
|
|
3
|
+
readonly ACCESS_TOKEN: "urn:ietf:params:oauth:token-type:access_token";
|
|
4
|
+
/**
|
|
5
|
+
* Vendor URN for substitute-user (impersonation) subject tokens.
|
|
6
|
+
* Recognized by the Keycard authorization server; not registered with IANA.
|
|
7
|
+
*/
|
|
8
|
+
readonly SUBSTITUTE_USER: "urn:keycard:params:oauth:token-type:substitute-user";
|
|
9
|
+
};
|
|
10
|
+
export type TokenType = (typeof TokenType)[keyof typeof TokenType];
|
|
1
11
|
export interface TokenExchangeRequest {
|
|
2
12
|
grantType?: string;
|
|
3
13
|
resource?: string;
|
|
@@ -22,10 +32,26 @@ export interface TokenResponse {
|
|
|
22
32
|
export interface TokenExchangeClientOptions {
|
|
23
33
|
clientId?: string;
|
|
24
34
|
clientSecret?: string;
|
|
35
|
+
/**
|
|
36
|
+
* Application credential provider. When set, takes precedence over
|
|
37
|
+
* static `clientId`/`clientSecret` and resolves the per-request
|
|
38
|
+
* Authorization header from the credential's `getAuth(zoneId)`.
|
|
39
|
+
*/
|
|
40
|
+
credential?: ApplicationCredential;
|
|
41
|
+
}
|
|
42
|
+
export interface ExchangeOptions {
|
|
43
|
+
zoneId?: string;
|
|
44
|
+
}
|
|
45
|
+
export interface ImpersonateRequest {
|
|
46
|
+
userIdentifier: string;
|
|
47
|
+
resource: string;
|
|
48
|
+
scope?: string;
|
|
49
|
+
zoneId?: string;
|
|
25
50
|
}
|
|
26
51
|
export declare class TokenExchangeClient {
|
|
27
52
|
#private;
|
|
28
53
|
constructor(issuerUrl: string, options?: TokenExchangeClientOptions);
|
|
29
|
-
exchangeToken(request: TokenExchangeRequest): Promise<TokenResponse>;
|
|
54
|
+
exchangeToken(request: TokenExchangeRequest, options?: ExchangeOptions): Promise<TokenResponse>;
|
|
55
|
+
impersonate(req: ImpersonateRequest): Promise<TokenResponse>;
|
|
30
56
|
}
|
|
31
57
|
//# sourceMappingURL=tokenExchange.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tokenExchange.d.ts","sourceRoot":"","sources":["../../src/tokenExchange.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tokenExchange.d.ts","sourceRoot":"","sources":["../../src/tokenExchange.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAO9D,eAAO,MAAM,SAAS;;IAEpB;;;OAGG;;CAEK,CAAC;AACX,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,SAAS,CAAC,CAAC,MAAM,OAAO,SAAS,CAAC,CAAC;AAEnE,MAAM,WAAW,oBAAoB;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;OAIG;IACH,UAAU,CAAC,EAAE,qBAAqB,CAAC;CACpC;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,kBAAkB;IACjC,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAkDD,qBAAa,mBAAmB;;gBAQlB,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,0BAA0B;IAO7D,aAAa,CACjB,OAAO,EAAE,oBAAoB,EAC7B,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,aAAa,CAAC;IA8CnB,WAAW,CAAC,GAAG,EAAE,kBAAkB,GAAG,OAAO,CAAC,aAAa,CAAC;CAkDnE"}
|
|
@@ -9,9 +9,21 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
|
|
|
9
9
|
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
10
10
|
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
11
11
|
};
|
|
12
|
-
var _TokenExchangeClient_instances, _TokenExchangeClient_issuerUrl, _TokenExchangeClient_clientId, _TokenExchangeClient_clientSecret, _TokenExchangeClient_tokenEndpoint, _TokenExchangeClient_discoveryPromise, _TokenExchangeClient_getTokenEndpoint;
|
|
12
|
+
var _TokenExchangeClient_instances, _TokenExchangeClient_issuerUrl, _TokenExchangeClient_clientId, _TokenExchangeClient_clientSecret, _TokenExchangeClient_credential, _TokenExchangeClient_tokenEndpoint, _TokenExchangeClient_discoveryPromise, _TokenExchangeClient_resolveBasicAuth, _TokenExchangeClient_getTokenEndpoint;
|
|
13
13
|
import { fetchAuthorizationServerMetadata } from "./discovery.js";
|
|
14
14
|
import { OAuthError } from "./errors.js";
|
|
15
|
+
import { buildSubstituteUserToken } from "./jwt/substituteUser.js";
|
|
16
|
+
// =============================================================================
|
|
17
|
+
// Token Exchange Types (RFC 8693)
|
|
18
|
+
// =============================================================================
|
|
19
|
+
export const TokenType = {
|
|
20
|
+
ACCESS_TOKEN: "urn:ietf:params:oauth:token-type:access_token",
|
|
21
|
+
/**
|
|
22
|
+
* Vendor URN for substitute-user (impersonation) subject tokens.
|
|
23
|
+
* Recognized by the Keycard authorization server; not registered with IANA.
|
|
24
|
+
*/
|
|
25
|
+
SUBSTITUTE_USER: "urn:keycard:params:oauth:token-type:substitute-user",
|
|
26
|
+
};
|
|
15
27
|
// =============================================================================
|
|
16
28
|
// Wire format helpers (camelCase <-> snake_case at the boundary)
|
|
17
29
|
// =============================================================================
|
|
@@ -67,20 +79,23 @@ export class TokenExchangeClient {
|
|
|
67
79
|
_TokenExchangeClient_issuerUrl.set(this, void 0);
|
|
68
80
|
_TokenExchangeClient_clientId.set(this, void 0);
|
|
69
81
|
_TokenExchangeClient_clientSecret.set(this, void 0);
|
|
82
|
+
_TokenExchangeClient_credential.set(this, void 0);
|
|
70
83
|
_TokenExchangeClient_tokenEndpoint.set(this, void 0);
|
|
71
84
|
_TokenExchangeClient_discoveryPromise.set(this, void 0);
|
|
72
85
|
__classPrivateFieldSet(this, _TokenExchangeClient_issuerUrl, issuerUrl, "f");
|
|
73
86
|
__classPrivateFieldSet(this, _TokenExchangeClient_clientId, options?.clientId, "f");
|
|
74
87
|
__classPrivateFieldSet(this, _TokenExchangeClient_clientSecret, options?.clientSecret, "f");
|
|
88
|
+
__classPrivateFieldSet(this, _TokenExchangeClient_credential, options?.credential, "f");
|
|
75
89
|
}
|
|
76
|
-
async exchangeToken(request) {
|
|
90
|
+
async exchangeToken(request, options) {
|
|
77
91
|
const tokenEndpoint = await __classPrivateFieldGet(this, _TokenExchangeClient_instances, "m", _TokenExchangeClient_getTokenEndpoint).call(this);
|
|
78
92
|
const body = serializeRequest(request);
|
|
79
93
|
const headers = {
|
|
80
94
|
"Content-Type": "application/x-www-form-urlencoded",
|
|
81
95
|
};
|
|
82
|
-
|
|
83
|
-
|
|
96
|
+
const basicAuth = __classPrivateFieldGet(this, _TokenExchangeClient_instances, "m", _TokenExchangeClient_resolveBasicAuth).call(this, options?.zoneId);
|
|
97
|
+
if (basicAuth) {
|
|
98
|
+
const credentials = btoa(`${basicAuth.clientId}:${basicAuth.clientSecret}`);
|
|
84
99
|
headers["Authorization"] = `Basic ${credentials}`;
|
|
85
100
|
}
|
|
86
101
|
const response = await fetch(tokenEndpoint, {
|
|
@@ -112,8 +127,31 @@ export class TokenExchangeClient {
|
|
|
112
127
|
const json = await response.json();
|
|
113
128
|
return deserializeResponse(json);
|
|
114
129
|
}
|
|
130
|
+
async impersonate(req) {
|
|
131
|
+
if (!req.userIdentifier) {
|
|
132
|
+
throw new Error("impersonate: userIdentifier is required");
|
|
133
|
+
}
|
|
134
|
+
if (!req.resource) {
|
|
135
|
+
throw new Error("impersonate: resource is required");
|
|
136
|
+
}
|
|
137
|
+
const subjectToken = buildSubstituteUserToken(req.userIdentifier);
|
|
138
|
+
return this.exchangeToken({
|
|
139
|
+
subjectToken,
|
|
140
|
+
subjectTokenType: TokenType.SUBSTITUTE_USER,
|
|
141
|
+
resource: req.resource,
|
|
142
|
+
scope: req.scope,
|
|
143
|
+
}, { zoneId: req.zoneId });
|
|
144
|
+
}
|
|
115
145
|
}
|
|
116
|
-
_TokenExchangeClient_issuerUrl = new WeakMap(), _TokenExchangeClient_clientId = new WeakMap(), _TokenExchangeClient_clientSecret = new WeakMap(), _TokenExchangeClient_tokenEndpoint = new WeakMap(), _TokenExchangeClient_discoveryPromise = new WeakMap(), _TokenExchangeClient_instances = new WeakSet(),
|
|
146
|
+
_TokenExchangeClient_issuerUrl = new WeakMap(), _TokenExchangeClient_clientId = new WeakMap(), _TokenExchangeClient_clientSecret = new WeakMap(), _TokenExchangeClient_credential = new WeakMap(), _TokenExchangeClient_tokenEndpoint = new WeakMap(), _TokenExchangeClient_discoveryPromise = new WeakMap(), _TokenExchangeClient_instances = new WeakSet(), _TokenExchangeClient_resolveBasicAuth = function _TokenExchangeClient_resolveBasicAuth(zoneId) {
|
|
147
|
+
if (__classPrivateFieldGet(this, _TokenExchangeClient_credential, "f")) {
|
|
148
|
+
return __classPrivateFieldGet(this, _TokenExchangeClient_credential, "f").getAuth(zoneId);
|
|
149
|
+
}
|
|
150
|
+
if (__classPrivateFieldGet(this, _TokenExchangeClient_clientId, "f") && __classPrivateFieldGet(this, _TokenExchangeClient_clientSecret, "f")) {
|
|
151
|
+
return { clientId: __classPrivateFieldGet(this, _TokenExchangeClient_clientId, "f"), clientSecret: __classPrivateFieldGet(this, _TokenExchangeClient_clientSecret, "f") };
|
|
152
|
+
}
|
|
153
|
+
return null;
|
|
154
|
+
}, _TokenExchangeClient_getTokenEndpoint = async function _TokenExchangeClient_getTokenEndpoint() {
|
|
117
155
|
if (__classPrivateFieldGet(this, _TokenExchangeClient_tokenEndpoint, "f")) {
|
|
118
156
|
return __classPrivateFieldGet(this, _TokenExchangeClient_tokenEndpoint, "f");
|
|
119
157
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tokenExchange.js","sourceRoot":"","sources":["../../src/tokenExchange.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,EAAE,gCAAgC,EAAE,MAAM,gBAAgB,CAAC;AAClE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"tokenExchange.js","sourceRoot":"","sources":["../../src/tokenExchange.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@keycardai/oauth",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "0.4.1",
|
|
4
|
+
"description": "[Preview] OAuth 2.0 primitives for Keycard: JWKS keyring, JWT signing/verification, server-tier token verifier, AccessContext, ClientSecret credentials, and impersonation via RFC 8693 token exchange",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
7
7
|
"type": "git",
|
|
@@ -54,6 +54,36 @@
|
|
|
54
54
|
"import": "./dist/esm/credentials.js",
|
|
55
55
|
"require": "./dist/cjs/credentials.js",
|
|
56
56
|
"types": "./dist/esm/credentials.d.ts"
|
|
57
|
+
},
|
|
58
|
+
"./jwt/substituteUser": {
|
|
59
|
+
"import": "./dist/esm/jwt/substituteUser.js",
|
|
60
|
+
"require": "./dist/cjs/jwt/substituteUser.js",
|
|
61
|
+
"types": "./dist/esm/jwt/substituteUser.d.ts"
|
|
62
|
+
},
|
|
63
|
+
"./server": {
|
|
64
|
+
"import": "./dist/esm/server/index.js",
|
|
65
|
+
"require": "./dist/cjs/server/index.js",
|
|
66
|
+
"types": "./dist/esm/server/index.d.ts"
|
|
67
|
+
},
|
|
68
|
+
"./server/accessContext": {
|
|
69
|
+
"import": "./dist/esm/server/accessContext.js",
|
|
70
|
+
"require": "./dist/cjs/server/accessContext.js",
|
|
71
|
+
"types": "./dist/esm/server/accessContext.d.ts"
|
|
72
|
+
},
|
|
73
|
+
"./server/accessToken": {
|
|
74
|
+
"import": "./dist/esm/server/accessToken.js",
|
|
75
|
+
"require": "./dist/cjs/server/accessToken.js",
|
|
76
|
+
"types": "./dist/esm/server/accessToken.d.ts"
|
|
77
|
+
},
|
|
78
|
+
"./server/tokenVerifier": {
|
|
79
|
+
"import": "./dist/esm/server/tokenVerifier.js",
|
|
80
|
+
"require": "./dist/cjs/server/tokenVerifier.js",
|
|
81
|
+
"types": "./dist/esm/server/tokenVerifier.d.ts"
|
|
82
|
+
},
|
|
83
|
+
"./server/clientSecret": {
|
|
84
|
+
"import": "./dist/esm/server/clientSecret.js",
|
|
85
|
+
"require": "./dist/cjs/server/clientSecret.js",
|
|
86
|
+
"types": "./dist/esm/server/clientSecret.d.ts"
|
|
57
87
|
}
|
|
58
88
|
},
|
|
59
89
|
"files": [
|
|
@@ -61,6 +91,12 @@
|
|
|
61
91
|
],
|
|
62
92
|
"typesVersions": {
|
|
63
93
|
"*": {
|
|
94
|
+
"server": [
|
|
95
|
+
"./dist/esm/server/index.d.ts"
|
|
96
|
+
],
|
|
97
|
+
"server/*": [
|
|
98
|
+
"./dist/esm/server/*.d.ts"
|
|
99
|
+
],
|
|
64
100
|
"*": [
|
|
65
101
|
"./dist/esm/*"
|
|
66
102
|
]
|