Bach Per Chi Non C Era Parte I

6
B.A.C.H. per chi non c’era di Fabrizio Marchesano, Frame srl Prima parte Disclaimer 1: il presente testo è la revisione in formato articolo della sessione relativa a Domino & BlackBerry presentata all'evento Dominopoint; anche se i contenuti sono i medesimi, l'esposizione degli argomenti è naturalmente stata adattata alla pubblicazione per iscritto. Disclaimer 2: questo articolo è rivolto a sviluppatori e amministratori che abbiano già dimestichezza con i dispositivi BlackBerry e l'ambiente di sviluppo Domino; anche se in alcuni casi, a scopo di maggior chiarezza, verranno ribaditi alcuni concetti primari, si dà per scontata una conoscenza di base della terminologia utilizzata e dei software di riferimento. «Sarebbe possibile utilizzare il dispositivo BlackBerry per accedere ai dati della Intranet senza necessità di autenticarsi ad ogni accesso pur mantenendo gli attuali standard di sicurezza?» È stata questa legittima domanda, postami da un cliente, a dare l’avvio al progetto B.A.C.H. – BlackBerry Application Central Highways (per inciso, la versione originale della richiesta era priva della parte relativa alla sicurezza, aggiunta a seguito della mia prima risposta: «Certo, è sufficiente assegnare all’utenza “Default” tutti i diritti di lettura e scrittura»… mai sperare che un ingegnere possa considerare i sottintesi). Domanda legittima, dicevamo: le utenze e relative password aziendali sono spesso (giustamente) complicate, con lettere (maiuscole e minuscole), numeri, ma anche segni grafici come punti esclamativi, asterischi, parentesi quadre, eccetera, che richiedono una combinazione di tasti per essere digitati e se ci si ritrova nella necessità di accedere via BlackBerry a un dato presente nella Intranet è perché si è lontano dall’ufficio e il dato serve subito (che è poi uno dei tanti motivi alla base del successo delle applicazioni mobile) ragion per cui l’inserimento di caratteri complessi viene vissuto come una scomodità necessaria ma eccessiva. Comprensibile, quindi, la richiesta di cui sopra. È sicuramente possibile configurare il BES (BlackBerry Enterprise Server) in modo da attivare lo storage dei dati di autenticazione sui dispositivi, ma bisogna fare conto con il timeout delle informazioni e comunque la configurazione richiesta potrebbe scontrarsi con le security policies aziendali. C’è però una terza strada, che in ambiente Domino è facilmente percorribile: l’autenticazione in backend a seguito di identificazione dell’utente tramite i dati univoci del dispositivo BlackBerry. Procediamo con ordine. Ogni dispositivo fisico BlackBerry è univocamente identificato da codici ad esso associati e memorizzati sul dispositivo stesso, quale ad esempio il PIN, stringa alfanumerica di otto caratteri il cui valore è visualizzabile su BlackBerry nella schermata raggiungibile cliccando sul menù “Impostazioni” e quindi su “Stato” (N.B.: a seconda del modello, la sequenza potrebbe risultare differente).

Transcript of Bach Per Chi Non C Era Parte I

Page 1: Bach Per Chi Non C Era Parte I

B.A.C.H. per chi non c’eradi Fabrizio Marchesano, Frame srl

Prima parte

Disclaimer 1: il presente testo è la revisione in formato articolo della sessione relativa a Domino &BlackBerry presentata all'evento Dominopoint; anche se i contenuti sono i medesimi, l'esposizione degliargomenti è naturalmente stata adattata alla pubblicazione per iscritto.

Disclaimer 2: questo articolo è rivolto a sviluppatori e amministratori che abbiano già dimestichezza coni dispositivi BlackBerry e l'ambiente di sviluppo Domino; anche se in alcuni casi, a scopo di maggiorchiarezza, verranno ribaditi alcuni concetti primari, si dà per scontata una conoscenza di base dellaterminologia utilizzata e dei software di riferimento.

