@idp.global/sdk 5.0.1 → 6.0.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/changelog.md +20 -0
- package/dist_ts/00_commitinfo_data.js +1 -1
- package/dist_ts_browser/classes.idpclient.d.ts +4 -0
- package/dist_ts_browser/classes.idpclient.js +71 -19
- package/dist_ts_browser/classes.idprequests.d.ts +23 -6
- package/dist_ts_browser/classes.idprequests.js +70 -19
- package/dist_ts_server/classes.idp-global-server-client.d.ts +18 -0
- package/dist_ts_server/classes.idp-global-server-client.js +154 -11
- package/package.json +3 -3
- package/readme.md +29 -7
- package/ts/00_commitinfo_data.ts +1 -1
- package/ts_browser/classes.idpclient.ts +73 -20
- package/ts_browser/classes.idprequests.ts +90 -22
- package/ts_server/classes.idp-global-server-client.ts +181 -14
|
@@ -14,30 +14,138 @@ export class IdpGlobalServerClient {
|
|
|
14
14
|
optionsArg;
|
|
15
15
|
typedrouter = new plugins.typedrequest.TypedRouter();
|
|
16
16
|
typedsocket;
|
|
17
|
-
typedsocketDeferred =
|
|
17
|
+
typedsocketDeferred = this.createConnectionDeferred();
|
|
18
|
+
publicKeyPushHandlers = [];
|
|
19
|
+
blocklistPushHandlers = [];
|
|
20
|
+
connectionGeneration = 0;
|
|
21
|
+
pendingSocketPromise;
|
|
22
|
+
connectionAbortController;
|
|
23
|
+
stopWaiters = new Set();
|
|
24
|
+
stopping = false;
|
|
18
25
|
constructor(optionsArg = {}) {
|
|
19
26
|
this.optionsArg = optionsArg;
|
|
27
|
+
this.typedrouter.addTypedHandler(new plugins.typedrequest.TypedHandler('pushPublicKeyForValidation', async (requestArg) => {
|
|
28
|
+
await Promise.all(this.publicKeyPushHandlers.map((handlerArg) => handlerArg(requestArg.publicKeyPem)));
|
|
29
|
+
return {};
|
|
30
|
+
}));
|
|
31
|
+
this.typedrouter.addTypedHandler(new plugins.typedrequest.TypedHandler('pushOrGetJwtIdBlocklist', async (requestArg) => {
|
|
32
|
+
if (requestArg.blockedJwtIds) {
|
|
33
|
+
await Promise.all(this.blocklistPushHandlers.map((handlerArg) => handlerArg(requestArg.blockedJwtIds)));
|
|
34
|
+
}
|
|
35
|
+
return {};
|
|
36
|
+
}));
|
|
20
37
|
}
|
|
21
38
|
async connect() {
|
|
39
|
+
if (this.stopping) {
|
|
40
|
+
throw new Error('IdpGlobalServerClient is stopping');
|
|
41
|
+
}
|
|
22
42
|
if (this.typedsocketDeferred.claimed) {
|
|
23
43
|
return this.typedsocketDeferred.promise;
|
|
24
44
|
}
|
|
25
|
-
this.typedsocketDeferred
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
45
|
+
const deferred = this.typedsocketDeferred;
|
|
46
|
+
const generation = this.connectionGeneration;
|
|
47
|
+
deferred.claim();
|
|
48
|
+
let createdSocket;
|
|
49
|
+
let socketPromise;
|
|
50
|
+
const connectionAbortController = new AbortController();
|
|
51
|
+
try {
|
|
52
|
+
this.connectionAbortController = connectionAbortController;
|
|
53
|
+
socketPromise = plugins.typedsocket.TypedSocket.createClient(this.typedrouter, this.getTypedRequestUrl(), { autoReconnect: true, abortSignal: connectionAbortController.signal });
|
|
54
|
+
this.pendingSocketPromise = socketPromise;
|
|
55
|
+
createdSocket = await this.raceWithStop(socketPromise);
|
|
56
|
+
if (generation !== this.connectionGeneration) {
|
|
57
|
+
await createdSocket.stop();
|
|
58
|
+
if (deferred.status === 'pending') {
|
|
59
|
+
deferred.reject(new Error('IdpGlobalServerClient stopped while connecting'));
|
|
60
|
+
}
|
|
61
|
+
return deferred.promise;
|
|
62
|
+
}
|
|
63
|
+
this.typedsocket = createdSocket;
|
|
64
|
+
deferred.resolve(createdSocket);
|
|
65
|
+
}
|
|
66
|
+
catch (error) {
|
|
67
|
+
if (generation === this.connectionGeneration && (!createdSocket || this.typedsocket === createdSocket)) {
|
|
68
|
+
this.typedsocket = undefined;
|
|
69
|
+
}
|
|
70
|
+
await createdSocket?.stop().catch(() => undefined);
|
|
71
|
+
if (deferred.status === 'pending') {
|
|
72
|
+
deferred.reject(error);
|
|
73
|
+
}
|
|
74
|
+
if (this.typedsocketDeferred === deferred) {
|
|
75
|
+
this.typedsocketDeferred = this.createConnectionDeferred();
|
|
76
|
+
}
|
|
77
|
+
throw error;
|
|
78
|
+
}
|
|
79
|
+
finally {
|
|
80
|
+
if (socketPromise && this.pendingSocketPromise === socketPromise) {
|
|
81
|
+
this.pendingSocketPromise = undefined;
|
|
82
|
+
}
|
|
83
|
+
if (this.connectionAbortController === connectionAbortController) {
|
|
84
|
+
this.connectionAbortController = undefined;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
return deferred.promise;
|
|
29
88
|
}
|
|
30
89
|
async stop() {
|
|
31
|
-
|
|
90
|
+
this.stopping = true;
|
|
91
|
+
this.connectionGeneration++;
|
|
92
|
+
const stopError = new Error('IdpGlobalServerClient stopped');
|
|
93
|
+
this.rejectStopWaiters(stopError);
|
|
94
|
+
const socket = this.typedsocket;
|
|
95
|
+
const pendingSocketPromise = this.pendingSocketPromise;
|
|
96
|
+
this.connectionAbortController?.abort();
|
|
97
|
+
this.connectionAbortController = undefined;
|
|
32
98
|
this.typedsocket = undefined;
|
|
99
|
+
if (this.typedsocketDeferred.status === 'pending' && this.typedsocketDeferred.claimed) {
|
|
100
|
+
this.typedsocketDeferred.reject(stopError);
|
|
101
|
+
}
|
|
102
|
+
await socket?.stop();
|
|
103
|
+
const pendingSocket = await pendingSocketPromise?.catch(() => undefined);
|
|
104
|
+
if (pendingSocket && pendingSocket !== socket) {
|
|
105
|
+
await pendingSocket.stop().catch(() => undefined);
|
|
106
|
+
}
|
|
107
|
+
this.typedsocketDeferred = this.createConnectionDeferred();
|
|
108
|
+
this.pendingSocketPromise = undefined;
|
|
109
|
+
this.stopping = false;
|
|
110
|
+
}
|
|
111
|
+
onPublicKeyPush(handlerArg) {
|
|
112
|
+
this.publicKeyPushHandlers.push(handlerArg);
|
|
113
|
+
return () => {
|
|
114
|
+
this.publicKeyPushHandlers = this.publicKeyPushHandlers.filter((handler) => handler !== handlerArg);
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
onBlocklistPush(handlerArg) {
|
|
118
|
+
this.blocklistPushHandlers.push(handlerArg);
|
|
119
|
+
return () => {
|
|
120
|
+
this.blocklistPushHandlers = this.blocklistPushHandlers.filter((handler) => handler !== handlerArg);
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
async registerBackendService(backendTokenArg = this.optionsArg.backendToken) {
|
|
124
|
+
const backendToken = this.requireBackendToken(backendTokenArg);
|
|
125
|
+
const socket = await this.connect();
|
|
126
|
+
await this.applyBackendServiceTag(socket, backendToken);
|
|
127
|
+
}
|
|
128
|
+
async getPublicKeyForValidation(backendTokenArg = this.optionsArg.backendToken) {
|
|
129
|
+
const backendToken = this.requireBackendToken(backendTokenArg);
|
|
130
|
+
const socket = await this.connect();
|
|
131
|
+
const request = socket.createTypedRequest('getPublicKeyForValidation');
|
|
132
|
+
const response = await this.raceWithStop(request.fire({ backendToken }));
|
|
133
|
+
return response.publicKeyPem;
|
|
134
|
+
}
|
|
135
|
+
async getJwtIdBlocklist(backendTokenArg = this.optionsArg.backendToken) {
|
|
136
|
+
const backendToken = this.requireBackendToken(backendTokenArg);
|
|
137
|
+
const socket = await this.connect();
|
|
138
|
+
const request = socket.createTypedRequest('pushOrGetJwtIdBlocklist');
|
|
139
|
+
const response = await this.raceWithStop(request.fire({ backendToken }));
|
|
140
|
+
return response.blockedJwtIds || [];
|
|
33
141
|
}
|
|
34
142
|
async loginWithEmailAndPassword(optionsArg) {
|
|
35
143
|
const socket = await this.connect();
|
|
36
144
|
const loginRequest = socket.createTypedRequest('loginWithEmailOrUsernameAndPassword');
|
|
37
|
-
const loginResponse = await loginRequest.fire({
|
|
145
|
+
const loginResponse = await this.raceWithStop(loginRequest.fire({
|
|
38
146
|
username: optionsArg.email,
|
|
39
147
|
password: optionsArg.password,
|
|
40
|
-
});
|
|
148
|
+
}));
|
|
41
149
|
if (loginResponse.twoFaNeeded) {
|
|
42
150
|
throw new IdpMfaRequiredError({
|
|
43
151
|
mfaChallengeToken: loginResponse.mfaChallengeToken,
|
|
@@ -48,12 +156,12 @@ export class IdpGlobalServerClient {
|
|
|
48
156
|
throw new Error('IdP login failed');
|
|
49
157
|
}
|
|
50
158
|
const refreshRequest = socket.createTypedRequest('refreshJwt');
|
|
51
|
-
const refreshResponse = await refreshRequest.fire({ refreshToken: loginResponse.refreshToken });
|
|
159
|
+
const refreshResponse = await this.raceWithStop(refreshRequest.fire({ refreshToken: loginResponse.refreshToken }));
|
|
52
160
|
if (!refreshResponse.jwt) {
|
|
53
161
|
throw new Error('IdP did not return a JWT');
|
|
54
162
|
}
|
|
55
163
|
const whoIsRequest = socket.createTypedRequest('whoIs');
|
|
56
|
-
const whoIsResponse = await whoIsRequest.fire({ jwt: refreshResponse.jwt });
|
|
164
|
+
const whoIsResponse = await this.raceWithStop(whoIsRequest.fire({ jwt: refreshResponse.jwt }));
|
|
57
165
|
return {
|
|
58
166
|
user: whoIsResponse.user,
|
|
59
167
|
jwt: refreshResponse.jwt,
|
|
@@ -70,5 +178,40 @@ export class IdpGlobalServerClient {
|
|
|
70
178
|
}
|
|
71
179
|
return baseUrl;
|
|
72
180
|
}
|
|
181
|
+
requireBackendToken(backendTokenArg) {
|
|
182
|
+
if (!backendTokenArg) {
|
|
183
|
+
throw new Error('backendToken is required for backend JWT validation APIs');
|
|
184
|
+
}
|
|
185
|
+
return backendTokenArg;
|
|
186
|
+
}
|
|
187
|
+
async applyBackendServiceTag(socketArg, backendTokenArg) {
|
|
188
|
+
await this.raceWithStop(socketArg.setTag('backend-service', {
|
|
189
|
+
backendToken: backendTokenArg,
|
|
190
|
+
}));
|
|
191
|
+
}
|
|
192
|
+
createConnectionDeferred() {
|
|
193
|
+
const deferred = plugins.smartpromise.defer();
|
|
194
|
+
deferred.promise.catch(() => undefined);
|
|
195
|
+
return deferred;
|
|
196
|
+
}
|
|
197
|
+
raceWithStop(promiseArg) {
|
|
198
|
+
promiseArg.catch(() => undefined);
|
|
199
|
+
if (this.stopping) {
|
|
200
|
+
return Promise.reject(new Error('IdpGlobalServerClient stopped'));
|
|
201
|
+
}
|
|
202
|
+
return new Promise((resolve, reject) => {
|
|
203
|
+
const stopReject = (errorArg) => reject(errorArg);
|
|
204
|
+
this.stopWaiters.add(stopReject);
|
|
205
|
+
promiseArg.then(resolve, reject).finally(() => {
|
|
206
|
+
this.stopWaiters.delete(stopReject);
|
|
207
|
+
});
|
|
208
|
+
});
|
|
209
|
+
}
|
|
210
|
+
rejectStopWaiters(errorArg) {
|
|
211
|
+
for (const stopWaiter of this.stopWaiters) {
|
|
212
|
+
stopWaiter(errorArg);
|
|
213
|
+
}
|
|
214
|
+
this.stopWaiters.clear();
|
|
215
|
+
}
|
|
73
216
|
}
|
|
74
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5pZHAtZ2xvYmFsLXNlcnZlci1jbGllbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90c19zZXJ2ZXIvY2xhc3Nlcy5pZHAtZ2xvYmFsLXNlcnZlci1jbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE9BQU8sTUFBTSxjQUFjLENBQUM7QUFNeEMsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsb0JBQW9CLENBQUM7QUFRNUQsTUFBTSxPQUFPLG1CQUFvQixTQUFRLEtBQUs7SUFDckMsaUJBQWlCLENBQVM7SUFDMUIsbUJBQW1CLENBQTBDO0lBRXBFLFlBQVksVUFBeUc7UUFDbkgsS0FBSyxDQUFDLHVDQUF1QyxDQUFDLENBQUM7UUFDL0MsSUFBSSxDQUFDLElBQUksR0FBRyxxQkFBcUIsQ0FBQztRQUNsQyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsVUFBVSxDQUFDLGlCQUFpQixJQUFJLEVBQUUsQ0FBQztRQUM1RCxJQUFJLENBQUMsbUJBQW1CLEdBQUcsVUFBVSxDQUFDLG1CQUFtQixJQUFJLEVBQUUsQ0FBQztJQUNsRSxDQUFDO0NBQ0Y7QUFFRCxNQUFNLE9BQU8scUJBQXFCO0lBS1o7SUFKWixXQUFXLEdBQVEsSUFBSSxPQUFPLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQzFELFdBQVcsQ0FBbUM7SUFDOUMsbUJBQW1CLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQW1DLENBQUM7SUFFNUYsWUFBb0IsYUFBNEMsRUFBRTtRQUE5QyxlQUFVLEdBQVYsVUFBVSxDQUFvQztJQUFHLENBQUM7SUFFL0QsS0FBSyxDQUFDLE9BQU87UUFDbEIsSUFBSSxJQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDckMsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDO1FBQzFDLENBQUM7UUFDRCxJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FB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
|
|
217
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5pZHAtZ2xvYmFsLXNlcnZlci1jbGllbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90c19zZXJ2ZXIvY2xhc3Nlcy5pZHAtZ2xvYmFsLXNlcnZlci1jbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE9BQU8sTUFBTSxjQUFjLENBQUM7QUFPeEMsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsb0JBQW9CLENBQUM7QUFRNUQsTUFBTSxPQUFPLG1CQUFvQixTQUFRLEtBQUs7SUFDckMsaUJBQWlCLENBQVM7SUFDMUIsbUJBQW1CLENBQTBDO0lBRXBFLFlBQVksVUFBeUc7UUFDbkgsS0FBSyxDQUFDLHVDQUF1QyxDQUFDLENBQUM7UUFDL0MsSUFBSSxDQUFDLElBQUksR0FBRyxxQkFBcUIsQ0FBQztRQUNsQyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsVUFBVSxDQUFDLGlCQUFpQixJQUFJLEVBQUUsQ0FBQztRQUM1RCxJQUFJLENBQUMsbUJBQW1CLEdBQUcsVUFBVSxDQUFDLG1CQUFtQixJQUFJLEVBQUUsQ0FBQztJQUNsRSxDQUFDO0NBQ0Y7QUFFRCxNQUFNLE9BQU8scUJBQXFCO0lBWVo7SUFYWixXQUFXLEdBQVEsSUFBSSxPQUFPLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQzFELFdBQVcsQ0FBbUM7SUFDOUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7SUFDdEQscUJBQXFCLEdBQTZELEVBQUUsQ0FBQztJQUNyRixxQkFBcUIsR0FBZ0UsRUFBRSxDQUFDO0lBQ3hGLG9CQUFvQixHQUFHLENBQUMsQ0FBQztJQUN6QixvQkFBb0IsQ0FBNEM7SUFDaEUseUJBQXlCLENBQW1CO0lBQzVDLFdBQVcsR0FBRyxJQUFJLEdBQUcsRUFBNkIsQ0FBQztJQUNuRCxRQUFRLEdBQUcsS0FBSyxDQUFDO0lBRXpCLFlBQW9CLGFBQTRDLEVBQUU7UUFBOUMsZUFBVSxH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
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@idp.global/sdk",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "6.0.1",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "Reusable browser and server SDK for idp.global authentication.",
|
|
6
6
|
"type": "module",
|
|
@@ -15,8 +15,8 @@
|
|
|
15
15
|
"license": "MIT",
|
|
16
16
|
"dependencies": {
|
|
17
17
|
"@api.global/typedrequest": "^3.3.0",
|
|
18
|
-
"@api.global/typedsocket": "^4.
|
|
19
|
-
"@idp.global/interfaces": "^
|
|
18
|
+
"@api.global/typedsocket": "^4.2.2",
|
|
19
|
+
"@idp.global/interfaces": "^7.0.0",
|
|
20
20
|
"@push.rocks/smartdata": "^7.1.7",
|
|
21
21
|
"@push.rocks/smartjson": "^6.0.1",
|
|
22
22
|
"@push.rocks/smartpromise": "^4.2.4",
|
package/readme.md
CHANGED
|
@@ -137,10 +137,11 @@ await idp.logout();
|
|
|
137
137
|
| --- | --- |
|
|
138
138
|
| Registration and login | `firstRegistration`, `afterRegistrationEmailClicked`, `setData`, `mobileNumberVerification`, `finishRegistration`, `loginWithUserNameAndPassword`, `loginWithEmail`, `loginWithEmailAfterToken`, `loginWithApiToken`, `resetPassword`, `setNewPassword`, `obtainDeviceId`, `attachDeviceId` |
|
|
139
139
|
| Tokens and OIDC | `obtainJwt`, `obtainOneTimeToken`, `prepareOidcAuthorization`, `completeOidcAuthorization` |
|
|
140
|
-
| User profile and sessions | `
|
|
141
|
-
| Organizations and
|
|
142
|
-
| Billing
|
|
143
|
-
|
|
|
140
|
+
| User profile and sessions | `getUserSessions`, `revokeSession`, `getUserActivity` |
|
|
141
|
+
| Organizations, members, and apps | `getOrganizationById`, `updateOrganization`, `deleteOrganization`, `getOrgRoleDefinitions`, `upsertOrgRoleDefinition`, `deleteOrgRoleDefinition`, `createInvitation`, `getOrgInvitations`, `getOrgMembers`, `cancelInvitation`, `resendInvitation`, `removeMember`, `updateMemberRoles`, `transferOwnership`, `getInvitationByToken`, `acceptInvitation`, `bulkCreateInvitations`, `getGlobalApps`, `getAppConnections`, `toggleAppConnection`, `updateAppRoleMappings` |
|
|
142
|
+
| Billing | `getBillingPlan`, `getBillingPlansForOrganizationId`, `getPaddleConfig` |
|
|
143
|
+
| Passport and alerts | `createPassportEnrollmentChallenge`, `completePassportEnrollment`, `getPassportDevices`, `revokePassportDevice`, `createPassportChallenge`, `approvePassportChallenge`, `rejectPassportChallenge`, `registerPassportPushToken`, `listPendingPassportChallenges`, `getPassportChallengeByHint`, `markPassportChallengeSeen`, `getPassportDashboard`, `listPassportAlerts`, `getPassportAlertByHint`, `markPassportAlertSeen`, `dismissPassportAlert`, `upsertAlertRule`, `getAlertRules`, `deleteAlertRule` |
|
|
144
|
+
| Global administration | `suspendUser`, `checkGlobalAdmin`, `getGlobalAppStats`, `createGlobalApp`, `updateGlobalApp`, `deleteGlobalApp`, `regenerateAppCredentials` |
|
|
144
145
|
|
|
145
146
|
## Server SDK
|
|
146
147
|
|
|
@@ -228,7 +229,28 @@ if (!authResult) {
|
|
|
228
229
|
console.log(authResult.account.role, authResult.authSource);
|
|
229
230
|
```
|
|
230
231
|
|
|
231
|
-
In `auto` mode, the service tries local auth first when the account allows `local`; if that fails and the account allows `idp.global`, it uses the configured `IdpGlobalServerClient`. `IdpGlobalServerClient` defaults to the hosted `https://idp.global` endpoint; pass `{ baseUrl }` only for self-hosted or staging IdP instances. idp.global authentication is accepted only when the returned user email matches the local account email and the returned user ID matches the stored `idpSubject` when one is already set.
|
|
232
|
+
In `auto` mode, the service tries local auth first when the account allows `local`; if that fails and the account allows `idp.global`, it uses the configured `IdpGlobalServerClient`. `IdpGlobalServerClient` defaults to the hosted `https://idp.global` endpoint; pass `{ baseUrl }` only for self-hosted or staging IdP instances. Pass `{ backendToken }` when a backend service should fetch JWT validation data or subscribe to key/blocklist pushes. idp.global authentication is accepted only when the returned user email matches the local account email and the returned user ID matches the stored `idpSubject` when one is already set.
|
|
233
|
+
|
|
234
|
+
Backend services can register for JWT validation updates after constructing a server client with a backend token:
|
|
235
|
+
|
|
236
|
+
```ts
|
|
237
|
+
const idpClient = new IdpGlobalServerClient({
|
|
238
|
+
baseUrl: process.env.IDP_URL,
|
|
239
|
+
backendToken: process.env.IDP_BACKEND_TOKEN,
|
|
240
|
+
});
|
|
241
|
+
|
|
242
|
+
idpClient.onPublicKeyPush((publicKeyPem) => {
|
|
243
|
+
// update the local JWT verifier key cache
|
|
244
|
+
});
|
|
245
|
+
|
|
246
|
+
idpClient.onBlocklistPush((blockedJwtIds) => {
|
|
247
|
+
// update the local JWT ID blocklist
|
|
248
|
+
});
|
|
249
|
+
|
|
250
|
+
await idpClient.registerBackendService();
|
|
251
|
+
const publicKeyPem = await idpClient.getPublicKeyForValidation();
|
|
252
|
+
const blockedJwtIds = await idpClient.getJwtIdBlocklist();
|
|
253
|
+
```
|
|
232
254
|
|
|
233
255
|
### Server API Surface
|
|
234
256
|
|
|
@@ -236,7 +258,7 @@ In `auto` mode, the service tries local auth first when the account allows `loca
|
|
|
236
258
|
| --- | --- |
|
|
237
259
|
| `SmartdataAccountStore` | Smartdata-backed account persistence and local password verification. |
|
|
238
260
|
| `AccountAuthService` | Existing-account authentication orchestration for `local`, `idp.global`, and `auto`. |
|
|
239
|
-
| `IdpGlobalServerClient` | Typed-socket client for idp.global password login, JWT refresh,
|
|
261
|
+
| `IdpGlobalServerClient` | Typed-socket client for idp.global password login, JWT refresh, `whoIs` lookup, backend JWT validation fetches, and JWT key/blocklist pushes. |
|
|
240
262
|
| `PasswordHasher` | Static `hashPassword()` and `verifyPassword()` helpers using `scrypt:v1`. |
|
|
241
263
|
| `IdpSdkAccountDoc` | Smartdata document class backing persisted SDK accounts. |
|
|
242
264
|
| `setAccountDocSmartdataDb()` | Configure the active Smartdata DB for `IdpSdkAccountDoc`. Usually handled by `SmartdataAccountStore`. |
|
|
@@ -254,7 +276,7 @@ The server export includes these TypeScript types:
|
|
|
254
276
|
| `ICreateIdpSdkAccountOptions` | Input for account creation. |
|
|
255
277
|
| `IAuthenticateAccountOptions` | Input for `AccountAuthService.authenticate()`. |
|
|
256
278
|
| `IAuthenticatedAccountResult` | Successful auth result with account, auth source, and optional idp.global tokens. |
|
|
257
|
-
| `IIdpGlobalServerClientOptions` | Server client configuration with optional `baseUrl`; defaults to `https://idp.global`. |
|
|
279
|
+
| `IIdpGlobalServerClientOptions` | Server client configuration with optional `baseUrl` and `backendToken`; defaults to `https://idp.global`. |
|
|
258
280
|
| `IIdpPasswordAuthResult` | idp.global user, JWT, and refresh-token result. |
|
|
259
281
|
|
|
260
282
|
## Runtime Notes
|
package/ts/00_commitinfo_data.ts
CHANGED
|
@@ -126,14 +126,15 @@ export class IdpClient {
|
|
|
126
126
|
return null;
|
|
127
127
|
}
|
|
128
128
|
|
|
129
|
-
await this.
|
|
129
|
+
await this.enableTypedSocket();
|
|
130
130
|
const refreshJwtReq = this.typedsocket.createTypedRequest<plugins.idpInterfaces.request.IReq_RefreshJwt>('refreshJwt');
|
|
131
|
-
const response = await refreshJwtReq
|
|
132
|
-
.
|
|
133
|
-
.catch(async () => {
|
|
131
|
+
const response = await refreshJwtReq.fire({ refreshToken }).catch(async (error) => {
|
|
132
|
+
if (this.isAuthInvalidResponse(error)) {
|
|
134
133
|
await this.clearAuthState();
|
|
135
134
|
return null;
|
|
136
|
-
}
|
|
135
|
+
}
|
|
136
|
+
throw error;
|
|
137
|
+
});
|
|
137
138
|
|
|
138
139
|
if (!response?.jwt) {
|
|
139
140
|
await this.clearAuthState();
|
|
@@ -149,13 +150,37 @@ export class IdpClient {
|
|
|
149
150
|
return response.jwt;
|
|
150
151
|
}
|
|
151
152
|
|
|
153
|
+
private isAuthInvalidResponse(errorArg: unknown): boolean {
|
|
154
|
+
if (!errorArg || typeof errorArg !== 'object') {
|
|
155
|
+
return false;
|
|
156
|
+
}
|
|
157
|
+
const errorText = (errorArg as { errorText?: unknown }).errorText;
|
|
158
|
+
return errorText === 'Invalid JWT' || errorText === 'User not found';
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
private async validateJwtWithServer(jwtStringArg: string): Promise<boolean> {
|
|
162
|
+
await this.enableTypedSocket();
|
|
163
|
+
const whoIs = this.typedsocket.createTypedRequest<plugins.idpInterfaces.request.IReq_WhoIs>('whoIs');
|
|
164
|
+
try {
|
|
165
|
+
await whoIs.fire({ jwt: jwtStringArg });
|
|
166
|
+
return true;
|
|
167
|
+
} catch (error) {
|
|
168
|
+
if (this.isAuthInvalidResponse(error)) {
|
|
169
|
+
await this.clearAuthState();
|
|
170
|
+
this.statusObservable.next('loggedOut');
|
|
171
|
+
return false;
|
|
172
|
+
}
|
|
173
|
+
throw error;
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
|
|
152
177
|
public async getTransferToken(appDataArg?: plugins.idpInterfaces.data.IAppLegacy): Promise<string | null> {
|
|
153
178
|
await this.performJwtHousekeeping();
|
|
154
179
|
const refreshToken = await this.getRefreshToken();
|
|
155
180
|
if (!refreshToken) {
|
|
156
181
|
return null;
|
|
157
182
|
}
|
|
158
|
-
await this.
|
|
183
|
+
await this.enableTypedSocket();
|
|
159
184
|
const getTransferToken = this.typedsocket.createTypedRequest<plugins.idpInterfaces.request.IReq_ExchangeRefreshTokenAndTransferToken>('exchangeRefreshTokenAndTransferToken');
|
|
160
185
|
const response = await getTransferToken.fire({
|
|
161
186
|
refreshToken,
|
|
@@ -193,7 +218,7 @@ export class IdpClient {
|
|
|
193
218
|
const transferToken = url.searchParams['transfertoken'];
|
|
194
219
|
if (transferToken) {
|
|
195
220
|
this.scrubTransferTokenFromCurrentUrl();
|
|
196
|
-
await this.
|
|
221
|
+
await this.enableTypedSocket();
|
|
197
222
|
const getTransferToken = this.typedsocket.createTypedRequest<plugins.idpInterfaces.request.IReq_ExchangeRefreshTokenAndTransferToken>('exchangeRefreshTokenAndTransferToken');
|
|
198
223
|
const response = await getTransferToken.fire({
|
|
199
224
|
transferToken,
|
|
@@ -212,14 +237,16 @@ export class IdpClient {
|
|
|
212
237
|
|
|
213
238
|
public async checkJwtPresent() {
|
|
214
239
|
const jwt = await this.performJwtHousekeeping();
|
|
215
|
-
|
|
240
|
+
if (!jwt) {
|
|
241
|
+
return false;
|
|
242
|
+
}
|
|
243
|
+
return this.validateJwtWithServer(jwt);
|
|
216
244
|
}
|
|
217
245
|
|
|
218
246
|
public async determineLoginStatus(requireLoginArg: boolean = false): Promise<boolean> {
|
|
219
247
|
const jwtPresent = await this.checkJwtPresent();
|
|
220
248
|
if (jwtPresent) {
|
|
221
|
-
|
|
222
|
-
return !!jwt;
|
|
249
|
+
return true;
|
|
223
250
|
}
|
|
224
251
|
const refreshToken = await this.getRefreshToken();
|
|
225
252
|
if (refreshToken) {
|
|
@@ -273,27 +300,53 @@ export class IdpClient {
|
|
|
273
300
|
}
|
|
274
301
|
}
|
|
275
302
|
|
|
303
|
+
private typedsocketStopRequested = false;
|
|
304
|
+
private typedsocketAbortController?: AbortController;
|
|
276
305
|
public typedsocketDeferred = plugins.smartpromise.defer<plugins.typedsocket.TypedSocket>();
|
|
277
306
|
|
|
278
307
|
public async enableTypedSocket() {
|
|
279
308
|
if (this.typedsocketDeferred.claimed) {
|
|
280
309
|
return this.typedsocketDeferred.promise;
|
|
281
310
|
}
|
|
311
|
+
this.typedsocketStopRequested = false;
|
|
312
|
+
const abortController = new AbortController();
|
|
313
|
+
this.typedsocketAbortController = abortController;
|
|
282
314
|
this.typedsocketDeferred.claim();
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
315
|
+
try {
|
|
316
|
+
const typedsocket = await plugins.typedsocket.TypedSocket.createClient(
|
|
317
|
+
this.typedrouter,
|
|
318
|
+
this.parsedReceptionUrl.toString(),
|
|
319
|
+
{ abortSignal: abortController.signal },
|
|
320
|
+
);
|
|
321
|
+
if (this.typedsocketStopRequested) {
|
|
322
|
+
await typedsocket.stop();
|
|
323
|
+
throw new Error('TypedSocket start was stopped');
|
|
324
|
+
}
|
|
325
|
+
this.typedsocket = typedsocket;
|
|
326
|
+
this.typedsocketDeferred.resolve(this.typedsocket);
|
|
327
|
+
return this.typedsocket;
|
|
328
|
+
} catch (error) {
|
|
329
|
+
if (this.typedsocketAbortController === abortController) {
|
|
330
|
+
this.typedsocketAbortController = undefined;
|
|
331
|
+
}
|
|
332
|
+
void this.typedsocketDeferred.promise.catch(() => {});
|
|
333
|
+
this.typedsocketDeferred.reject(error);
|
|
334
|
+
this.typedsocketDeferred = plugins.smartpromise.defer<plugins.typedsocket.TypedSocket>();
|
|
335
|
+
throw error;
|
|
336
|
+
}
|
|
289
337
|
}
|
|
290
338
|
|
|
291
339
|
public async stop() {
|
|
340
|
+
this.typedsocketStopRequested = true;
|
|
341
|
+
this.typedsocketAbortController?.abort();
|
|
292
342
|
await this.typedsocket?.stop();
|
|
343
|
+
if (this.typedsocketDeferred.status === 'fulfilled') {
|
|
344
|
+
this.typedsocketDeferred = plugins.smartpromise.defer<plugins.typedsocket.TypedSocket>();
|
|
345
|
+
}
|
|
293
346
|
}
|
|
294
347
|
|
|
295
348
|
public async createOrganization(orgNameArg: string, orgSlugArg: string, modeArg: 'checkAvailability' | 'manifest') {
|
|
296
|
-
await this.
|
|
349
|
+
await this.enableTypedSocket();
|
|
297
350
|
const validateOrg = this.typedsocket.createTypedRequest<plugins.idpInterfaces.request.IReq_CreateOrganization>('createOrganization');
|
|
298
351
|
return validateOrg.fire({
|
|
299
352
|
jwt: await this.getJwt(),
|
|
@@ -305,7 +358,7 @@ export class IdpClient {
|
|
|
305
358
|
}
|
|
306
359
|
|
|
307
360
|
public async getRolesAndOrganizations() {
|
|
308
|
-
await this.
|
|
361
|
+
await this.enableTypedSocket();
|
|
309
362
|
const rolesAndOrganizationsForUserId = this.typedsocket.createTypedRequest<plugins.idpInterfaces.request.IReq_GetRolesAndOrganizationsForUserId>('getRolesAndOrganizationsForUserId');
|
|
310
363
|
return rolesAndOrganizationsForUserId.fire({
|
|
311
364
|
jwt: await this.getJwt(),
|
|
@@ -314,7 +367,7 @@ export class IdpClient {
|
|
|
314
367
|
}
|
|
315
368
|
|
|
316
369
|
public async updatePaddleCheckoutId(orgIdArg: string, checkoutIdArg: string) {
|
|
317
|
-
await this.
|
|
370
|
+
await this.enableTypedSocket();
|
|
318
371
|
const updateBillingPlan = this.typedsocket.createTypedRequest<plugins.idpInterfaces.request.IReq_UpdatePaymentMethod>('updatePaymentMethod');
|
|
319
372
|
return updateBillingPlan.fire({
|
|
320
373
|
jwtString: await this.getJwt(),
|
|
@@ -324,7 +377,7 @@ export class IdpClient {
|
|
|
324
377
|
}
|
|
325
378
|
|
|
326
379
|
public async whoIs() {
|
|
327
|
-
await this.
|
|
380
|
+
await this.enableTypedSocket();
|
|
328
381
|
const whoIs = this.typedsocket.createTypedRequest<plugins.idpInterfaces.request.IReq_WhoIs>('whoIs');
|
|
329
382
|
return whoIs.fire({ jwt: await this.getJwt() });
|
|
330
383
|
}
|
|
@@ -72,14 +72,6 @@ export class IdpRequests {
|
|
|
72
72
|
return this.idpClientArg.typedsocket.createTypedRequest<plugins.idpInterfaces.request.IReq_FirstRegistration>('firstRegistrationRequest');
|
|
73
73
|
}
|
|
74
74
|
|
|
75
|
-
public get getUserData() {
|
|
76
|
-
return this.idpClientArg.typedsocket.createTypedRequest<plugins.idpInterfaces.request.IReq_GetUserData>('getUserData');
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
public get setUserData() {
|
|
80
|
-
return this.idpClientArg.typedsocket.createTypedRequest<plugins.idpInterfaces.request.IReq_SetUserData>('setUserData');
|
|
81
|
-
}
|
|
82
|
-
|
|
83
75
|
public get getUserSessions() {
|
|
84
76
|
return this.idpClientArg.typedsocket.createTypedRequest<plugins.idpInterfaces.request.IReq_GetUserSessions>('getUserSessions');
|
|
85
77
|
}
|
|
@@ -216,32 +208,108 @@ export class IdpRequests {
|
|
|
216
208
|
return this.idpClientArg.typedsocket.createTypedRequest<plugins.idpInterfaces.request.IReq_UpdateAppRoleMappings>('updateAppRoleMappings');
|
|
217
209
|
}
|
|
218
210
|
|
|
219
|
-
public get
|
|
220
|
-
return this.idpClientArg.typedsocket.createTypedRequest<plugins.idpInterfaces.request.
|
|
211
|
+
public get getGlobalApps() {
|
|
212
|
+
return this.idpClientArg.typedsocket.createTypedRequest<plugins.idpInterfaces.request.IReq_GetGlobalApps>('getGlobalApps');
|
|
221
213
|
}
|
|
222
214
|
|
|
223
|
-
public get
|
|
224
|
-
return this.idpClientArg.typedsocket.createTypedRequest<plugins.idpInterfaces.request.
|
|
215
|
+
public get getAppConnections() {
|
|
216
|
+
return this.idpClientArg.typedsocket.createTypedRequest<plugins.idpInterfaces.request.IReq_GetAppConnections>('getAppConnections');
|
|
225
217
|
}
|
|
226
218
|
|
|
227
|
-
public get
|
|
228
|
-
return this.idpClientArg.typedsocket.createTypedRequest<plugins.idpInterfaces.request.
|
|
219
|
+
public get toggleAppConnection() {
|
|
220
|
+
return this.idpClientArg.typedsocket.createTypedRequest<plugins.idpInterfaces.request.IReq_ToggleAppConnection>('toggleAppConnection');
|
|
229
221
|
}
|
|
230
222
|
|
|
231
|
-
public get
|
|
232
|
-
return this.idpClientArg.typedsocket.createTypedRequest<plugins.idpInterfaces.request.
|
|
223
|
+
public get createPassportEnrollmentChallenge() {
|
|
224
|
+
return this.idpClientArg.typedsocket.createTypedRequest<plugins.idpInterfaces.request.IReq_CreatePassportEnrollmentChallenge>('createPassportEnrollmentChallenge');
|
|
233
225
|
}
|
|
234
226
|
|
|
235
|
-
public get
|
|
236
|
-
return this.idpClientArg.typedsocket.createTypedRequest<plugins.idpInterfaces.request.
|
|
227
|
+
public get completePassportEnrollment() {
|
|
228
|
+
return this.idpClientArg.typedsocket.createTypedRequest<plugins.idpInterfaces.request.IReq_CompletePassportEnrollment>('completePassportEnrollment');
|
|
237
229
|
}
|
|
238
230
|
|
|
239
|
-
public get
|
|
240
|
-
return this.idpClientArg.typedsocket.createTypedRequest<plugins.idpInterfaces.request.
|
|
231
|
+
public get getPassportDevices() {
|
|
232
|
+
return this.idpClientArg.typedsocket.createTypedRequest<plugins.idpInterfaces.request.IReq_GetPassportDevices>('getPassportDevices');
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
public get revokePassportDevice() {
|
|
236
|
+
return this.idpClientArg.typedsocket.createTypedRequest<plugins.idpInterfaces.request.IReq_RevokePassportDevice>('revokePassportDevice');
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
public get createPassportChallenge() {
|
|
240
|
+
return this.idpClientArg.typedsocket.createTypedRequest<plugins.idpInterfaces.request.IReq_CreatePassportChallenge>('createPassportChallenge');
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
public get approvePassportChallenge() {
|
|
244
|
+
return this.idpClientArg.typedsocket.createTypedRequest<plugins.idpInterfaces.request.IReq_ApprovePassportChallenge>('approvePassportChallenge');
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
public get rejectPassportChallenge() {
|
|
248
|
+
return this.idpClientArg.typedsocket.createTypedRequest<plugins.idpInterfaces.request.IReq_RejectPassportChallenge>('rejectPassportChallenge');
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
public get registerPassportPushToken() {
|
|
252
|
+
return this.idpClientArg.typedsocket.createTypedRequest<plugins.idpInterfaces.request.IReq_RegisterPassportPushToken>('registerPassportPushToken');
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
public get listPendingPassportChallenges() {
|
|
256
|
+
return this.idpClientArg.typedsocket.createTypedRequest<plugins.idpInterfaces.request.IReq_ListPendingPassportChallenges>('listPendingPassportChallenges');
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
public get getPassportChallengeByHint() {
|
|
260
|
+
return this.idpClientArg.typedsocket.createTypedRequest<plugins.idpInterfaces.request.IReq_GetPassportChallengeByHint>('getPassportChallengeByHint');
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
public get markPassportChallengeSeen() {
|
|
264
|
+
return this.idpClientArg.typedsocket.createTypedRequest<plugins.idpInterfaces.request.IReq_MarkPassportChallengeSeen>('markPassportChallengeSeen');
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
public get getPassportDashboard() {
|
|
268
|
+
return this.idpClientArg.typedsocket.createTypedRequest<plugins.idpInterfaces.request.IReq_GetPassportDashboard>('getPassportDashboard');
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
public get listPassportAlerts() {
|
|
272
|
+
return this.idpClientArg.typedsocket.createTypedRequest<plugins.idpInterfaces.request.IReq_ListPassportAlerts>('listPassportAlerts');
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
public get getPassportAlertByHint() {
|
|
276
|
+
return this.idpClientArg.typedsocket.createTypedRequest<plugins.idpInterfaces.request.IReq_GetPassportAlertByHint>('getPassportAlertByHint');
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
public get markPassportAlertSeen() {
|
|
280
|
+
return this.idpClientArg.typedsocket.createTypedRequest<plugins.idpInterfaces.request.IReq_MarkPassportAlertSeen>('markPassportAlertSeen');
|
|
241
281
|
}
|
|
242
282
|
|
|
243
|
-
public get
|
|
244
|
-
return this.idpClientArg.typedsocket.createTypedRequest<plugins.idpInterfaces.request.
|
|
283
|
+
public get dismissPassportAlert() {
|
|
284
|
+
return this.idpClientArg.typedsocket.createTypedRequest<plugins.idpInterfaces.request.IReq_DismissPassportAlert>('dismissPassportAlert');
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
public get upsertAlertRule() {
|
|
288
|
+
return this.idpClientArg.typedsocket.createTypedRequest<plugins.idpInterfaces.request.IReq_UpsertAlertRule>('upsertAlertRule');
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
public get getAlertRules() {
|
|
292
|
+
return this.idpClientArg.typedsocket.createTypedRequest<plugins.idpInterfaces.request.IReq_GetAlertRules>('getAlertRules');
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
public get deleteAlertRule() {
|
|
296
|
+
return this.idpClientArg.typedsocket.createTypedRequest<plugins.idpInterfaces.request.IReq_DeleteAlertRule>('deleteAlertRule');
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
public get getBillingPlan() {
|
|
300
|
+
return this.idpClientArg.typedsocket.createTypedRequest<plugins.idpInterfaces.request.IReq_GetBillingPlan>('getBillingPlan');
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
public get getBillingPlansForOrganizationId() {
|
|
304
|
+
return this.idpClientArg.typedsocket.createTypedRequest<plugins.idpInterfaces.request.IReq_GetPlansForOrganizationId>('getBillingPlansForOrganizationId');
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
public get getPaddleConfig() {
|
|
308
|
+
return this.idpClientArg.typedsocket.createTypedRequest<plugins.idpInterfaces.request.IReq_GetPaddleConfig>('getPaddleConfig');
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
public get suspendUser() {
|
|
312
|
+
return this.idpClientArg.typedsocket.createTypedRequest<plugins.idpInterfaces.request.IReq_SuspendUser>('suspendUser');
|
|
245
313
|
}
|
|
246
314
|
|
|
247
315
|
public get checkGlobalAdmin() {
|