@sudoplatform/sudo-user 11.1.0 → 12.0.2
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/cjs/client/apiClient.js +149 -0
- package/cjs/client/apiClient.js.map +1 -0
- package/cjs/core/api-key-names.js +12 -0
- package/cjs/core/api-key-names.js.map +1 -0
- package/cjs/core/auth-store.js +92 -0
- package/cjs/core/auth-store.js.map +1 -0
- package/cjs/core/crypto.js +3 -0
- package/cjs/core/crypto.js.map +1 -0
- package/cjs/core/key-manager.js +113 -0
- package/cjs/core/key-manager.js.map +1 -0
- package/cjs/core/protected-store.js +3 -0
- package/cjs/core/protected-store.js.map +1 -0
- package/cjs/core/publisher.js +3 -0
- package/cjs/core/publisher.js.map +1 -0
- package/cjs/core/sdk-config.js +61 -0
- package/cjs/core/sdk-config.js.map +1 -0
- package/cjs/core/subscriber.js +3 -0
- package/cjs/core/subscriber.js.map +1 -0
- package/cjs/gen/graphql-types.js +105 -0
- package/cjs/gen/graphql-types.js.map +1 -0
- package/cjs/index.js +13 -0
- package/cjs/index.js.map +1 -0
- package/cjs/runtimes/browser/browser-crypto.js +10 -0
- package/cjs/runtimes/browser/browser-crypto.js.map +1 -0
- package/cjs/runtimes/node/node-crypto.js +9 -0
- package/cjs/runtimes/node/node-crypto.js.map +1 -0
- package/cjs/sdk.js +9 -0
- package/cjs/sdk.js.map +1 -0
- package/cjs/user/auth-provider.js +116 -0
- package/cjs/user/auth-provider.js.map +1 -0
- package/cjs/user/auth.js +136 -0
- package/cjs/user/auth.js.map +1 -0
- package/cjs/user/error.js +33 -0
- package/cjs/user/error.js.map +1 -0
- package/cjs/user/identity-provider.js +245 -0
- package/cjs/user/identity-provider.js.map +1 -0
- package/cjs/user/user-client-interface.js +3 -0
- package/cjs/user/user-client-interface.js.map +1 -0
- package/cjs/user/user-client.js +440 -0
- package/cjs/user/user-client.js.map +1 -0
- package/cjs/user/user-key-names.js +10 -0
- package/cjs/user/user-key-names.js.map +1 -0
- package/cjs/utils/resolvable-promise.js +20 -0
- package/cjs/utils/resolvable-promise.js.map +1 -0
- package/lib/client/apiClient.js +135 -180
- package/lib/client/apiClient.js.map +1 -0
- package/lib/core/api-key-names.js +8 -14
- package/lib/core/api-key-names.js.map +1 -0
- package/lib/core/auth-store.js +82 -138
- package/lib/core/auth-store.js.map +1 -0
- package/lib/core/crypto.js +2 -5
- package/lib/core/crypto.js.map +1 -0
- package/lib/core/key-manager.js +98 -148
- package/lib/core/key-manager.js.map +1 -0
- package/lib/core/protected-store.js +2 -5
- package/lib/core/protected-store.js.map +1 -0
- package/lib/core/publisher.js +2 -5
- package/lib/core/publisher.js.map +1 -0
- package/lib/core/sdk-config.js +56 -56
- package/lib/core/sdk-config.js.map +1 -0
- package/lib/core/subscriber.js +2 -5
- package/lib/core/subscriber.js.map +1 -0
- package/lib/gen/graphql-types.js +96 -135
- package/lib/gen/graphql-types.js.map +1 -0
- package/lib/index.js +6 -67
- package/lib/index.js.map +1 -0
- package/lib/runtimes/browser/browser-crypto.js +6 -14
- package/lib/runtimes/browser/browser-crypto.js.map +1 -0
- package/lib/runtimes/node/node-crypto.js +5 -11
- package/lib/runtimes/node/node-crypto.js.map +1 -0
- package/lib/sdk.js +6 -18
- package/lib/sdk.js.map +1 -0
- package/lib/user/auth-provider.js +81 -131
- package/lib/user/auth-provider.js.map +1 -0
- package/lib/user/auth.js +127 -179
- package/lib/user/auth.js.map +1 -0
- package/lib/user/error.js +15 -33
- package/lib/user/error.js.map +1 -0
- package/lib/user/identity-provider.js +228 -254
- package/lib/user/identity-provider.js.map +1 -0
- package/lib/user/user-client-interface.js +2 -5
- package/lib/user/user-client-interface.js.map +1 -0
- package/lib/user/user-client.js +423 -510
- package/lib/user/user-client.js.map +1 -0
- package/lib/user/user-key-names.js +6 -12
- package/lib/user/user-key-names.js.map +1 -0
- package/lib/utils/resolvable-promise.js +13 -19
- package/lib/utils/resolvable-promise.js.map +1 -0
- package/package.json +36 -28
- package/{lib → types}/client/apiClient.d.ts +0 -0
- package/{lib → types}/core/api-key-names.d.ts +0 -0
- package/{lib → types}/core/auth-store.d.ts +0 -0
- package/{lib → types}/core/crypto.d.ts +0 -0
- package/{lib → types}/core/key-manager.d.ts +0 -0
- package/types/core/protected-store.d.ts +5 -0
- package/{lib → types}/core/publisher.d.ts +0 -0
- package/{lib → types}/core/sdk-config.d.ts +0 -0
- package/{lib → types}/core/subscriber.d.ts +0 -0
- package/{lib → types}/gen/graphql-types.d.ts +0 -0
- package/{lib → types}/index.d.ts +0 -0
- package/{lib/runtimes/node/node-crypto.d.ts → types/runtimes/browser/browser-crypto.d.ts} +0 -0
- package/types/runtimes/node/node-crypto.d.ts +2 -0
- package/{lib → types}/sdk.d.ts +0 -0
- package/{lib → types}/user/auth-provider.d.ts +0 -0
- package/{lib → types}/user/auth.d.ts +0 -0
- package/{lib → types}/user/error.d.ts +0 -0
- package/{lib → types}/user/identity-provider.d.ts +0 -0
- package/{lib → types}/user/user-client-interface.d.ts +0 -0
- package/{lib → types}/user/user-client.d.ts +0 -0
- package/{lib → types}/user/user-key-names.d.ts +0 -0
- package/{lib → types}/utils/resolvable-promise.d.ts +0 -0
- package/types/redux-offline/index.d.ts +0 -4
|
@@ -1,267 +1,241 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
}
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
var _sudoCommon = require("@sudoplatform/sudo-common");
|
|
15
|
-
|
|
16
|
-
var _error = require("./error");
|
|
17
|
-
|
|
18
|
-
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
19
|
-
|
|
20
|
-
class CognitoUserPoolIdentityProvider {
|
|
21
|
-
constructor(keyManager, config, logger) {
|
|
22
|
-
this.keyManager = keyManager;
|
|
23
|
-
this.config = config;
|
|
24
|
-
|
|
25
|
-
_defineProperty(this, "idpService", void 0);
|
|
26
|
-
|
|
27
|
-
_defineProperty(this, "refreshTokenLifetime", void 0);
|
|
28
|
-
|
|
29
|
-
_defineProperty(this, "logger", void 0);
|
|
30
|
-
|
|
31
|
-
this.idpService = this.initCognitoIdpService();
|
|
32
|
-
const refreshTokenLifetime = this.config.identityService.refreshTokenLifetime;
|
|
33
|
-
this.refreshTokenLifetime = refreshTokenLifetime ?? 60;
|
|
34
|
-
this.logger = logger;
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
initCognitoIdpService() {
|
|
38
|
-
const idpService = new _clientCognitoIdentityProvider.CognitoIdentityProviderClient({
|
|
39
|
-
region: this.config.identityService.region
|
|
40
|
-
});
|
|
41
|
-
return idpService;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
async globalSignOut(accessToken) {
|
|
45
|
-
try {
|
|
46
|
-
const params = {
|
|
47
|
-
AccessToken: accessToken
|
|
48
|
-
};
|
|
49
|
-
const globalSignOut = new _clientCognitoIdentityProvider.GlobalSignOutCommand(params);
|
|
50
|
-
const response = await this.idpService.send(globalSignOut);
|
|
51
|
-
this.logger.info('User successfully signed out.', {
|
|
52
|
-
response
|
|
53
|
-
});
|
|
54
|
-
} catch (err) {
|
|
55
|
-
const error = err;
|
|
56
|
-
throw new _sudoCommon.SignOutError(error.message);
|
|
1
|
+
import { CognitoIdentityProviderClient, GlobalSignOutCommand, InitiateAuthCommand, RespondToAuthChallengeCommand, RevokeTokenCommand, SignUpCommand, } from '@aws-sdk/client-cognito-identity-provider';
|
|
2
|
+
import { apiKeyNames } from '../core/api-key-names';
|
|
3
|
+
import { v4 } from 'uuid';
|
|
4
|
+
import { AuthenticationError, NotAuthorizedError, SignOutError, ServiceError, FatalError, UserNotConfirmedError, } from '@sudoplatform/sudo-common';
|
|
5
|
+
import { AlreadyRegisteredError } from './error';
|
|
6
|
+
export class CognitoUserPoolIdentityProvider {
|
|
7
|
+
constructor(keyManager, config, logger) {
|
|
8
|
+
this.keyManager = keyManager;
|
|
9
|
+
this.config = config;
|
|
10
|
+
this.idpService = this.initCognitoIdpService();
|
|
11
|
+
const refreshTokenLifetime = this.config.identityService.refreshTokenLifetime;
|
|
12
|
+
this.refreshTokenLifetime = refreshTokenLifetime ?? 60;
|
|
13
|
+
this.logger = logger;
|
|
57
14
|
}
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
try {
|
|
62
|
-
const signUp = new _clientCognitoIdentityProvider.SignUpCommand({
|
|
63
|
-
ValidationData: validationData,
|
|
64
|
-
Username: uid,
|
|
65
|
-
Password: `@FF57&Z1)123!-${(0, _uuid.v4)()}`,
|
|
66
|
-
ClientId: this.config.identityService.clientId
|
|
67
|
-
});
|
|
68
|
-
const response = await this.idpService.send(signUp);
|
|
69
|
-
|
|
70
|
-
if (response.UserConfirmed) {
|
|
71
|
-
this.logger.info('User successfully signed up.', {
|
|
72
|
-
uid
|
|
15
|
+
initCognitoIdpService() {
|
|
16
|
+
const idpService = new CognitoIdentityProviderClient({
|
|
17
|
+
region: this.config.identityService.region,
|
|
73
18
|
});
|
|
74
|
-
return
|
|
75
|
-
} else {
|
|
76
|
-
throw new _sudoCommon.UserNotConfirmedError();
|
|
77
|
-
}
|
|
78
|
-
} catch (err) {
|
|
79
|
-
const error = err;
|
|
80
|
-
const errorMsg = error.message;
|
|
81
|
-
|
|
82
|
-
if (errorMsg.includes('sudoplatform.ServiceError')) {
|
|
83
|
-
throw new _sudoCommon.ServiceError(errorMsg);
|
|
84
|
-
} else if (errorMsg.includes('sudoplatform.identity.UserValidationFailed') || errorMsg.includes('sudoplatform.identity.TestRegCheckFailed')) {
|
|
85
|
-
throw new _sudoCommon.NotAuthorizedError(errorMsg);
|
|
86
|
-
} else if (errorMsg.includes('sudoplatform.identity.AlreadyRegistered')) {
|
|
87
|
-
throw new _error.AlreadyRegisteredError();
|
|
88
|
-
} else {
|
|
89
|
-
throw new _sudoCommon.FatalError(errorMsg);
|
|
90
|
-
}
|
|
19
|
+
return idpService;
|
|
91
20
|
}
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
USERNAME: userId
|
|
21
|
+
async globalSignOut(accessToken) {
|
|
22
|
+
try {
|
|
23
|
+
const params = {
|
|
24
|
+
AccessToken: accessToken,
|
|
25
|
+
};
|
|
26
|
+
const globalSignOut = new GlobalSignOutCommand(params);
|
|
27
|
+
const response = await this.idpService.send(globalSignOut);
|
|
28
|
+
this.logger.info('User successfully signed out.', { response });
|
|
101
29
|
}
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
const session = initiateAuthResult.Session;
|
|
106
|
-
const params = initiateAuthResult.ChallengeParameters;
|
|
107
|
-
|
|
108
|
-
if (params && params['nonce'] && params['audience'] && challengeName && session) {
|
|
109
|
-
const nonce = params['nonce'];
|
|
110
|
-
const audience = params['audience'];
|
|
111
|
-
const answer = await this.keyManager.signJWT(keyId, {
|
|
112
|
-
jti: nonce,
|
|
113
|
-
iss: userId,
|
|
114
|
-
aud: audience,
|
|
115
|
-
sub: userId,
|
|
116
|
-
exp: Math.floor(+new Date() / 1000) + 300
|
|
117
|
-
});
|
|
118
|
-
const respondToAuthChallenge = new _clientCognitoIdentityProvider.RespondToAuthChallengeCommand({
|
|
119
|
-
Session: session,
|
|
120
|
-
ClientId: this.config.identityService.clientId,
|
|
121
|
-
ChallengeName: challengeName,
|
|
122
|
-
ChallengeResponses: {
|
|
123
|
-
USERNAME: userId,
|
|
124
|
-
ANSWER: answer
|
|
125
|
-
}
|
|
126
|
-
});
|
|
127
|
-
const respondToAuthChallengeResult = await this.idpService.send(respondToAuthChallenge);
|
|
128
|
-
const authResult = respondToAuthChallengeResult.AuthenticationResult;
|
|
129
|
-
const idToken = authResult?.IdToken;
|
|
130
|
-
const accessToken = authResult?.AccessToken;
|
|
131
|
-
const refreshToken = authResult?.RefreshToken;
|
|
132
|
-
const tokenExpiry = authResult?.ExpiresIn;
|
|
133
|
-
|
|
134
|
-
if (idToken && accessToken && refreshToken && tokenExpiry) {
|
|
135
|
-
const authTokens = {
|
|
136
|
-
idToken: idToken,
|
|
137
|
-
accessToken: accessToken,
|
|
138
|
-
refreshToken: refreshToken,
|
|
139
|
-
tokenExpiry: tokenExpiry
|
|
140
|
-
};
|
|
141
|
-
await this.storeRefreshTokenLifetime(this.refreshTokenLifetime);
|
|
142
|
-
return authTokens;
|
|
143
|
-
} else {
|
|
144
|
-
throw new _sudoCommon.AuthenticationError('Authentication tokens not found.');
|
|
30
|
+
catch (err) {
|
|
31
|
+
const error = err;
|
|
32
|
+
throw new SignOutError(error.message);
|
|
145
33
|
}
|
|
146
|
-
} else {
|
|
147
|
-
throw new _sudoCommon.AuthenticationError('Invalid initiate auth result.');
|
|
148
|
-
}
|
|
149
|
-
} catch (err) {
|
|
150
|
-
const error = err;
|
|
151
|
-
throw new _sudoCommon.AuthenticationError(error.message);
|
|
152
34
|
}
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
35
|
+
async register(uid, validationData) {
|
|
36
|
+
try {
|
|
37
|
+
const signUp = new SignUpCommand({
|
|
38
|
+
ValidationData: validationData,
|
|
39
|
+
Username: uid,
|
|
40
|
+
Password: `@FF57&Z1)123!-${v4()}`,
|
|
41
|
+
ClientId: this.config.identityService.clientId,
|
|
42
|
+
});
|
|
43
|
+
const response = await this.idpService.send(signUp);
|
|
44
|
+
if (response.UserConfirmed) {
|
|
45
|
+
this.logger.info('User successfully signed up.', { uid });
|
|
46
|
+
return uid;
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
throw new UserNotConfirmedError();
|
|
50
|
+
}
|
|
162
51
|
}
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
}
|
|
180
|
-
});
|
|
181
|
-
const respondToAuthChallengeResult = await this.idpService.send(respondToAuthChallenge);
|
|
182
|
-
const authResult = respondToAuthChallengeResult.AuthenticationResult;
|
|
183
|
-
const idToken = authResult?.IdToken;
|
|
184
|
-
const accessToken = authResult?.AccessToken;
|
|
185
|
-
const refreshToken = authResult?.RefreshToken;
|
|
186
|
-
const tokenExpiry = authResult?.ExpiresIn;
|
|
187
|
-
|
|
188
|
-
if (idToken && accessToken && refreshToken && tokenExpiry) {
|
|
189
|
-
const authTokens = {
|
|
190
|
-
idToken: idToken,
|
|
191
|
-
accessToken: accessToken,
|
|
192
|
-
refreshToken: refreshToken,
|
|
193
|
-
tokenExpiry: tokenExpiry
|
|
194
|
-
};
|
|
195
|
-
await this.storeRefreshTokenLifetime(this.refreshTokenLifetime);
|
|
196
|
-
return authTokens;
|
|
197
|
-
} else {
|
|
198
|
-
throw new _sudoCommon.AuthenticationError('Authentication tokens not found.');
|
|
52
|
+
catch (err) {
|
|
53
|
+
const error = err;
|
|
54
|
+
const errorMsg = error.message;
|
|
55
|
+
if (errorMsg.includes('sudoplatform.ServiceError')) {
|
|
56
|
+
throw new ServiceError(errorMsg);
|
|
57
|
+
}
|
|
58
|
+
else if (errorMsg.includes('sudoplatform.identity.UserValidationFailed') ||
|
|
59
|
+
errorMsg.includes('sudoplatform.identity.TestRegCheckFailed')) {
|
|
60
|
+
throw new NotAuthorizedError(errorMsg);
|
|
61
|
+
}
|
|
62
|
+
else if (errorMsg.includes('sudoplatform.identity.AlreadyRegistered')) {
|
|
63
|
+
throw new AlreadyRegisteredError();
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
throw new FatalError(errorMsg);
|
|
67
|
+
}
|
|
199
68
|
}
|
|
200
|
-
} else {
|
|
201
|
-
throw new _sudoCommon.AuthenticationError('Invalid initiate auth result.');
|
|
202
|
-
}
|
|
203
|
-
} catch (err) {
|
|
204
|
-
const error = err;
|
|
205
|
-
throw new _sudoCommon.AuthenticationError(error.message);
|
|
206
69
|
}
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
70
|
+
async signInWithKey(userId, keyId) {
|
|
71
|
+
try {
|
|
72
|
+
const initiateAuthCommand = new InitiateAuthCommand({
|
|
73
|
+
ClientId: this.config.identityService.clientId,
|
|
74
|
+
AuthFlow: 'CUSTOM_AUTH',
|
|
75
|
+
AuthParameters: {
|
|
76
|
+
USERNAME: userId,
|
|
77
|
+
},
|
|
78
|
+
});
|
|
79
|
+
const initiateAuthResult = await this.idpService.send(initiateAuthCommand);
|
|
80
|
+
const challengeName = initiateAuthResult.ChallengeName;
|
|
81
|
+
const session = initiateAuthResult.Session;
|
|
82
|
+
const params = initiateAuthResult.ChallengeParameters;
|
|
83
|
+
if (params &&
|
|
84
|
+
params['nonce'] &&
|
|
85
|
+
params['audience'] &&
|
|
86
|
+
challengeName &&
|
|
87
|
+
session) {
|
|
88
|
+
const nonce = params['nonce'];
|
|
89
|
+
const audience = params['audience'];
|
|
90
|
+
const answer = await this.keyManager.signJWT(keyId, {
|
|
91
|
+
jti: nonce,
|
|
92
|
+
iss: userId,
|
|
93
|
+
aud: audience,
|
|
94
|
+
sub: userId,
|
|
95
|
+
exp: Math.floor(+new Date() / 1000) + 300,
|
|
96
|
+
});
|
|
97
|
+
const respondToAuthChallenge = new RespondToAuthChallengeCommand({
|
|
98
|
+
Session: session,
|
|
99
|
+
ClientId: this.config.identityService.clientId,
|
|
100
|
+
ChallengeName: challengeName,
|
|
101
|
+
ChallengeResponses: {
|
|
102
|
+
USERNAME: userId,
|
|
103
|
+
ANSWER: answer,
|
|
104
|
+
},
|
|
105
|
+
});
|
|
106
|
+
const respondToAuthChallengeResult = await this.idpService.send(respondToAuthChallenge);
|
|
107
|
+
const authResult = respondToAuthChallengeResult.AuthenticationResult;
|
|
108
|
+
const idToken = authResult?.IdToken;
|
|
109
|
+
const accessToken = authResult?.AccessToken;
|
|
110
|
+
const refreshToken = authResult?.RefreshToken;
|
|
111
|
+
const tokenExpiry = authResult?.ExpiresIn;
|
|
112
|
+
if (idToken && accessToken && refreshToken && tokenExpiry) {
|
|
113
|
+
const authTokens = {
|
|
114
|
+
idToken: idToken,
|
|
115
|
+
accessToken: accessToken,
|
|
116
|
+
refreshToken: refreshToken,
|
|
117
|
+
tokenExpiry: tokenExpiry,
|
|
118
|
+
};
|
|
119
|
+
await this.storeRefreshTokenLifetime(this.refreshTokenLifetime);
|
|
120
|
+
return authTokens;
|
|
121
|
+
}
|
|
122
|
+
else {
|
|
123
|
+
throw new AuthenticationError('Authentication tokens not found.');
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
else {
|
|
127
|
+
throw new AuthenticationError('Invalid initiate auth result.');
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
catch (err) {
|
|
131
|
+
const error = err;
|
|
132
|
+
throw new AuthenticationError(error.message);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
async signInWithToken(userId, token, type) {
|
|
136
|
+
try {
|
|
137
|
+
const initiateAuth = new InitiateAuthCommand({
|
|
138
|
+
ClientId: this.config.identityService.clientId,
|
|
139
|
+
AuthFlow: 'CUSTOM_AUTH',
|
|
140
|
+
AuthParameters: {
|
|
141
|
+
USERNAME: userId,
|
|
142
|
+
},
|
|
143
|
+
});
|
|
144
|
+
const initiateAuthResult = await this.idpService.send(initiateAuth);
|
|
145
|
+
const challengeName = initiateAuthResult.ChallengeName;
|
|
146
|
+
const session = initiateAuthResult.Session;
|
|
147
|
+
if (challengeName && session) {
|
|
148
|
+
const respondToAuthChallenge = new RespondToAuthChallengeCommand({
|
|
149
|
+
Session: session,
|
|
150
|
+
ClientId: this.config.identityService.clientId,
|
|
151
|
+
ChallengeName: challengeName,
|
|
152
|
+
ChallengeResponses: {
|
|
153
|
+
USERNAME: userId,
|
|
154
|
+
ANSWER: token,
|
|
155
|
+
},
|
|
156
|
+
ClientMetadata: { challengeType: type },
|
|
157
|
+
});
|
|
158
|
+
const respondToAuthChallengeResult = await this.idpService.send(respondToAuthChallenge);
|
|
159
|
+
const authResult = respondToAuthChallengeResult.AuthenticationResult;
|
|
160
|
+
const idToken = authResult?.IdToken;
|
|
161
|
+
const accessToken = authResult?.AccessToken;
|
|
162
|
+
const refreshToken = authResult?.RefreshToken;
|
|
163
|
+
const tokenExpiry = authResult?.ExpiresIn;
|
|
164
|
+
if (idToken && accessToken && refreshToken && tokenExpiry) {
|
|
165
|
+
const authTokens = {
|
|
166
|
+
idToken: idToken,
|
|
167
|
+
accessToken: accessToken,
|
|
168
|
+
refreshToken: refreshToken,
|
|
169
|
+
tokenExpiry: tokenExpiry,
|
|
170
|
+
};
|
|
171
|
+
await this.storeRefreshTokenLifetime(this.refreshTokenLifetime);
|
|
172
|
+
return authTokens;
|
|
173
|
+
}
|
|
174
|
+
else {
|
|
175
|
+
throw new AuthenticationError('Authentication tokens not found.');
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
else {
|
|
179
|
+
throw new AuthenticationError('Invalid initiate auth result.');
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
catch (err) {
|
|
183
|
+
const error = err;
|
|
184
|
+
throw new AuthenticationError(error.message);
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
async refreshTokens(refreshToken) {
|
|
188
|
+
try {
|
|
189
|
+
const initiateAuth = new InitiateAuthCommand({
|
|
190
|
+
ClientId: this.config.identityService.clientId,
|
|
191
|
+
AuthFlow: 'REFRESH_TOKEN_AUTH',
|
|
192
|
+
AuthParameters: {
|
|
193
|
+
REFRESH_TOKEN: refreshToken,
|
|
194
|
+
},
|
|
195
|
+
});
|
|
196
|
+
const initiateAuthResult = await this.idpService.send(initiateAuth);
|
|
197
|
+
const idToken = initiateAuthResult.AuthenticationResult?.IdToken;
|
|
198
|
+
const accessToken = initiateAuthResult.AuthenticationResult?.AccessToken;
|
|
199
|
+
const tokenExpiry = initiateAuthResult.AuthenticationResult?.ExpiresIn;
|
|
200
|
+
if (idToken && accessToken && tokenExpiry) {
|
|
201
|
+
const authTokens = {
|
|
202
|
+
idToken: idToken,
|
|
203
|
+
accessToken: accessToken,
|
|
204
|
+
refreshToken: refreshToken,
|
|
205
|
+
tokenExpiry: tokenExpiry,
|
|
206
|
+
};
|
|
207
|
+
await this.storeRefreshTokenLifetime(this.refreshTokenLifetime);
|
|
208
|
+
return authTokens;
|
|
209
|
+
}
|
|
210
|
+
else {
|
|
211
|
+
throw new AuthenticationError('Authentication tokens not found.');
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
catch (err) {
|
|
215
|
+
const error = err;
|
|
216
|
+
throw new AuthenticationError(error.message);
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
async signOut(refreshToken) {
|
|
220
|
+
try {
|
|
221
|
+
const params = {
|
|
222
|
+
Token: refreshToken,
|
|
223
|
+
ClientId: this.config.identityService.clientId,
|
|
224
|
+
};
|
|
225
|
+
const revokeToken = new RevokeTokenCommand(params);
|
|
226
|
+
const response = await this.idpService.send(revokeToken);
|
|
227
|
+
this.logger.info('User successfully signed out.', { response });
|
|
228
|
+
}
|
|
229
|
+
catch (err) {
|
|
230
|
+
const error = err;
|
|
231
|
+
this.logger.error(error.message);
|
|
232
|
+
throw new SignOutError(error.message);
|
|
216
233
|
}
|
|
217
|
-
});
|
|
218
|
-
const initiateAuthResult = await this.idpService.send(initiateAuth);
|
|
219
|
-
const idToken = initiateAuthResult.AuthenticationResult?.IdToken;
|
|
220
|
-
const accessToken = initiateAuthResult.AuthenticationResult?.AccessToken;
|
|
221
|
-
const tokenExpiry = initiateAuthResult.AuthenticationResult?.ExpiresIn;
|
|
222
|
-
|
|
223
|
-
if (idToken && accessToken && tokenExpiry) {
|
|
224
|
-
const authTokens = {
|
|
225
|
-
idToken: idToken,
|
|
226
|
-
accessToken: accessToken,
|
|
227
|
-
refreshToken: refreshToken,
|
|
228
|
-
tokenExpiry: tokenExpiry
|
|
229
|
-
};
|
|
230
|
-
await this.storeRefreshTokenLifetime(this.refreshTokenLifetime);
|
|
231
|
-
return authTokens;
|
|
232
|
-
} else {
|
|
233
|
-
throw new _sudoCommon.AuthenticationError('Authentication tokens not found.');
|
|
234
|
-
}
|
|
235
|
-
} catch (err) {
|
|
236
|
-
const error = err;
|
|
237
|
-
throw new _sudoCommon.AuthenticationError(error.message);
|
|
238
234
|
}
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
const params = {
|
|
244
|
-
Token: refreshToken,
|
|
245
|
-
ClientId: this.config.identityService.clientId
|
|
246
|
-
};
|
|
247
|
-
const revokeToken = new _clientCognitoIdentityProvider.RevokeTokenCommand(params);
|
|
248
|
-
const response = await this.idpService.send(revokeToken);
|
|
249
|
-
this.logger.info('User successfully signed out.', {
|
|
250
|
-
response
|
|
251
|
-
});
|
|
252
|
-
} catch (err) {
|
|
253
|
-
const error = err;
|
|
254
|
-
this.logger.error(error.message);
|
|
255
|
-
throw new _sudoCommon.SignOutError(error.message);
|
|
235
|
+
async storeRefreshTokenLifetime(refreshTokenLifetime) {
|
|
236
|
+
const tokenLifetime = refreshTokenLifetime * 24 * 60 * 60 * 1000 + new Date().getTime();
|
|
237
|
+
await this.keyManager.removeItem(apiKeyNames.refreshTokenExpiry);
|
|
238
|
+
await this.keyManager.addString(apiKeyNames.refreshTokenExpiry, tokenLifetime.toString());
|
|
256
239
|
}
|
|
257
|
-
}
|
|
258
|
-
|
|
259
|
-
async storeRefreshTokenLifetime(refreshTokenLifetime) {
|
|
260
|
-
const tokenLifetime = refreshTokenLifetime * 24 * 60 * 60 * 1000 + new Date().getTime();
|
|
261
|
-
await this.keyManager.removeItem(_apiKeyNames.apiKeyNames.refreshTokenExpiry);
|
|
262
|
-
await this.keyManager.addString(_apiKeyNames.apiKeyNames.refreshTokenExpiry, tokenLifetime.toString());
|
|
263
|
-
}
|
|
264
|
-
|
|
265
240
|
}
|
|
266
|
-
|
|
267
|
-
exports.CognitoUserPoolIdentityProvider = CognitoUserPoolIdentityProvider;
|
|
241
|
+
//# sourceMappingURL=identity-provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"identity-provider.js","sourceRoot":"","sources":["../../src/user/identity-provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user-client-interface.js","sourceRoot":"","sources":["../../src/user/user-client-interface.ts"],"names":[],"mappings":""}
|