«Sarebbe possibile utilizzare il dispositivo BlackBerry per accedere ai dati dellaIntranet senza necessità di autenticarsi ad ogni accesso pur mantenendo gli attualistandard di sicurezza?»È stata questa legittima domanda, postami da un cliente, a dare l’avvio al progettoB.A.C.H. – BlackBerry Application Central Highways (per inciso, la versioneoriginale della richiesta era priva della parte relativa alla sicurezza, aggiunta a seguitodella mia prima risposta: «Certo, è sufficiente assegnare all’utenza “Default” tutti idiritti di lettura e scrittura»… mai sperare che un ingegnere possa considerare isottintesi).Domanda legittima, dicevamo: le utenze e relative password aziendali sono spesso(giustamente) complicate, con lettere (maiuscole e minuscole), numeri, ma anchesegni grafici come punti esclamativi, asterischi, parentesi quadre, eccetera, cherichiedono una combinazione di tasti per essere digitati e se ci si ritrova nella necessitàdi accedere via BlackBerry a un dato presente nella Intranet è perché si è lontanodall’ufficio e il dato serve subito (che è poi uno dei tanti motivi alla base del successodelle applicazioni mobile) ragion per cui l’inserimento di caratteri complessi vienevissuto come una scomodità necessaria ma eccessiva.Comprensibile, quindi, la richiesta di cui sopra.È sicuramente possibile configurare il BES (BlackBerry Enterprise Server) in modo daattivare lo storage dei dati di autenticazione sui dispositivi, ma bisogna fare conto conil timeout delle informazioni e comunque la configurazione richiesta potrebbescontrarsi con le security policies aziendali.C’è però una terza strada, che in ambiente Domino è facilmente percorribile:l’autenticazione in backend a seguito di identificazione dell’utente tramite i dati univocidel dispositivo BlackBerry.Procediamo con ordine.Ogni dispositivo fisico BlackBerry è univocamente identificato da codici ad essoassociati e memorizzati sul dispositivo stesso, quale ad esempio il PIN, stringaalfanumerica di otto caratteri il cui valore è visualizzabile su BlackBerry nellaschermata raggiungibile cliccando sul menù “Impostazioni” e quindi su “Stato” (N.B.:a seconda del modello, la sequenza potrebbe risultare differente).

Page 2: Bach Per Chi Non C Era Parte I

Come visibile nello screenshot successivo (da software BlackBerry Manager),l'assegnazione da BES di un dispositivo BlackBerry a un utente comporta la seguenteassociazione univoca: utenza, email, PIN.

