@hawcx/oauth-client 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +8 -2
- package/dist/client.d.ts +1 -1
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +11 -12
- package/dist/client.js.map +1 -1
- package/dist/delegation/hawcx.d.ts +2 -2
- package/dist/delegation/hawcx.d.ts.map +1 -1
- package/dist/delegation/hawcx.js +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -38,6 +38,7 @@ const claims = await exchangeCodeForClaims({
|
|
|
38
38
|
code: req.body.code,
|
|
39
39
|
oauthTokenUrl: process.env.OAUTH_TOKEN_ENDPOINT!,
|
|
40
40
|
clientId: process.env.OAUTH_CLIENT_ID!,
|
|
41
|
+
apiKey: process.env.HAWCX_API_KEY!,
|
|
41
42
|
publicKey: process.env.OAUTH_PUBLIC_KEY!,
|
|
42
43
|
// Optional (recommended for production):
|
|
43
44
|
codeVerifier: session.pkceVerifier, // PKCE support
|
|
@@ -64,7 +65,7 @@ const client = HawcxDelegationClient.fromKeys({
|
|
|
64
65
|
spEncryptionKey: process.env.SP_X25519_PRIVATE_KEY_PEM!,
|
|
65
66
|
idpVerifyKey: process.env.IDP_ED25519_PUBLIC_KEY_PEM!,
|
|
66
67
|
idpEncryptionKey: process.env.IDP_X25519_PUBLIC_KEY_PEM!,
|
|
67
|
-
baseUrl: 'https://
|
|
68
|
+
baseUrl: 'https://example.hawcx.com',
|
|
68
69
|
spId: process.env.OAUTH_CLIENT_ID!
|
|
69
70
|
});
|
|
70
71
|
|
|
@@ -133,6 +134,7 @@ The SDK accepts public keys in multiple formats:
|
|
|
133
134
|
```typescript
|
|
134
135
|
const claims = await exchangeCodeForClaims({
|
|
135
136
|
// ...
|
|
137
|
+
apiKey: process.env.HAWCX_API_KEY!,
|
|
136
138
|
publicKey: '/path/to/public.pem' // Absolute path
|
|
137
139
|
});
|
|
138
140
|
```
|
|
@@ -141,6 +143,7 @@ const claims = await exchangeCodeForClaims({
|
|
|
141
143
|
```typescript
|
|
142
144
|
const claims = await exchangeCodeForClaims({
|
|
143
145
|
// ...
|
|
146
|
+
apiKey: process.env.HAWCX_API_KEY!,
|
|
144
147
|
publicKey: process.env.OAUTH_PUBLIC_KEY! // PEM string
|
|
145
148
|
});
|
|
146
149
|
```
|
|
@@ -169,6 +172,7 @@ try {
|
|
|
169
172
|
code,
|
|
170
173
|
oauthTokenUrl,
|
|
171
174
|
clientId,
|
|
175
|
+
apiKey,
|
|
172
176
|
publicKey
|
|
173
177
|
});
|
|
174
178
|
} catch (error) {
|
|
@@ -229,7 +233,9 @@ async function exchangeCodeForClaims(
|
|
|
229
233
|
- `code` (string): Authorization code from OAuth flow
|
|
230
234
|
- `oauthTokenUrl` (string): Token endpoint URL
|
|
231
235
|
- `clientId` (string): OAuth client identifier
|
|
232
|
-
- `
|
|
236
|
+
- `apiKey` (string): API key for Hawcx OAuth
|
|
237
|
+
- `publicKey` (string, optional): RS256 public key (PEM string or file path) - optional if jwksUrl provided
|
|
238
|
+
- `jwksUrl` (string, optional): JWKS URL for dynamic key fetching (alternative to publicKey)
|
|
233
239
|
- `codeVerifier` (string, optional): PKCE code verifier (RFC 7636)
|
|
234
240
|
- `redirectUri` (string, optional): OAuth redirect URI
|
|
235
241
|
- `timeout` (number, optional): Request timeout in seconds (default: 20)
|
package/dist/client.d.ts
CHANGED
|
@@ -16,7 +16,7 @@ export interface ExchangeCodeOptions {
|
|
|
16
16
|
/** JWKS URL for dynamic key fetching (alternative to publicKey) */
|
|
17
17
|
jwksUrl?: string;
|
|
18
18
|
/** API key for OAuth provider (required for Hawcx) */
|
|
19
|
-
apiKey
|
|
19
|
+
apiKey: string;
|
|
20
20
|
/** PKCE code verifier (optional, recommended for security) */
|
|
21
21
|
codeVerifier?: string;
|
|
22
22
|
/** OAuth redirect URI (optional, required by some providers) */
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;GAEG;AAWH;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,yCAAyC;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,yBAAyB;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,8BAA8B;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,kFAAkF;IAClF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mEAAmE;IACnE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,sDAAsD;IACtD,MAAM,
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;GAEG;AAWH;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,yCAAyC;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,yBAAyB;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,8BAA8B;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,kFAAkF;IAClF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mEAAmE;IACnE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,sDAAsD;IACtD,MAAM,EAAE,MAAM,CAAC;IACf,8DAA8D;IAC9D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gEAAgE;IAChE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,+CAA+C;IAC/C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,sDAAsD;IACtD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,sDAAsD;IACtD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,8CAA8C;IAC9C,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,mDAAmD;IACnD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gFAAgF;IAChF,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,0BAA0B;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,+FAA+F;IAC/F,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mEAAmE;IACnE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,sDAAsD;IACtD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,sDAAsD;IACtD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,8CAA8C;IAC9C,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,mDAAmD;IACnD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gFAAgF;IAChF,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB;AAgED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAwE9B;AAED;;;;;;;;GAQG;AACH,wBAAsB,6BAA6B,CACjD,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC,CAiDxC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAsB,SAAS,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAkHvF"}
|
package/dist/client.js
CHANGED
|
@@ -49,7 +49,7 @@ const exceptions_1 = require("./exceptions");
|
|
|
49
49
|
/**
|
|
50
50
|
* Internal helper to perform the code-for-token exchange with optional PKCE support
|
|
51
51
|
*/
|
|
52
|
-
async function exchangeForToken(code, oauthTokenUrl, clientId, timeout = 20, codeVerifier, redirectUri
|
|
52
|
+
async function exchangeForToken(code, oauthTokenUrl, clientId, apiKey, timeout = 20, codeVerifier, redirectUri) {
|
|
53
53
|
try {
|
|
54
54
|
// Build token request payload
|
|
55
55
|
const payload = {
|
|
@@ -68,11 +68,8 @@ async function exchangeForToken(code, oauthTokenUrl, clientId, timeout = 20, cod
|
|
|
68
68
|
const headers = {
|
|
69
69
|
'Content-Type': 'application/x-www-form-urlencoded',
|
|
70
70
|
Accept: 'application/json',
|
|
71
|
+
apikey: apiKey,
|
|
71
72
|
};
|
|
72
|
-
// Add API key header if provided (for OAuth providers that require it)
|
|
73
|
-
if (apiKey) {
|
|
74
|
-
headers['apikey'] = apiKey;
|
|
75
|
-
}
|
|
76
73
|
const response = await axios_1.default.post(oauthTokenUrl, payload, {
|
|
77
74
|
timeout: timeout * 1000,
|
|
78
75
|
headers,
|
|
@@ -139,8 +136,14 @@ async function exchangeCodeForClaims(options) {
|
|
|
139
136
|
if (!clientId || typeof clientId !== 'string') {
|
|
140
137
|
throw new exceptions_1.OAuthExchangeError('Client ID must be a non-empty string');
|
|
141
138
|
}
|
|
139
|
+
if (!apiKey || typeof apiKey !== 'string') {
|
|
140
|
+
throw new exceptions_1.OAuthExchangeError('API key must be a non-empty string');
|
|
141
|
+
}
|
|
142
|
+
if (!publicKey && !jwksUrl) {
|
|
143
|
+
throw new exceptions_1.OAuthExchangeError("Must provide either 'publicKey' or 'jwksUrl' for JWT verification");
|
|
144
|
+
}
|
|
142
145
|
// Exchange code for id_token (with PKCE support)
|
|
143
|
-
const responseBody = await exchangeForToken(code, oauthTokenUrl, clientId, timeout, codeVerifier, redirectUri
|
|
146
|
+
const responseBody = await exchangeForToken(code, oauthTokenUrl, clientId, apiKey, timeout, codeVerifier, redirectUri);
|
|
144
147
|
const idToken = responseBody.id_token;
|
|
145
148
|
if (!idToken) {
|
|
146
149
|
throw new exceptions_1.OAuthExchangeError("OAuth server response missing 'id_token' field", undefined, responseBody);
|
|
@@ -169,7 +172,7 @@ async function exchangeCodeForClaims(options) {
|
|
|
169
172
|
*/
|
|
170
173
|
async function exchangeCodeForTokenAndClaims(options) {
|
|
171
174
|
const { code, oauthTokenUrl, clientId, publicKey, jwksUrl, apiKey, codeVerifier, redirectUri, timeout = 20, audience, issuer, verifyExp = true, leeway = 0, algorithms, } = options;
|
|
172
|
-
const responseBody = await exchangeForToken(code, oauthTokenUrl, clientId, timeout, codeVerifier, redirectUri
|
|
175
|
+
const responseBody = await exchangeForToken(code, oauthTokenUrl, clientId, apiKey, timeout, codeVerifier, redirectUri);
|
|
173
176
|
const idToken = responseBody.id_token;
|
|
174
177
|
if (!idToken) {
|
|
175
178
|
throw new exceptions_1.OAuthExchangeError("OAuth server response missing 'id_token' field", undefined, responseBody);
|
|
@@ -225,24 +228,20 @@ async function verifyJwt(options) {
|
|
|
225
228
|
if (!publicKey && !jwksUrl) {
|
|
226
229
|
throw new exceptions_1.JWTVerificationError("Must provide either 'publicKey' or 'jwksUrl'");
|
|
227
230
|
}
|
|
228
|
-
// Load and validate public key
|
|
231
|
+
// Load and validate public key - jwksUrl takes precedence
|
|
229
232
|
let pemKey;
|
|
230
233
|
try {
|
|
231
234
|
if (jwksUrl) {
|
|
232
|
-
// Use JWKS URL for dynamic key fetching
|
|
233
235
|
// First decode JWT header to get kid
|
|
234
236
|
const header = jwt.decode(token, { complete: true })?.header;
|
|
235
237
|
if (!header) {
|
|
236
238
|
throw new exceptions_1.JWTVerificationError('Failed to decode JWT header');
|
|
237
239
|
}
|
|
238
240
|
const kid = header.kid;
|
|
239
|
-
// Fetch JWKS (uses cache)
|
|
240
241
|
const jwks = await (0, utils_1.fetchJwks)(jwksUrl);
|
|
241
|
-
// Extract key from JWKS
|
|
242
242
|
pemKey = (0, utils_1.getKeyFromJwks)(jwks, kid);
|
|
243
243
|
}
|
|
244
244
|
else {
|
|
245
|
-
// Use static public key
|
|
246
245
|
pemKey = (0, utils_1.loadPublicKey)(publicKey);
|
|
247
246
|
}
|
|
248
247
|
}
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -48,7 +48,7 @@ export interface HawcxClientFromKeysOptions {
|
|
|
48
48
|
idpVerifyKey: string;
|
|
49
49
|
/** IDP's X25519 public key (PEM format) */
|
|
50
50
|
idpEncryptionKey: string;
|
|
51
|
-
/** Hawcx API base URL (e.g., "https://
|
|
51
|
+
/** Hawcx API base URL (e.g., "https://example.hawcx.com") */
|
|
52
52
|
baseUrl: string;
|
|
53
53
|
/** Service Provider identifier (usually OAuth client_id) */
|
|
54
54
|
spId: string;
|
|
@@ -104,7 +104,7 @@ export interface VerifyMfaChangeOptions {
|
|
|
104
104
|
* spEncryptionKey: process.env.SP_ENCRYPTION_KEY!,
|
|
105
105
|
* idpVerifyKey: process.env.IDP_VERIFY_KEY!,
|
|
106
106
|
* idpEncryptionKey: process.env.IDP_ENCRYPTION_KEY!,
|
|
107
|
-
* baseUrl: 'https://
|
|
107
|
+
* baseUrl: 'https://example.hawcx.com',
|
|
108
108
|
* spId: 'my-client-id'
|
|
109
109
|
* });
|
|
110
110
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hawcx.d.ts","sourceRoot":"","sources":["../../src/delegation/hawcx.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAuB,MAAM,EAAE,MAAM,UAAU,CAAC;AACvD,OAAO,EAEL,QAAQ,EACR,oBAAoB,EACpB,oBAAoB,EACrB,MAAM,UAAU,CAAC;AAGlB;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,oBAAY,SAAS;IACnB,KAAK,UAAU;IACf,GAAG,QAAQ;IACX,IAAI,SAAS;CACd;AAED;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC,0DAA0D;IAC1D,YAAY,EAAE,MAAM,CAAC;IACrB,yDAAyD;IACzD,eAAe,EAAE,MAAM,CAAC;IACxB,4CAA4C;IAC5C,YAAY,EAAE,MAAM,CAAC;IACrB,2CAA2C;IAC3C,gBAAgB,EAAE,MAAM,CAAC;IACzB,
|
|
1
|
+
{"version":3,"file":"hawcx.d.ts","sourceRoot":"","sources":["../../src/delegation/hawcx.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAuB,MAAM,EAAE,MAAM,UAAU,CAAC;AACvD,OAAO,EAEL,QAAQ,EACR,oBAAoB,EACpB,oBAAoB,EACrB,MAAM,UAAU,CAAC;AAGlB;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,oBAAY,SAAS;IACnB,KAAK,UAAU;IACf,GAAG,QAAQ;IACX,IAAI,SAAS;CACd;AAED;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC,0DAA0D;IAC1D,YAAY,EAAE,MAAM,CAAC;IACrB,yDAAyD;IACzD,eAAe,EAAE,MAAM,CAAC;IACxB,4CAA4C;IAC5C,YAAY,EAAE,MAAM,CAAC;IACrB,2CAA2C;IAC3C,gBAAgB,EAAE,MAAM,CAAC;IACzB,6DAA6D;IAC7D,OAAO,EAAE,MAAM,CAAC;IAChB,4DAA4D;IAC5D,IAAI,EAAE,MAAM,CAAC;IACb,6BAA6B;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,+CAA+C;IAC/C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,4EAA4E;IAC5E,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,+EAA+E;IAC/E,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,gDAAgD;IAChD,MAAM,EAAE,MAAM,CAAC;IACf,gFAAgF;IAChF,SAAS,EAAE,SAAS,GAAG,MAAM,CAAC;IAC9B,8EAA8E;IAC9E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,sDAAsD;IACtD,WAAW,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC;CAClC;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,oDAAoD;IACpD,MAAM,EAAE,MAAM,CAAC;IACf,iDAAiD;IACjD,SAAS,EAAE,MAAM,CAAC;IAClB,mDAAmD;IACnD,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,qBAAa,qBAAqB;IAChC,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,MAAM,CAAC,CAAS;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;gBAER,OAAO,EAAE;QACnB,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,QAAQ,CAAC;QACnB,SAAS,EAAE,oBAAoB,CAAC;QAChC,SAAS,EAAE,oBAAoB,CAAC;QAChC,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB;IAeD;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACH,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,0BAA0B,GAAG,qBAAqB;IAqC3E;;OAEG;IACH,OAAO,CAAC,gBAAgB;IASxB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAmCG;IACG,iBAAiB,CAAC,OAAO,EAAE,wBAAwB,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAyDxF;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACG,eAAe,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAgCpF;;;;;;;;;;;;;;;OAeG;IACG,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAmBvE"}
|
package/dist/delegation/hawcx.js
CHANGED
|
@@ -60,7 +60,7 @@ var MfaMethod;
|
|
|
60
60
|
* spEncryptionKey: process.env.SP_ENCRYPTION_KEY!,
|
|
61
61
|
* idpVerifyKey: process.env.IDP_VERIFY_KEY!,
|
|
62
62
|
* idpEncryptionKey: process.env.IDP_ENCRYPTION_KEY!,
|
|
63
|
-
* baseUrl: 'https://
|
|
63
|
+
* baseUrl: 'https://example.hawcx.com',
|
|
64
64
|
* spId: 'my-client-id'
|
|
65
65
|
* });
|
|
66
66
|
*
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hawcx/oauth-client",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "Lightweight OAuth client for exchanging authorization codes and verifying JWT claims with Hawcx delegation support",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|