Domino e node.js: primi passi (parte 2)

Prosegue qui il nostro cammino nel setup ed uso di node.js con Domino 10.

Se vi siete persi la prima parte potete trovarla qui . Vi consiglio di leggerla prima di proseguire in quanto i primi due punti sono necessari per iniziare a crearsi l’ambiente. Questo articolo parte già dal punto tre.

(Questo articolo è il secondo di una serie, aggiorneremo i link man mano che procederemo alla pubblicazione di tutto.).

 

3. Domino.db 1.2.0

Dall’ AppDevPack estraete il file domino-domino-db-1.2.0.tgz e copiatelo in un folder temporaneo del vostro server Windows (in questo esempio sarà c:\installkits).

Questo file è il modulo di node.js che gestisce la comunicazione con Proton e quindi con i database sul nostro server Domino. E’ quindi la parte principale di tutta la configurazione di node.js per poterlo far dialogare con Domino.

Ora aprite il prompt dei comandi di Windows , posizionatevi nella cartella che contiene o conterrà i file del vostro progetto node.js (in questo esempio c:\node) e digitate il comando

npm install /installkits/domino-domino-db-1.2.0.tgz –save

Con questa sintassi lanciate npm , il package manager di node.js, passandogli come parametri il nome del file da installare .

Al termine , se tutto è stato processato con esito positivo , otterrete una risposta di questo tipo:

Nota: questo documento è stato scritto nell’aprile 2019 e quindi fa riferimento alla versione 1.2.0 del package di installazione, tale numero può ovviamente variare col tempo e quindi anche i nomi dei file rifletteranno questo cambiamento.

 

Vi consiglio di installare anche i moduli express ed EJS (EJS è uno dei tanti template engine supportati, la scelta qui può variare se avete già esperienza di node.js)

I comandi per farlo sono:

npm install express
npm install -g express-generator
npm install ejs

Questi moduli non sono strettamente necessari per lavorare con Domino ma creano un framework all’interno di node.js che ho trovato molto utile. Potete trovare pagine di documentazione su questi moduli in rete .

A questo punto il vostro ambiente node.js/Domino è pronto e si può quindi iniziare a scrivere il codice !
Però, prima di proseguire, vediamo come gestire la comunicazione node.js/Domino in modalità autenticata e criptata.

4.Node.js e Domino : setup della connessione con utenza e certificato

Come scritto nel precedente articolo la connessione fra node.js e proton può avvenire in due modi:

  • anonimo
  • client certificato

 

Ovviamente la prima è l’opzione più semplice ma richiede che nell’ACL del db Notes sia dichiarato l’utente Anonymous con almeno il livello reader, cosa che potrebbe esporci a problemi di sicurezza verso l’esterno, specialmente se abbiamo la task http attiva.

D’altra parte se tutto il nostro ambiente e protetto da intrusioni esterne è possibile che la connessione anonima sia sufficente.

I passi seguenti, di conseguenza, non sono strettamente necessari al funzionamento della connessione node.js/Domino e possono essere saltati od implementati in un secondo tempo.

Nell’ AppDevPack , all’interno della cartella Proton, sono presenti due file.cmd che permettono di generare e gestire i certificati necessari all’operazione.
I files sono :

  • make_certs.cmd
  • make_keyring.cmd

Inoltre per poter generare i files necessari si devono scaricare ed installare due pacchetti: OpenSSL e Kyrtool . (trovate i dettagli qui : https://www-10.lotus.com/ldd/dominowiki.nsf/dx/3rd_Party_SHA-2_with_OpenSSL_and_kyrtool?open )

 

Il primo da utilizzare è make_certs.cmd che, basandosi su OpenSSL, genera i file di certificato per l’ambiente (oltre a quello root ne viene generato uno per il server e due per 2 utenti diversi che chiama App1 ed App2 )

Tenete però presente che il make_certs.cmd deve essere corretto per rispecchiare i nomi degli utenti e del server che si vogliono configurare.

Una volta assemblati questi pezzi si possono generare i certificati lanciando il file make_certs.cmd che ha bisogno come parametro di un nome folder in cui andrà a scrivere i file generati.

A questo punto si deve creare un documento persona nel NAB che rispecchi l’utenza che si vuole usare (supponiamo la App1 che era presente nel file cmd make_certs.cmd) ed importarvi il certificato relativo .

 

Ora passiamo alla configurazione del server con la generazione del key file utilizzando Kyrtool tramite il secondo .cmd di test : make_keyring.cmd.

Il .cmd genera due files che si chiamano Sample e che , per comodità, rinominerò in proton . Avremo quindi un proton.kyr ed un proton.sth che devo copiare nella data directory di Domino ( o dove preferisco, devo poi gestire la path nelle variabili del notes.ini che seguono).

Ora si devono modificare i settaggi del Notes.ini per rispecchiare la nuova configurazione con questi valori:

PROTON_SSL=1
PROTON_AUTHENTICATION=client_cert
PROTON_KEYFILE=proton.kyr

 

Quindi andiamo a dire a Proton di usare SSL , di gestire l’autenticazione con il certificato del cliente e di usare il keyfile proton.kyr.
Chiudo la task Proton (tell proton quit ), modifico il notes.ini con questi valori e poi faccio ripartire Proton (load proton).

Il setup di Domino è cosi concluso , ora è node.js che deve gestire la sua parte di autenticazione ma lo vedremo nella parte relativa al codice node.js.

Se volete più dettagli su questa parte potete consultare la documentazione rilasciata da IBM ed HCL qui: https://doc.cwpcollaboration.com/appdevpack/docs/en/proton-admin.html#client-authentication

 

Con questo finisce la seconda parte del nostro viaggio in node.js. A breve la terza puntata.