11 messaggi dal 21 gennaio 2008
Salve a tutti,
volevo, nei limiti del possibile, una dritta per leggere i dati tramite un lettore di smart card. In asp ho usato comandi shell tipo certutil per svuotare la store e poi vb per la lettura del contenuto della store (oggetto CAPICOM.Store). In asp.net non riesco a fare lo stesso e viste le potenzialita pensavo in qualcosa di più semplificato. Grazie e complimenti!
Modificato da apix72 il 04 gennaio 2012 09.48 -
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao,
ti segnalo questo progetto, comprende documentazione, esempi e sorgente.
http://www.codeproject.com/KB/smart/smartcardapi.aspx

apix72 ha scritto:

In asp.net non riesco a fare lo stesso

Mah, probabilmente si tratta di una questione di privilegi perché anche Asp.Net è in grado di lanciare eseguibili ed interoperare con oggetti COM.
Credo che avrai bisogno di far girare il sito in Full Trust affinché ciò sia possibile ma questa impostazione, potenzialmente, porta con sé dei rischi. Tienilo presente, specie se il tuo sito è pubblicato su internet.
Un'ipotesi migliore potrebbe essere quella di isolare tutta la logica di accesso alla smartcard in un servizio windows e lasciare che asp.net scambi dati con esso mediante un servizio WCF. Qui c'è un esempio che illustra come realizzarlo:
http://msdn.microsoft.com/it-it/library/ms733069.aspx

ciao

[edit] forse ho dato per scontata una cosa: il lettore smartcard è collegato al server su cui si trova il sito, giusto?
Modificato da BrightSoul il 04 gennaio 2012 19.08 -

Enjoy learning and just keep making
11 messaggi dal 21 gennaio 2008
No, il lettore è collegato su ogni client!
11.886 messaggi dal 09 febbraio 2002
Contributi
Ok, quindi tu hai un server su cui è pubblicato il sito e a cui accedono tanti client dai propri PC.

Nè con Asp.Net nè con Asp classico non puoi accedere direttamente al contenuto della smart card perché queste sono tecnologie lato server. Se prima ci riuscivi è perché nella pagina avevi inserito qualcosa in grado di girare sul client, tipo un componente ActiveX. Hai menzionato "VB"... forse si tratta di VB6, linguaggio con cui puoi aver scritto l'ActiveX.

Comunque, penso di non aver capito bene la dinamica: come mai da un sito web hai bisogno di accedere alla smartcard del client? Ti serve per riconoscerlo o ottenere delle informazioni da lui?

ciao

Enjoy learning and just keep making
11 messaggi dal 21 gennaio 2008
Innanzitutto, grazie per la disponibilità e la pasienza.
Mi sono espresso sicuramente male..... ci riprovo cercando di curare i dettagli.
Attualmente ho un database in SQL 2000 con una tabella anagrafica; da una pagina web, invece di fare il login con utente e password, ho sfruttato l'accesso area riservata tramite smart card andando a leggere il codice fiscale e verificarlo nel db. In ASP ho sfruttato un ActiveX per pulire la store dei certificati e un vbscript (sfruttanto l'ggetto CAPICOM) per leggere i dati dalla smart.
Vorrei, effettuare un upgrade in ASP.NET riscrivendo queste pagine e sfruttando la tecnologia DOTNET. Spero di non averti confuso di più le idee. Grazie per la disponibilità
11.886 messaggi dal 09 febbraio 2002
Contributi
ciao,

apix72 ha scritto:
Spero di non averti confuso di più le idee.

No, anzi, ora è più chiaro.
Quindi tu con un vbscript, lato client, creavi un'istanza di CAPICOM (che è esso stesso un controllo ActiveX) e lo usavi per accedere alla smart card. Per verificare se ho capito, penso che tu nella pagina abbia un codice simile a quello che leggo qui:

<script language="vbscript">
Set oStore = CreateObject ("CAPICOM.Store")
oStore.Open CAPICOM_LOCAL_MACHINE_STORE, CAPICOM_MY_STORE, CAPICOM_STORE_OPEN_READ_ONLY
...
</script>


Questo è codice che viene eseguito nel browser del client e può funzionare indipendentemente dalla tecnologia lato server che stai utilizzando.
Quindi, se volessi migrare la tua applicazione da ASP classico ad Asp.Net, questa parte di codice potresti lasciarla intatta.

Tuttavia, anche se funzionasse, non sarebbe una risposta valida alla tua necessità di modernizzare l'applicazione. CAPICOM è un ActiveX a 32 bit che è stato reso obsoleto da Microsoft. L'ultima versione di Windows che lo supporta è Vista, quindi se un tuo client ha un PC con Windows Seven o comunque con un sistema operativo a 64 bit, non potrà accedere alla tua applicazione perché sprovvisto di una versione di CAPICOM.

Dunque potresti riscrivere un nuovo ActiveX usando .NET come ambiente di lavoro, qui trovi un articolo per iniziare. E' compreso il codice da mettere nella pagina che è necessario ad Internet Explorer affinché sappia come scaricare e installare l'activex.
http://www.codeproject.com/Articles/19614/Downloading-C-ActiveX-Components-through-CAB-File

Ovviamente dall'ActiveX dovrai utilizzare delle classi .NET che facciano le veci di CAPICOM. Microsoft propone l'utilizzo delle classi contenute nel namespace System.Security.Cryptography.X509Certificates.
http://msdn.microsoft.com/en-us/library/cc778518.aspx

Tuttavia, tieni presente che un ActiveX ti gira solo in Internet Explorer quindi se il client volesse usare un altro browser incontrerebbe dei problemi.

Un'alternativa a tutto ciò, che non utilizza ActiveX, è configurare IIS affinché consenta la navigazione all'utente solo se in possesso di un certificato client. E' il sistema usato per esempio da alcuni portali della pubblica amministrazione. Se il client viene opportunamente configurato, sarà il browser stesso a fornirti il certificato e potrai leggere le sue proprietà da Asp.Net con Request.ClientCertificate.
Come parte del lavoro dovrai configurare IIS e mappare 1-a-1 i certificati ad utenti della tua applicazione, ma io non l'ho mai fatto e non saprei darti consigli con cognizione di causa su questo. Ti mando un link, fai qualche ricerca.
http://blogs.msdn.com/b/puneetgupta/archive/2009/08/03/where-is-the-client-certificates-ui-in-iis-7-0.aspx

ciao

Enjoy learning and just keep making
11 messaggi dal 21 gennaio 2008
Grazie mille, userò il tuo materiale per iniziare a lavorare su questa applicazione.

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.