In Domino, queste informazioni sono contenute nel database BlackBerry UserProfiles (il path di default è: BES\BlackBerryProfiles.nsf; naturalmente l'informazionepuò essere replicata in altri archivi, come ad esempio un database di anagrafica Staff).In altre parole, noto il PIN, è possibile risalire all'identità dell'utente associato tramiteformule di lookup o script analoghi.Vediamo come questo può esserci d'aiuto.Innanzitutto, dobbiamo renderci in grado di ottenere l'informazione necessaria, ossia ilPIN, differenziando le metodologie di acquisizione del dato in dipendenza dal tipo diapplicazione utilizzata (applicazioni web via browser oppure applicazioni MDS Studiovia web services).Analizziamole nel dettaglio.

Recupero del PIN da applicazioni web via browser

Le parole chiave sono HTTP REQUEST HEADER.È infatti possibile aggiungere le informazioni che ci interessano nelle HTTP Headersdelle richieste generate da dispositivi BlackBerry.Per ottenere questo risultato è necessario:

● sul BES, editare (anche con un semplice Blocco Note) il file rimpublic.property(normalmente salvato in un percorso simile a qualcosa tipo C:\Program Files\Research In Motion\BlackBerry Enterprise Server\MDS\Servers\<MDS ServerName>\config)

● individuare la sezione con intestazione [HTTP HANDLER] (se non c'è, createla)

● per includere il PIN, scrivere: application.handler.http.header=pin

● per includere nell'header anche l'indirizzo di posta elettronica associato aldispositivo, aggiungere la riga: application.handler.http.header=email

● solo per MDS Server versione 4.0 e successive : nel caso in cui si desideriinviare entrambe le informazioni, è possibile aggiungere un'unica riga di testospecificando le due variabili, separate da una virgola, scrivendoapplication.handler.http.header=email,pin

Page 3: Bach Per Chi Non C Era Parte I

● naturalmente, non vogliamo che queste informazioni vengano memorizzate inogni nostra richiesta HTTP in giro per la rete, perciò limitiamo l'aggiunta diqueste informazioni a domini della nostra Intranet scrivendo ad esempio:application.handler.http.header.domain=.+\.miodominio\.it (peraggiungere più domini utilizzare il punto e virgola come separatore, così:application.handler.http.header.domain=.+\.dominio1\.com;.+\.dominio2\.com)

Esplicitando la porzione di codice aggiunta, abbiamo:

[HTTP HANDLER]application.handler.http.header=email,pinapplication.handler.http.header.domain=.+\.miodominio\.it

Salvate il file rimpublic.property e riavviate il server BES: le informazioni richiestesaranno ora disponibili nel vostro Header per le richieste HTTP inviate da dispositiviBlackBerry.NOTA: le specifiche qui descritte sono reperibili nella BlackBerry DevelopersKnowledge Base a questo indirizzo

Recupero del PIN da applicazioni MDS Studio via web services

Come visibile nello screenshot successivo, il potente ambiente di sviluppo perapplicazioni MDS via web services chiamato MDS Studio mette a nostra disposizioneuna serie di variabili di sistema che contengono proprio i dati che ci servono:

Configurando il nostro server BES in modo che le Device Policies consentano la letturadi informazioni da un'applicazione all'altra (di seguito i dettagli), ogni applicazione MDSavrà a disposizione una variabile, normalmente mappata come gDeviceInfo.PIN, checonterrà appunto il PIN del dispositivo.La configurazione necessaria è riferita al parametro Allow External Access, che dovràessere valorizzato almeno a “1” (0=nessun accesso; 1=accesso in lettura; 2=accessocompleto):

Page 4: Bach Per Chi Non C Era Parte I

Struttura dei dati in ambiente Domino

Bene, abbiamo quindi opportunamente configurato il server BES in modo daconsentire l'invio delle informazioni richieste da BlackBerry.Per verificare la struttura di questi dati in Domino sarà sufficiente realizzare un NotesAgent che espliciti in una pagina HTML realizzata “al volo” il contenuto dell'HTTPHeader, ad esempio:

Sub InitializeDim Ss As New NotesSessionDim wDoc As NotesDocument

' documento httpSet wDoc=Ss.DocumentContext

Forall x In wDoc.ItemsPrint "<b>"+Ucase(x.Name)+"</b>"+" = "+x.Text+"<br>"

End Forall

End Sub

Attivando la procedura sopra descritta accedendovi via BlackBerry Browser(aprendo un URL così strutturato: http://server/database/NomeAgente?OpenAgent),si otterrà una pagina HTML contenente i dati di riferimento:

Page 5: Bach Per Chi Non C Era Parte I

Via script, dunque, i valori che ci interessano saranno accessibili tramite istruzionicome:

NotesDocument.HTTP_RIM_DEVICE_ID(0)

oppure:

NotesDocument.HTTP_RIM_DEVICE_EMAIL(0)

Via formula, è possibile utilizzare la funzione @GetHTTPHeader (implementata inDomino a partire dalla R6) specificando le variabili target in questo modo:

@GetHTTPHeader("Rim-Device-ID") @GetHTTPHeader("Rim-Device-EMail")

In caso di applicazioni web realizzate in Domino, ottimizzate per l'utilizzo viaBlackBerry e accedute tramite BlackBerry Browser siamo quindi in grado di ottenere leinformazioni relative al PIN e all'indirizzo di posta elettronica associato al dispositivo.Per applicazioni MDS Studio, rivolte all'impiego di web services, sarà sufficienteprevedere un campo, non necessariamente visibile, nella schermata di accessodell'applicazione stessa:

Il valore iniziale del campo sarà impostato a @gDeviceInfo.PIN , mentre l'identificativodel campo stesso diventerà il nostro riferimento per le variabili Domino utilizzate neiweb services:

Page 6: Bach Per Chi Non C Era Parte I

Il nostro web service, ad esempio realizzato in Lotus Script, dovrà quindi avere comepunto di partenza una function che si occupi di assegnare all'apposita variabile ilvalore così ottenuto:

Function getPIN(myPIN as String) As PIN

Abbiamo così ottenuto il valore del PIN identificativo di un dispositivo BlackBerry, daapplicazioni web o MDS Studio; nella seconda parte dell'articolo, vedremo come tuttociò possa essere sfruttato per la realizzazione di un framework centralizzato per losviluppo (e l'utilizzo) rapido di applicazioni BlackBerry in ambiente Domino.