SlideShare una empresa de Scribd logo
1 de 6
Descargar para leer sin conexión
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).
Come visibile nello screenshot successivo (da software BlackBerry Manager),
l'assegnazione da BES di un dispositivo BlackBerry a un utente comporta la seguente
associazione univoca: utenza, email, PIN.




In Domino, queste informazioni sono contenute nel database BlackBerry User
Profiles (il path di default è: BESBlackBerryProfiles.nsf; naturalmente l'informazione
può 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 tramite
formule di lookup o script analoghi.
Vediamo come questo può esserci d'aiuto.
Innanzitutto, dobbiamo renderci in grado di ottenere l'informazione necessaria, ossia il
PIN, differenziando le metodologie di acquisizione del dato in dipendenza dal tipo di
applicazione utilizzata (applicazioni web via browser oppure applicazioni MDS Studio
via 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 Headers
delle 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 MotionBlackBerry Enterprise ServerMDSServers<MDS Server
       Name>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 al
       dispositivo, aggiungere la riga: application.handler.http.header=email

   ●   solo per MDS Server versione 4.0 e successive: nel caso in cui si desideri
       inviare entrambe le informazioni, è possibile aggiungere un'unica riga di testo
       specificando le due variabili, separate da una virgola, scrivendo
       application.handler.http.header=email,pin
●   naturalmente, non vogliamo che queste informazioni vengano memorizzate in
       ogni nostra richiesta HTTP in giro per la rete, perciò limitiamo l'aggiunta di
       queste informazioni a domini della nostra Intranet scrivendo ad esempio:
       application.handler.http.header.domain=.+.miodominio.it                 (per
       aggiungere 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,pin
application.handler.http.header.domain=.+.miodominio.it

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


Recupero del PIN da applicazioni MDS Studio via web services

Come visibile nello screenshot successivo, il potente ambiente di sviluppo per
applicazioni MDS via web services chiamato MDS Studio mette a nostra disposizione
una 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 lettura
di informazioni da un'applicazione all'altra (di seguito i dettagli), ogni applicazione MDS
avrà a disposizione una variabile, normalmente mappata come gDeviceInfo.PIN, che
conterrà 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=accesso
completo):
Struttura dei dati in ambiente Domino

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

Sub Initialize
     Dim Ss As New NotesSession
     Dim wDoc As NotesDocument

      ' documento http
      Set wDoc=Ss.DocumentContext

      Forall x In wDoc.Items
           Print quot;<b>quot;+Ucase(x.Name)+quot;</b>quot;+quot; = quot;+x.Text+quot;<br>quot;
      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:
Via script, dunque, i valori che ci interessano saranno accessibili tramite istruzioni
come:

NotesDocument.HTTP_RIM_DEVICE_ID(0)

oppure:

NotesDocument.HTTP_RIM_DEVICE_EMAIL(0)

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

@GetHTTPHeader(quot;Rim-Device-IDquot;)
@GetHTTPHeader(quot;Rim-Device-EMailquot;)

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




Il valore iniziale del campo sarà impostato a @gDeviceInfo.PIN , mentre l'identificativo
del campo stesso diventerà il nostro riferimento per le variabili Domino utilizzate nei
web services:
Il nostro web service, ad esempio realizzato in Lotus Script, dovrà quindi avere come
punto di partenza una function che si occupi di assegnare all'apposita variabile il
valore così ottenuto:

Function getPIN(myPIN as String) As PIN

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

Más contenido relacionado

Destacado (20)

XPages Mobile, #dd13
XPages Mobile, #dd13XPages Mobile, #dd13
XPages Mobile, #dd13
 
Life in the Fast Lane: Full Speed XPages!, #dd13
Life in the Fast Lane: Full Speed XPages!, #dd13Life in the Fast Lane: Full Speed XPages!, #dd13
Life in the Fast Lane: Full Speed XPages!, #dd13
 
Taurus press coverage
Taurus press coverageTaurus press coverage
Taurus press coverage
 
Comenzar
ComenzarComenzar
Comenzar
 
Session 30 Safwat Said
Session 30 Safwat SaidSession 30 Safwat Said
Session 30 Safwat Said
 
Historia de flash
Historia de flashHistoria de flash
Historia de flash
 
Sindrome de down dayanita
Sindrome de down dayanitaSindrome de down dayanita
Sindrome de down dayanita
 
Cuina
CuinaCuina
Cuina
 
cibernetica
ciberneticacibernetica
cibernetica
 
Poojava
PoojavaPoojava
Poojava
 
Corso Di Basi Di Dati 01 Algebra Relazionale Ottimizzazioni
Corso Di  Basi Di  Dati 01  Algebra Relazionale   OttimizzazioniCorso Di  Basi Di  Dati 01  Algebra Relazionale   Ottimizzazioni
Corso Di Basi Di Dati 01 Algebra Relazionale Ottimizzazioni
 
S Q L
S Q LS Q L
S Q L
 
Benemérita universidad autónoma de puebla
Benemérita universidad autónoma de pueblaBenemérita universidad autónoma de puebla
Benemérita universidad autónoma de puebla
 
Ingle homework viviana
Ingle homework vivianaIngle homework viviana
Ingle homework viviana
 
Ch14 23
Ch14 23Ch14 23
Ch14 23
 
Trabajo de informatica
Trabajo de informaticaTrabajo de informatica
Trabajo de informatica
 
Revolucion de la comunicacion final
Revolucion de la comunicacion final Revolucion de la comunicacion final
Revolucion de la comunicacion final
 
Genaro Palomino Ceftocidin Mastitis en Vacas
Genaro Palomino Ceftocidin Mastitis en VacasGenaro Palomino Ceftocidin Mastitis en Vacas
Genaro Palomino Ceftocidin Mastitis en Vacas
 
Presentacion de geografia
Presentacion de geografiaPresentacion de geografia
Presentacion de geografia
 
como enviar archivos o trabajos
como enviar archivos o trabajos como enviar archivos o trabajos
como enviar archivos o trabajos
 

Similar a Bach Per Chi Non C Era Parte I

Alessandro Forte - ASP.Net 4.0
Alessandro Forte - ASP.Net 4.0Alessandro Forte - ASP.Net 4.0
Alessandro Forte - ASP.Net 4.0Alessandro Forte
 
Con Aruba, a lezione di cloud #lezione 7 - parte 1: 'Tunnel VPN: una connessi...
Con Aruba, a lezione di cloud #lezione 7 - parte 1: 'Tunnel VPN: una connessi...Con Aruba, a lezione di cloud #lezione 7 - parte 1: 'Tunnel VPN: una connessi...
Con Aruba, a lezione di cloud #lezione 7 - parte 1: 'Tunnel VPN: una connessi...Aruba S.p.A.
 
Sviluppo di servizi REST per Android - Luca Masini
Sviluppo di servizi REST per Android - Luca Masini Sviluppo di servizi REST per Android - Luca Masini
Sviluppo di servizi REST per Android - Luca Masini Whymca
 
SVILUPPO DI SERVIZI REST PER ANDROID
SVILUPPO DI SERVIZI REST PER ANDROIDSVILUPPO DI SERVIZI REST PER ANDROID
SVILUPPO DI SERVIZI REST PER ANDROIDLuca Masini
 
Realizzare una intranet aziendale con wordpress
Realizzare una intranet aziendale con wordpressRealizzare una intranet aziendale con wordpress
Realizzare una intranet aziendale con wordpressGGDBologna
 
Creare una Intranet con Wordpress
Creare una Intranet con WordpressCreare una Intranet con Wordpress
Creare una Intranet con WordpressPartecipant
 
Con Aruba, a lezione di cloud #lezione 7 - parte 2: 'Tunnel VPN: una connessi...
Con Aruba, a lezione di cloud #lezione 7 - parte 2: 'Tunnel VPN: una connessi...Con Aruba, a lezione di cloud #lezione 7 - parte 2: 'Tunnel VPN: una connessi...
Con Aruba, a lezione di cloud #lezione 7 - parte 2: 'Tunnel VPN: una connessi...Aruba S.p.A.
 
Con Aruba, a lezione di cloud #lezione 2: 'Come organizzare l'infrastruttura ...
Con Aruba, a lezione di cloud #lezione 2: 'Come organizzare l'infrastruttura ...Con Aruba, a lezione di cloud #lezione 2: 'Come organizzare l'infrastruttura ...
Con Aruba, a lezione di cloud #lezione 2: 'Come organizzare l'infrastruttura ...Aruba S.p.A.
 
SugarCRM REST API: Un’applicazione in appena dieci minuti
SugarCRM REST API: Un’applicazione in appena dieci minutiSugarCRM REST API: Un’applicazione in appena dieci minuti
SugarCRM REST API: Un’applicazione in appena dieci minutiAntonio Musarra
 
Con Aruba, a lezione di cloud #lezione 19 - parte 1: 'Template Cloud Computi...
Con Aruba, a lezione di cloud  #lezione 19 - parte 1: 'Template Cloud Computi...Con Aruba, a lezione di cloud  #lezione 19 - parte 1: 'Template Cloud Computi...
Con Aruba, a lezione di cloud #lezione 19 - parte 1: 'Template Cloud Computi...Aruba S.p.A.
 
Con Aruba, a lezione di cloud #lezione 3 - parte 1: 'Come creare un'infrastru...
Con Aruba, a lezione di cloud #lezione 3 - parte 1: 'Come creare un'infrastru...Con Aruba, a lezione di cloud #lezione 3 - parte 1: 'Come creare un'infrastru...
Con Aruba, a lezione di cloud #lezione 3 - parte 1: 'Come creare un'infrastru...Aruba S.p.A.
 
Windows azure - abbattere tempi e costi di sviluppo
Windows azure - abbattere tempi e costi di sviluppoWindows azure - abbattere tempi e costi di sviluppo
Windows azure - abbattere tempi e costi di sviluppoAndrea Dottor
 
Webkit meets native development
Webkit meets native developmentWebkit meets native development
Webkit meets native developmentNicholas Valbusa
 

Similar a Bach Per Chi Non C Era Parte I (20)

#dd12 Applicazioni a tre voci (Android e Domino)
#dd12 Applicazioni a tre voci (Android e Domino)#dd12 Applicazioni a tre voci (Android e Domino)
#dd12 Applicazioni a tre voci (Android e Domino)
 
Alessandro Forte - ASP.Net 4.0
Alessandro Forte - ASP.Net 4.0Alessandro Forte - ASP.Net 4.0
Alessandro Forte - ASP.Net 4.0
 
Con Aruba, a lezione di cloud #lezione 7 - parte 1: 'Tunnel VPN: una connessi...
Con Aruba, a lezione di cloud #lezione 7 - parte 1: 'Tunnel VPN: una connessi...Con Aruba, a lezione di cloud #lezione 7 - parte 1: 'Tunnel VPN: una connessi...
Con Aruba, a lezione di cloud #lezione 7 - parte 1: 'Tunnel VPN: una connessi...
 
Sviluppo di servizi REST per Android - Luca Masini
Sviluppo di servizi REST per Android - Luca Masini Sviluppo di servizi REST per Android - Luca Masini
Sviluppo di servizi REST per Android - Luca Masini
 
SVILUPPO DI SERVIZI REST PER ANDROID
SVILUPPO DI SERVIZI REST PER ANDROIDSVILUPPO DI SERVIZI REST PER ANDROID
SVILUPPO DI SERVIZI REST PER ANDROID
 
Realizzare una intranet aziendale con wordpress
Realizzare una intranet aziendale con wordpressRealizzare una intranet aziendale con wordpress
Realizzare una intranet aziendale con wordpress
 
Novità di Asp.Net 4.0
Novità di Asp.Net 4.0Novità di Asp.Net 4.0
Novità di Asp.Net 4.0
 
Creare una Intranet con Wordpress
Creare una Intranet con WordpressCreare una Intranet con Wordpress
Creare una Intranet con Wordpress
 
Con Aruba, a lezione di cloud #lezione 7 - parte 2: 'Tunnel VPN: una connessi...
Con Aruba, a lezione di cloud #lezione 7 - parte 2: 'Tunnel VPN: una connessi...Con Aruba, a lezione di cloud #lezione 7 - parte 2: 'Tunnel VPN: una connessi...
Con Aruba, a lezione di cloud #lezione 7 - parte 2: 'Tunnel VPN: una connessi...
 
Con Aruba, a lezione di cloud #lezione 2: 'Come organizzare l'infrastruttura ...
Con Aruba, a lezione di cloud #lezione 2: 'Come organizzare l'infrastruttura ...Con Aruba, a lezione di cloud #lezione 2: 'Come organizzare l'infrastruttura ...
Con Aruba, a lezione di cloud #lezione 2: 'Come organizzare l'infrastruttura ...
 
Owasp parte3
Owasp parte3Owasp parte3
Owasp parte3
 
SugarCRM REST API: Un’applicazione in appena dieci minuti
SugarCRM REST API: Un’applicazione in appena dieci minutiSugarCRM REST API: Un’applicazione in appena dieci minuti
SugarCRM REST API: Un’applicazione in appena dieci minuti
 
Con Aruba, a lezione di cloud #lezione 19 - parte 1: 'Template Cloud Computi...
Con Aruba, a lezione di cloud  #lezione 19 - parte 1: 'Template Cloud Computi...Con Aruba, a lezione di cloud  #lezione 19 - parte 1: 'Template Cloud Computi...
Con Aruba, a lezione di cloud #lezione 19 - parte 1: 'Template Cloud Computi...
 
Visual basic: odbc su MySql
Visual basic: odbc su MySqlVisual basic: odbc su MySql
Visual basic: odbc su MySql
 
Corso dot netnuke
Corso dot netnukeCorso dot netnuke
Corso dot netnuke
 
Corso dot netnuke
Corso dot netnukeCorso dot netnuke
Corso dot netnuke
 
Con Aruba, a lezione di cloud #lezione 3 - parte 1: 'Come creare un'infrastru...
Con Aruba, a lezione di cloud #lezione 3 - parte 1: 'Come creare un'infrastru...Con Aruba, a lezione di cloud #lezione 3 - parte 1: 'Come creare un'infrastru...
Con Aruba, a lezione di cloud #lezione 3 - parte 1: 'Come creare un'infrastru...
 
Windows azure - abbattere tempi e costi di sviluppo
Windows azure - abbattere tempi e costi di sviluppoWindows azure - abbattere tempi e costi di sviluppo
Windows azure - abbattere tempi e costi di sviluppo
 
Webkit meets native development
Webkit meets native developmentWebkit meets native development
Webkit meets native development
 
Lamp Ld2008
Lamp Ld2008Lamp Ld2008
Lamp Ld2008
 

Más de Dominopoint - Italian Lotus User Group

IBM Connections How to use existing data to increase adoption success with IB...
IBM Connections How to use existing data to increase adoption success with IB...IBM Connections How to use existing data to increase adoption success with IB...
IBM Connections How to use existing data to increase adoption success with IB...Dominopoint - Italian Lotus User Group
 

Más de Dominopoint - Italian Lotus User Group (20)

TOTP - Time-Based One Time password in Domino
TOTP - Time-Based One Time password in DominoTOTP - Time-Based One Time password in Domino
TOTP - Time-Based One Time password in Domino
 
Domino Backup V12 - Un nuovo Task
Domino Backup V12 - Un nuovo TaskDomino Backup V12 - Un nuovo Task
Domino Backup V12 - Un nuovo Task
 
Mail Client from Traveler to Verse On-Premises
Mail Client from Traveler to Verse On-PremisesMail Client from Traveler to Verse On-Premises
Mail Client from Traveler to Verse On-Premises
 
IBM Worspace: Towards a culture of conversations
IBM Worspace: Towards a culture of conversationsIBM Worspace: Towards a culture of conversations
IBM Worspace: Towards a culture of conversations
 
Microsoft Outlook for Domino (IMSMO)
Microsoft Outlook for Domino (IMSMO)Microsoft Outlook for Domino (IMSMO)
Microsoft Outlook for Domino (IMSMO)
 
Riding the Enterprise Integration train
Riding the Enterprise Integration trainRiding the Enterprise Integration train
Riding the Enterprise Integration train
 
Ortocloud l'applicazione per fare orto su Bluemix
Ortocloud l'applicazione per fare orto su BluemixOrtocloud l'applicazione per fare orto su Bluemix
Ortocloud l'applicazione per fare orto su Bluemix
 
Meetit16 KeyNote di Apertura
Meetit16 KeyNote di AperturaMeetit16 KeyNote di Apertura
Meetit16 KeyNote di Apertura
 
IBM Domino Modernizing apps with Angularjs
IBM Domino Modernizing apps with AngularjsIBM Domino Modernizing apps with Angularjs
IBM Domino Modernizing apps with Angularjs
 
IBM Connections How to use existing data to increase adoption success with IB...
IBM Connections How to use existing data to increase adoption success with IB...IBM Connections How to use existing data to increase adoption success with IB...
IBM Connections How to use existing data to increase adoption success with IB...
 
Cloudant e XPages
Cloudant e XPagesCloudant e XPages
Cloudant e XPages
 
IBM Bluemix
IBM BluemixIBM Bluemix
IBM Bluemix
 
IBM Connections 10 things every user should know
IBM Connections 10 things every user should knowIBM Connections 10 things every user should know
IBM Connections 10 things every user should know
 
IBM Verse New Way To Work
IBM Verse New Way To WorkIBM Verse New Way To Work
IBM Verse New Way To Work
 
Crossware MailSignature
Crossware MailSignatureCrossware MailSignature
Crossware MailSignature
 
Cooperteam soluzioni
Cooperteam soluzioniCooperteam soluzioni
Cooperteam soluzioni
 
Notes and Domino Roadmap
Notes and Domino RoadmapNotes and Domino Roadmap
Notes and Domino Roadmap
 
La Collaborazione Europea
La Collaborazione EuropeaLa Collaborazione Europea
La Collaborazione Europea
 
the future of work
the future of workthe future of work
the future of work
 
Dominopoint meet the experts 2015 - XPages
Dominopoint   meet the experts 2015 - XPagesDominopoint   meet the experts 2015 - XPages
Dominopoint meet the experts 2015 - XPages
 

Bach Per Chi Non C Era Parte I

  • 1. 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).
  • 2. Come visibile nello screenshot successivo (da software BlackBerry Manager), l'assegnazione da BES di un dispositivo BlackBerry a un utente comporta la seguente associazione univoca: utenza, email, PIN. In Domino, queste informazioni sono contenute nel database BlackBerry User Profiles (il path di default è: BESBlackBerryProfiles.nsf; naturalmente l'informazione può 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 tramite formule di lookup o script analoghi. Vediamo come questo può esserci d'aiuto. Innanzitutto, dobbiamo renderci in grado di ottenere l'informazione necessaria, ossia il PIN, differenziando le metodologie di acquisizione del dato in dipendenza dal tipo di applicazione utilizzata (applicazioni web via browser oppure applicazioni MDS Studio via 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 Headers delle 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 MotionBlackBerry Enterprise ServerMDSServers<MDS Server Name>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 al dispositivo, aggiungere la riga: application.handler.http.header=email ● solo per MDS Server versione 4.0 e successive: nel caso in cui si desideri inviare entrambe le informazioni, è possibile aggiungere un'unica riga di testo specificando le due variabili, separate da una virgola, scrivendo application.handler.http.header=email,pin
  • 3. naturalmente, non vogliamo che queste informazioni vengano memorizzate in ogni nostra richiesta HTTP in giro per la rete, perciò limitiamo l'aggiunta di queste informazioni a domini della nostra Intranet scrivendo ad esempio: application.handler.http.header.domain=.+.miodominio.it (per aggiungere 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,pin application.handler.http.header.domain=.+.miodominio.it Salvate il file rimpublic.property e riavviate il server BES: le informazioni richieste saranno ora disponibili nel vostro Header per le richieste HTTP inviate da dispositivi BlackBerry. NOTA: le specifiche qui descritte sono reperibili nella BlackBerry Developers Knowledge Base a questo indirizzo Recupero del PIN da applicazioni MDS Studio via web services Come visibile nello screenshot successivo, il potente ambiente di sviluppo per applicazioni MDS via web services chiamato MDS Studio mette a nostra disposizione una 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 lettura di informazioni da un'applicazione all'altra (di seguito i dettagli), ogni applicazione MDS avrà a disposizione una variabile, normalmente mappata come gDeviceInfo.PIN, che conterrà 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=accesso completo):
  • 4. Struttura dei dati in ambiente Domino Bene, abbiamo quindi opportunamente configurato il server BES in modo da consentire l'invio delle informazioni richieste da BlackBerry. Per verificare la struttura di questi dati in Domino sarà sufficiente realizzare un Notes Agent che espliciti in una pagina HTML realizzata “al volo” il contenuto dell'HTTP Header, ad esempio: Sub Initialize Dim Ss As New NotesSession Dim wDoc As NotesDocument ' documento http Set wDoc=Ss.DocumentContext Forall x In wDoc.Items Print quot;<b>quot;+Ucase(x.Name)+quot;</b>quot;+quot; = quot;+x.Text+quot;<br>quot; 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:
  • 5. Via script, dunque, i valori che ci interessano saranno accessibili tramite istruzioni come: NotesDocument.HTTP_RIM_DEVICE_ID(0) oppure: NotesDocument.HTTP_RIM_DEVICE_EMAIL(0) Via formula, è possibile utilizzare la funzione @GetHTTPHeader (implementata in Domino a partire dalla R6) specificando le variabili target in questo modo: @GetHTTPHeader(quot;Rim-Device-IDquot;) @GetHTTPHeader(quot;Rim-Device-EMailquot;) In caso di applicazioni web realizzate in Domino, ottimizzate per l'utilizzo via BlackBerry e accedute tramite BlackBerry Browser siamo quindi in grado di ottenere le informazioni relative al PIN e all'indirizzo di posta elettronica associato al dispositivo. Per applicazioni MDS Studio, rivolte all'impiego di web services, sarà sufficiente prevedere un campo, non necessariamente visibile, nella schermata di accesso dell'applicazione stessa: Il valore iniziale del campo sarà impostato a @gDeviceInfo.PIN , mentre l'identificativo del campo stesso diventerà il nostro riferimento per le variabili Domino utilizzate nei web services:
  • 6. Il nostro web service, ad esempio realizzato in Lotus Script, dovrà quindi avere come punto di partenza una function che si occupi di assegnare all'apposita variabile il valore così ottenuto: Function getPIN(myPIN as String) As PIN Abbiamo così ottenuto il valore del PIN identificativo di un dispositivo BlackBerry, da applicazioni web o MDS Studio; nella seconda parte dell'articolo, vedremo come tutto ciò possa essere sfruttato per la realizzazione di un framework centralizzato per lo sviluppo (e l'utilizzo) rapido di applicazioni BlackBerry in ambiente Domino.