@abtnode/auth 1.17.3-beta-20251125-042047-1bcefd39 → 1.17.3-beta-20251127-063055-94957209
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/lib/auth.js +5 -2
- package/lib/passkey.js +14 -5
- package/lib/server.js +4 -2
- package/package.json +20 -20
package/lib/auth.js
CHANGED
|
@@ -15,7 +15,6 @@ const { fromBase58, toAddress } = require('@ocap/util');
|
|
|
15
15
|
const { toTypeInfo, isFromPublicKey } = require('@arcblock/did');
|
|
16
16
|
const { getRandomBytes } = require('@ocap/mcrypto');
|
|
17
17
|
const { getBlockletInfo } = require('@blocklet/meta/lib/info');
|
|
18
|
-
const { getApplicationWallet } = require('@blocklet/meta/lib/wallet');
|
|
19
18
|
const {
|
|
20
19
|
PASSPORT_STATUS,
|
|
21
20
|
VC_TYPE_NODE_PASSPORT,
|
|
@@ -36,6 +35,7 @@ const { LOGIN_PROVIDER } = require('@blocklet/constant');
|
|
|
36
35
|
const dayjs = require('@abtnode/util/lib/dayjs');
|
|
37
36
|
|
|
38
37
|
const { omit } = require('lodash');
|
|
38
|
+
const { getAccessWallet } = require('@abtnode/util/lib/blocklet');
|
|
39
39
|
const logger = require('./logger');
|
|
40
40
|
const verifySignature = require('./util/verify-signature');
|
|
41
41
|
const { getEmailServiceProvider } = require('./email');
|
|
@@ -292,7 +292,10 @@ const getApplicationInfo = async ({ node, nodeInfo = {}, teamDid, baseUrl = '' }
|
|
|
292
292
|
secret = blockletInfo.secret;
|
|
293
293
|
logo = getAppAvatarUrl(baseUrl || blockletInfo.appUrl);
|
|
294
294
|
appUrl = blockletInfo.appUrl;
|
|
295
|
-
accessWallet =
|
|
295
|
+
accessWallet = getAccessWallet({
|
|
296
|
+
serverSecretKey: nodeInfo.sk,
|
|
297
|
+
blockletAppDid: blocklet.appDid || blocklet.meta.did,
|
|
298
|
+
});
|
|
296
299
|
}
|
|
297
300
|
|
|
298
301
|
return {
|
package/lib/passkey.js
CHANGED
|
@@ -19,6 +19,8 @@ const {
|
|
|
19
19
|
const { updateConnectedAccount, getAvatarByEmail, extractUserAvatar } = require('@abtnode/util/lib/user');
|
|
20
20
|
const getOrigin = require('@abtnode/util/lib/get-origin');
|
|
21
21
|
|
|
22
|
+
const { getAccessWallet } = require('@abtnode/util/lib/blocklet');
|
|
23
|
+
const { sign } = require('@blocklet/sdk/lib/util/csrf');
|
|
22
24
|
const { getApplicationInfo, handleInvitationReceive, canSessionBeElevated } = require('./auth');
|
|
23
25
|
const { validateVerifyDestroyRequest } = require('./server');
|
|
24
26
|
const { getLastUsedPassport } = require('./passport');
|
|
@@ -534,7 +536,7 @@ function createPasskeyHandlers(node, mode, createToken) {
|
|
|
534
536
|
};
|
|
535
537
|
|
|
536
538
|
const handleAuthResponse = async (req, res) => {
|
|
537
|
-
const { body, passkeySession } = req;
|
|
539
|
+
const { body, passkeySession, blocklet } = req;
|
|
538
540
|
|
|
539
541
|
// ensure the passkey is registered someway
|
|
540
542
|
const info = await node.getNodeInfo({ useCache: true });
|
|
@@ -671,6 +673,10 @@ function createPasskeyHandlers(node, mode, createToken) {
|
|
|
671
673
|
|
|
672
674
|
// Generate new session token that client can save to localStorage
|
|
673
675
|
logger.info('passkey.auth.generateNewSessionToken', { teamDid, action: passkeySession.data.action });
|
|
676
|
+
const { targetAppPid } = req.query;
|
|
677
|
+
// FIXME: @zhanghan 这里目前只是一个 hack 的方式,passkey 和 federated 结合的流程需要重新梳理优化
|
|
678
|
+
const isFederatedHack = targetAppPid && targetAppPid !== teamDid;
|
|
679
|
+
const findMemberSite = findFederatedSite(blocklet, targetAppPid);
|
|
674
680
|
if (
|
|
675
681
|
[
|
|
676
682
|
PASSKEY_ACTIONS.login,
|
|
@@ -678,11 +684,7 @@ function createPasskeyHandlers(node, mode, createToken) {
|
|
|
678
684
|
PASSKEY_ACTIONS['connect-to-did-domain'],
|
|
679
685
|
].includes(passkeySession.data.action)
|
|
680
686
|
) {
|
|
681
|
-
const { targetAppPid } = req.query;
|
|
682
|
-
// FIXME: @zhanghan 这里目前只是一个 hack 的方式,passkey 和 federated 结合的流程需要重新梳理优化
|
|
683
|
-
const isFederatedHack = targetAppPid && targetAppPid !== teamDid;
|
|
684
687
|
if (mode === 'service' && isFederatedHack) {
|
|
685
|
-
const findMemberSite = findFederatedSite(req.blocklet, targetAppPid);
|
|
686
688
|
if (findMemberSite) {
|
|
687
689
|
const postUser = pick(user, ['did', 'pk', 'fullName', 'locale', 'inviter', 'generation']);
|
|
688
690
|
postUser.lastLoginAt = getRequestIP(req);
|
|
@@ -861,6 +863,13 @@ function createPasskeyHandlers(node, mode, createToken) {
|
|
|
861
863
|
}
|
|
862
864
|
|
|
863
865
|
logger.info('passkey.auth.result', { action: passkeySession.data.action, teamDid, userDid: user.did });
|
|
866
|
+
|
|
867
|
+
const accessWallet = getAccessWallet({
|
|
868
|
+
blockletAppDid: findMemberSite?.appId || blocklet.appDid || blocklet.meta.did,
|
|
869
|
+
serverSecretKey: info.sk,
|
|
870
|
+
});
|
|
871
|
+
result.csrfToken = await sign(accessWallet.secretKey, result.sessionToken);
|
|
872
|
+
|
|
864
873
|
return res.send(result);
|
|
865
874
|
} catch (error) {
|
|
866
875
|
logger.error('passkey.auth.handleAuthResponse.error', { error });
|
package/lib/server.js
CHANGED
|
@@ -197,11 +197,13 @@ const authenticateByVc = async ({
|
|
|
197
197
|
role = getRoleFromLocalPassport(get(vc, 'credentialSubject.passport'));
|
|
198
198
|
} else {
|
|
199
199
|
// map external passport to local role
|
|
200
|
-
const
|
|
200
|
+
const trustedPassports =
|
|
201
|
+
blocklet?.trustedPassports?.length > 0 ? blocklet?.trustedPassports : info.trustedPassports || [];
|
|
202
|
+
const { mappings = [] } = trustedPassports.find((x) => x.issuerDid === issuerId) || {};
|
|
201
203
|
role = await getRoleFromExternalPassport({
|
|
202
204
|
passport: get(vc, 'credentialSubject.passport'),
|
|
203
205
|
node,
|
|
204
|
-
teamDid,
|
|
206
|
+
teamDid: issuerId,
|
|
205
207
|
locale,
|
|
206
208
|
mappings,
|
|
207
209
|
});
|
package/package.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"publishConfig": {
|
|
4
4
|
"access": "public"
|
|
5
5
|
},
|
|
6
|
-
"version": "1.17.3-beta-
|
|
6
|
+
"version": "1.17.3-beta-20251127-063055-94957209",
|
|
7
7
|
"description": "Simple lib to manage auth in ABT Node",
|
|
8
8
|
"main": "lib/index.js",
|
|
9
9
|
"files": [
|
|
@@ -18,25 +18,25 @@
|
|
|
18
18
|
"author": "linchen <linchen1987@foxmail.com> (http://github.com/linchen1987)",
|
|
19
19
|
"license": "Apache-2.0",
|
|
20
20
|
"dependencies": {
|
|
21
|
-
"@abtnode/constant": "1.17.3-beta-
|
|
22
|
-
"@abtnode/logger": "1.17.3-beta-
|
|
23
|
-
"@abtnode/util": "1.17.3-beta-
|
|
24
|
-
"@arcblock/did": "^1.27.
|
|
25
|
-
"@arcblock/did-connect-js": "^1.27.
|
|
26
|
-
"@arcblock/did-ext": "^1.27.
|
|
27
|
-
"@arcblock/did-util": "^1.27.
|
|
28
|
-
"@arcblock/jwt": "^1.27.
|
|
29
|
-
"@arcblock/nft-display": "^3.2.
|
|
30
|
-
"@arcblock/validator": "^1.27.
|
|
31
|
-
"@arcblock/vc": "^1.27.
|
|
32
|
-
"@blocklet/constant": "1.17.3-beta-
|
|
21
|
+
"@abtnode/constant": "1.17.3-beta-20251127-063055-94957209",
|
|
22
|
+
"@abtnode/logger": "1.17.3-beta-20251127-063055-94957209",
|
|
23
|
+
"@abtnode/util": "1.17.3-beta-20251127-063055-94957209",
|
|
24
|
+
"@arcblock/did": "^1.27.12",
|
|
25
|
+
"@arcblock/did-connect-js": "^1.27.12",
|
|
26
|
+
"@arcblock/did-ext": "^1.27.12",
|
|
27
|
+
"@arcblock/did-util": "^1.27.12",
|
|
28
|
+
"@arcblock/jwt": "^1.27.12",
|
|
29
|
+
"@arcblock/nft-display": "^3.2.10",
|
|
30
|
+
"@arcblock/validator": "^1.27.12",
|
|
31
|
+
"@arcblock/vc": "^1.27.12",
|
|
32
|
+
"@blocklet/constant": "1.17.3-beta-20251127-063055-94957209",
|
|
33
33
|
"@blocklet/error": "^0.3.3",
|
|
34
|
-
"@blocklet/meta": "1.17.3-beta-
|
|
35
|
-
"@blocklet/sdk": "1.17.3-beta-
|
|
36
|
-
"@ocap/client": "^1.27.
|
|
37
|
-
"@ocap/mcrypto": "^1.27.
|
|
38
|
-
"@ocap/util": "^1.27.
|
|
39
|
-
"@ocap/wallet": "^1.27.
|
|
34
|
+
"@blocklet/meta": "1.17.3-beta-20251127-063055-94957209",
|
|
35
|
+
"@blocklet/sdk": "1.17.3-beta-20251127-063055-94957209",
|
|
36
|
+
"@ocap/client": "^1.27.12",
|
|
37
|
+
"@ocap/mcrypto": "^1.27.12",
|
|
38
|
+
"@ocap/util": "^1.27.12",
|
|
39
|
+
"@ocap/wallet": "^1.27.12",
|
|
40
40
|
"@simplewebauthn/server": "^13.1.1",
|
|
41
41
|
"axios": "^1.7.9",
|
|
42
42
|
"flat": "^5.0.2",
|
|
@@ -55,5 +55,5 @@
|
|
|
55
55
|
"devDependencies": {
|
|
56
56
|
"axios-mock-adapter": "^2.1.0"
|
|
57
57
|
},
|
|
58
|
-
"gitHead": "
|
|
58
|
+
"gitHead": "80dac020e9642b7e51c6a142c526cdecb75217a9"
|
|
59
59
|
}
|