ASP.NET - Leer USB del ordenador cliente

   
Vista:

Leer USB del ordenador cliente

Publicado por Jose M. (45 intervenciones) el 31/05/2011 08:53:53
Buenos días,

Tengo desarrollada una funcionalidad en la web para reconocer los certificados de una tarjeta que meto por un lector de usb.

Funciona bien en el ordenador donde lo desarrollo ya que actúa en las pruebas como servidor y cliente. Pero cuando alojo la web al IIS y visito desde mi ordenador esa web, la página no llega a reconocer el certificado que tengo en el lector USB, ni siquiera los certificados instalados en mi ordenador.

Alguien puede ayudarme?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Leer USB del ordenador cliente

Publicado por Sebastian Cruz (35 intervenciones) el 01/06/2011 15:04:14
Lo que sucede es que el codigo que realizes en ASP.NET se ejecuta en el servidor y luego se manda el resultado al cliente, por lo tanto cuando haces uso de esa funcionalidad en realidad no estas consultando la entrada usb de tu maquina sino la del servidor y como la cosa no esta ahi te va a dar un error tu aplicacion o bien no te va a funcionar. Ahora bien si digamos el servidor y el cliente sea tu propia maquina tampoco va a funcionar ya que IIS accede a las aplicaciones no con tu usuario de windows normal sino con un usuario web y este ultimo no tiene permisos ni facultades para acceder a los recursos normales del servidor por cuestiones de seguridad, ademas de que IIS como otros servidores web por defecto no dejan acceder mas alla del dominio correpondiente a los servicios web por lo cual seria muy dificil acceder directamente a recursos tales como discos,unidades opticas, memorias flash etc.
Despues otro problema seria que si tus credenciales estan en una memoria usb en una maquina distinta no podrias acceder tampoco a las mismas, por que ASP.NET no sabe quienes son sus clientes (ya que se ejecuta en el lado del servidor) y por lo tanto no puede acceder a los recursos de estas, por lo cual tendrias que ver de modificar tu aplicacion teninendo en cuenta todas estas concideraciones
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Leer USB del ordenador cliente

Publicado por Jose M (45 intervenciones) el 01/06/2011 17:28:27
Gracias Sebastian, muy clara la explicación.
Me he dado cuenta que la pregunta no la he planteado correctamente pero la respuesta será algo parecida.
Realmente quiero acceder al almacén de certificados del ordenador cliente. Independientemente de si tiene algo conectado al usb o no.
Al poner el lector de tarjetas y meter la tarjeta, ésta manda su certificado al almacén del ordenador cliente, pero por desgracia, es como dices, todo opera en el lado del servidor, y no accede a los recursos locales del cliente.

Habría alguna excepción o método que permita eso? Acceder a los certificados almacenados en el ordenador cliente. Intento con este código pero no me reconoce ningún certificado.

Dim certCliente As HttpClientCertificate
certCliente = Request.ClientCertificate
If certCliente.IsPresent = True Then
If certCliente.IsValid = True Then
MsgBox(certCliente.Issuer)
MsgBox(certCliente.Issuer)
MsgBox(certCliente.ValidFrom)
MsgBox(certCliente.ValidUntil)
MsgBox(certCliente.Subject)
End If
End If

Y en el IIS lo configuro para aceptar certificados de cliente.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Leer USB del ordenador cliente

Publicado por Sebastian Cruz (35 intervenciones) el 02/06/2011 06:39:23
Por la naturaleza propia de las aplicaciones web es muy dificil acceder a los recursos de los clientes, y en estos casos siempre hay que evaluar la situacion, lo mas simple en tu caso seria que el cliente envie sus certificado manualmente y tu solo los recibas y validez si son correctos, esta solucion tiene como ventaja que es facil de implementar pero la contra es que tu cliente va a tener que buscar su certificado y cargarlo en una determinada pagina para poder identificarse. Otra opcion es hacer una aplicacion que se encarge de todo eso, ya q una aplicacion de escritorio si va a tener acceso a los recursos de la maquina, y con ello podria tener una rutina que verifique si existe el certificado y enviarlo a la pagina que lo procese mediante http, lo bueno de esto es que es una solucion transparente para el usuario, pero tiene la desventaja de que tenes que realizar una aplicacion extra con toda la logica que ello implica y brindarsela a tu clientes, y que los mismos se acuerden de activarla al momento de visitar tu pagina.

Y el codigo de ejemplo que pusiste creo que no funciona por que el mismo espera un certificado que le va a llegar por http y en base al mismo verifica si es valido o no, y en tu caso tu cliente no le esta enviando ningun certificado asi que no tiene nada con que validar.

La verdad no es facil resolver el caso que propones de una manera sencilla, pero lo mas facil para mi seria eso de que logres que tu cliente te pueda pasar los certificados asi no tendrias que preocuparte de acceder a los recursos del mismo, pero eso ya es mas que nada una cuestion pura del diseño de la funcionalidad del sitio web
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar