@dotrino/vault 0.21.0 → 0.22.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 +12 -1
- package/package.json +1 -1
- package/src/enroll.js +5 -1
package/README.md
CHANGED
|
@@ -50,7 +50,7 @@ si la máquina se compromete, revocas el cert y no había nada que robar.
|
|
|
50
50
|
```bash
|
|
51
51
|
# en el VAULT (tu PC): abres el emparejamiento del servicio y cargas sus secretos
|
|
52
52
|
dotrino-vault pair --service miapp # invitación con scope SOLO vault:secrets:miapp
|
|
53
|
-
dotrino-vault secret set miapp API_KEY sk-…
|
|
53
|
+
dotrino-vault secret set miapp API_KEY sk-… # la comparten TODAS las máquinas del ns
|
|
54
54
|
|
|
55
55
|
# en el PROYECTO/servidor: enrola esta máquina (pega la invitación)
|
|
56
56
|
npx dotrino-env enroll --ns miapp
|
|
@@ -60,6 +60,17 @@ npx dotrino-env enroll --ns miapp
|
|
|
60
60
|
dotrino-vault approve 7K3F-92Q1
|
|
61
61
|
```
|
|
62
62
|
|
|
63
|
+
Si la misma app corre en **varias máquinas**, lo que cambia de una a otra (el puerto,
|
|
64
|
+
la URL pública) va en el cajón **por aparato**, sin partir el `ns`:
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
dotrino-vault devices # el ID del aparato: AB12-CD34
|
|
68
|
+
dotrino-vault secret device set AB12-CD34 PORT 8443 # solo la lee ESA máquina
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
Llegan **mezcladas en el mismo bundle** —y por lo tanto en el mismo `process.env`—:
|
|
72
|
+
las del scope, con las del aparato **encima** si se llaman igual.
|
|
73
|
+
|
|
63
74
|
El código lo **genera el servicio** y **no viaja** por la red: el vault solo puede
|
|
64
75
|
echarlo de vuelta si un humano lo tipeó. Así, un vault falso no puede enrolarte y
|
|
65
76
|
aprobar a ciegas no enrola a nadie. Queda `~/.dotrino/service/<ns>/service-identity.json`
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dotrino/vault",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.22.0",
|
|
4
4
|
"description": "Usa ESTE dispositivo (navegador) como bóveda/CA del ecosistema Dotrino: atiende enrolamientos por el proxy y firma certificados de delegación a tus máquinas. Incluye el cliente de SERVICIO (Node): un proyecto se enrola una vez y jala sus credenciales del vault en vez del .env (`import '@dotrino/vault/config'`).",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "src/index.js",
|
package/src/enroll.js
CHANGED
|
@@ -104,13 +104,16 @@ export async function deviceIdOf (pub) {
|
|
|
104
104
|
* @param {(...a:any[])=>void} [opts.log]
|
|
105
105
|
* @param {(c:{deviceId:string, scope:any, label:string})=>void} [opts.onChallenge] un dispositivo espera aprobación.
|
|
106
106
|
* @param {()=>void} [opts.onPendingChange]
|
|
107
|
+
* @param {(sub:string)=>void} [opts.onDeviceRemoved] se quitó un aparato (fuera del acta y sin papeles):
|
|
108
|
+
* para que quien guarde algo indexado por esa llave lo suelte. Se avisa desde AQUÍ y no desde
|
|
109
|
+
* quien llama porque a `revokeDevice` se entra por dos puertas (el PC y la consola remota).
|
|
107
110
|
* @param {string[]} [opts.defaultScope]
|
|
108
111
|
* @param {number} [opts.defaultTtlMs]
|
|
109
112
|
*/
|
|
110
113
|
export function createEnrollDesk ({
|
|
111
114
|
identity, iss, proxy, send, sendByPubkey,
|
|
112
115
|
audit = () => {}, log = () => {},
|
|
113
|
-
onChallenge = () => {}, onPendingChange = () => {}, onAdopted = () => {},
|
|
116
|
+
onChallenge = () => {}, onPendingChange = () => {}, onAdopted = () => {}, onDeviceRemoved = () => {},
|
|
114
117
|
defaultScope = ['vault:sign'], defaultTtlMs = DEVICE_TTL_MS,
|
|
115
118
|
// Camino A: lo que ESTA bóveda le manda al aparato para que la meta en su acta. `encPub`
|
|
116
119
|
// es su llave de CIFRADO — sin ella entra mandando pero sin poder leer el contenido.
|
|
@@ -461,6 +464,7 @@ export function createEnrollDesk ({
|
|
|
461
464
|
return done
|
|
462
465
|
})() }
|
|
463
466
|
await emitRevoke(sub, mine[0]?.nonce || null)
|
|
467
|
+
fire(onDeviceRemoved, sub)
|
|
464
468
|
return res
|
|
465
469
|
}
|
|
466
470
|
|