Création de compte et domaine pré-validé

Création de compte

Une fois l'installation et la configuration complétées, il est possible d'utiliser l'interface en ligne de commande pour créer les comptes utilisateur.

Pour une explication détaillée, référez-vous à la documentation de la commande create-account.

La commande suivante permet de créer un compte nommé Tim, avec un email tim@seald.io.

"%ProgramFiles%\Seald\Seald.exe" --headless create-account --display-name "Tim" --email tim@seald.io --accept-licence --force --accept-backup-keys

À noter : la variable d'environnement %ProgramFiles% peut varier.

De plus, pour simplifier la gestion de licences, il est possible d'utiliser des jetons de validation lors de la création des comptes. Ces jetons sont générés à l'aide d'une clé de validation spécifique accessible via le tableau d'administration. Ce menu n'est disponible que si l'équipe Seald à validé que le domaine correspondant appartient bien exclusivement à votre équipe.

La gestion des clés de sauvegarde s'effectue sur le tableau d'administration, depuis la page "Profile", onglet "Clés de sauvegarde".

À noter : si un jeton de validation est utilisé, et que l'équipe dispose de clés de sauvegarde, l'option --accept-backup-keys permet de les ajouter automatiquement lors de la création de compte.

Génération des jetons de validation

Les jetons de validation peuvent être générés manuellement sur le tableau d'administration. Pour cela, il faut aller sur la page "Utilisateur", onglet "Invitations en cours". Puis, pour l'utilisateur souhaité, si son adresse email correspond à l'un des domaines pré-validés, voir les options et choisir "Générer un jeton de pré-validation".

Il est aussi possible de générer ces jetons de manière programmatique. Les jetons sont générés par le script suivant, téléchargable ici.

const crypto = require('crypto')

const email = process.argv[2]
const domainValidationKeyId = process.argv[3]
const domainValidationKey = process.argv[4]

const random = (size=1000) => crypto.randomBytes(size)

const scrypt = (buff, salt) => new Promise((resolve, reject) => {
    crypto.scrypt(
      buff,
      salt,
      64, // 64 bytes for a 256 bits key (there is also a signing key for HMAC)
      { N: 16384, r: 8, p: 1 },
      (err, key) => {
        if (err) reject(err)
        else resolve(key)
      }
    )
})

const generate = async (email, domainValidationKeyId, domainValidationKey) => {
  const nonce = random(32).toString('hex')
  const token = (await scrypt(
        Buffer.from(`${email}-${domainValidationKey}`, 'utf8'),
        Buffer.from(nonce, 'utf8')
      )).toString('hex')
  console.log(`TOKEN: ${domainValidationKeyId}:${nonce}:${token}`)
}

generate(email, domainValidationKeyId, domainValidationKey)

Ce script s'exécute à l'aide de NodeJS, en fournissant les arguments suivants :

node script.js <email> <domainValidationKeyId> <domainValidationKey>

domainValidationKeyId et domainValidationKey peuvent être trouvés sur le tableau d'administration, sur la page des domaines validés.