Discussion:
¿Es posible capturar el nombre de la maquina cliente?
(demasiado antiguo para responder)
ArraY
2006-10-26 17:36:21 UTC
Permalink
La pregunta es bien sencila, ¿Es posible capturar el nombre de la
maquina cliente que accede a mi aplicacion web ya bien sea que la
maquina esté en la intranet o desde internet?

Si no es posible, ¿algun mecanismo de seguridad (aparte de login y
pass) para autenticar al usuario que acceda a la aplicacion web?

Lo que quiero es que aunque un usuario sepa por las circuntancias que
sea el login y el pass que no pueda entrar a la aplicacion sino es con
un nombre de pc o maquina que yo quiera

Un saludo,
Roberto M. Oliva
2006-10-26 17:46:32 UTC
Permalink
Hola!

Una manera que se me ocurre es controlar las IP's de la gente se
conecta. Puedes consultar la IP de la sesion conectada con el siguient
codigo: Request.ServerVariables("REMOTE_ADDR")
De todas formas, tienes que tener en cuenta que esa IP, en Internet,
puede ser variable para un mismo usuario.

Espero que te ayude
Saludos
Roberto M. Oliva
Post by ArraY
La pregunta es bien sencila, ¿Es posible capturar el nombre de la
maquina cliente que accede a mi aplicacion web ya bien sea que la
maquina esté en la intranet o desde internet?
Si no es posible, ¿algun mecanismo de seguridad (aparte de login y
pass) para autenticar al usuario que acceda a la aplicacion web?
Lo que quiero es que aunque un usuario sepa por las circuntancias que
sea el login y el pass que no pueda entrar a la aplicacion sino es con
un nombre de pc o maquina que yo quiera
Un saludo,
the4man
2006-10-26 19:03:34 UTC
Permalink
Si quieres hacer que a tu aplicacion web solo se pueda acceder desde
determinadas maquinas entonces filtra por IP fija a nivel de servidor
web o de aplicacion.

Saludos!
Post by ArraY
La pregunta es bien sencila, ¿Es posible capturar el nombre de la
maquina cliente que accede a mi aplicacion web ya bien sea que la
maquina esté en la intranet o desde internet?
Si no es posible, ¿algun mecanismo de seguridad (aparte de login y
pass) para autenticar al usuario que acceda a la aplicacion web?
Lo que quiero es que aunque un usuario sepa por las circuntancias que
sea el login y el pass que no pueda entrar a la aplicacion sino es con
un nombre de pc o maquina que yo quiera
Un saludo,
ArraY
2006-10-26 23:27:30 UTC
Permalink
the4man te refieres a lo mismo que Roberto¿ para capturar la ip del
cliente por dnd se conecte o es otra cosa¿ me das algun codigo para
comprenderte¿

Entonces no se puede capturar el nombre de la maquina¿ o la mac de la
tarjeta de red de esa maquina...o....algo que me identifique
univocamente esa maquina¿

Un saludo,
Post by the4man
Si quieres hacer que a tu aplicacion web solo se pueda acceder desde
determinadas maquinas entonces filtra por IP fija a nivel de servidor
web o de aplicacion.
Saludos!
Post by ArraY
La pregunta es bien sencila, ¿Es posible capturar el nombre de la
maquina cliente que accede a mi aplicacion web ya bien sea que la
maquina esté en la intranet o desde internet?
Si no es posible, ¿algun mecanismo de seguridad (aparte de login y
pass) para autenticar al usuario que acceda a la aplicacion web?
Lo que quiero es que aunque un usuario sepa por las circuntancias que
sea el login y el pass que no pueda entrar a la aplicacion sino es con
un nombre de pc o maquina que yo quiera
Un saludo,
the4man
2006-10-27 07:42:52 UTC
Permalink
Pues no. Lo mejor que puedes usar es la IP, siempre que no haya un
proxy de por medio claro..porque entonces varias máquinas saldran con
la misma IP.

Para obtener la IP del cliente: Request.ServerVariables["REMOTE_ADDR"]

Saludos!
Post by ArraY
Entonces no se puede capturar el nombre de la maquina¿ o la mac de la
tarjeta de red de esa maquina...o....algo que me identifique
univocamente esa maquina¿
Roberto M. Oliva
2006-10-27 08:09:51 UTC
Permalink
jejeje... si estas diciendo exactamente lo mismo que yo...
No te refieres a lo mismo??

O quieres decir que no se puede captura el nombre de la maquina, ni el
mac. Esto es asi: A traves de una conexion HTTP no se puede obtener
este informacion, a no ser que montes software especifico en ambos
lados.

Saludos
Roberto M. Oliva
Post by the4man
Pues no. Lo mejor que puedes usar es la IP, siempre que no haya un
proxy de por medio claro..porque entonces varias máquinas saldran con
la misma IP.
Para obtener la IP del cliente: Request.ServerVariables["REMOTE_ADDR"]
Saludos!
Post by ArraY
Entonces no se puede capturar el nombre de la maquina¿ o la mac de la
tarjeta de red de esa maquina...o....algo que me identifique
univocamente esa maquina¿
Jose A. Fernandez
2006-10-27 11:33:39 UTC
Permalink
Si tu ambiente es de LAN sin que tus usuarios utilicen un proxy
entonces te es factible obtener la MAC pero no directamente...po
ejemplo.
Este es tu ambiente de trabajo?

O sea si el ambiente es como te describi puedes, conociendo previamente
la IP del usuario (que esto si es factible) cuando te realizan una
peticion mediante un objeto correspondiente buscar la MAC...O sea
obtiendo la ip tu pregunta ahora es como obtner la MAC desde el
SERVIDOR sabiando la IP de la maquina de la LAN..?? (aqui tienes un
ejemplo de como buscar la mac)

http://www.codeproject.com/csharp/Host_Info_within_Network.asp
http://www.daniweb.com/techtalkforums/thread22577.html
http://groups.google.com.ar/group/microsoft.public.dotnet.framework.aspnet/browse_thread/thread/2bf29ae1ded7a56f/

Post en los news de ASP.NET
http://groups.google.com.ar/group/microsoft.public.dotnet.framework.aspnet/search?group=microsoft.public.dotnet.framework.aspnet&q=mac+address&qt_g=1


Ahora bien, porque la MAC porque si es por IP se pueden cambiar o
establecer un ip manualmente en alguna maquina y alli tu seguridad no
es tan buena, PERO... tambien este sistema de seguridad o de acceso
tendrias que evaluar si realmente necesitas un website para esto.... YA
QUE PODRIAS hacerlo como te comentaba the4man en el IIS


Espero que te sirvan los enlaces.
_________________________
Jose A. Fernandez
Post by Roberto M. Oliva
jejeje... si estas diciendo exactamente lo mismo que yo...
No te refieres a lo mismo??
O quieres decir que no se puede captura el nombre de la maquina, ni el
mac. Esto es asi: A traves de una conexion HTTP no se puede obtener
este informacion, a no ser que montes software especifico en ambos
lados.
Saludos
Roberto M. Oliva
Post by the4man
Pues no. Lo mejor que puedes usar es la IP, siempre que no haya un
proxy de por medio claro..porque entonces varias máquinas saldran con
la misma IP.
Para obtener la IP del cliente: Request.ServerVariables["REMOTE_ADDR"]
Saludos!
Post by ArraY
Entonces no se puede capturar el nombre de la maquina¿ o la mac de la
tarjeta de red de esa maquina...o....algo que me identifique
univocamente esa maquina¿
Roberto M. Oliva
2006-10-27 13:05:29 UTC
Permalink
En cualquiera de los casos que comentas, necesitas desarrollar software
especifico en el lado del cliente (un ActiveX, por ejemplo), para que
se pueda enviar el MAC a traves de una conexion HTTP.

Saludos
Roberto M. Oliva
Post by Jose A. Fernandez
Si tu ambiente es de LAN sin que tus usuarios utilicen un proxy
entonces te es factible obtener la MAC pero no directamente...po
ejemplo.
Este es tu ambiente de trabajo?
O sea si el ambiente es como te describi puedes, conociendo previamente
la IP del usuario (que esto si es factible) cuando te realizan una
peticion mediante un objeto correspondiente buscar la MAC...O sea
obtiendo la ip tu pregunta ahora es como obtner la MAC desde el
SERVIDOR sabiando la IP de la maquina de la LAN..?? (aqui tienes un
ejemplo de como buscar la mac)
http://www.codeproject.com/csharp/Host_Info_within_Network.asp
http://www.daniweb.com/techtalkforums/thread22577.html
http://groups.google.com.ar/group/microsoft.public.dotnet.framework.aspnet/browse_thread/thread/2bf29ae1ded7a56f/
Post en los news de ASP.NET
http://groups.google.com.ar/group/microsoft.public.dotnet.framework.aspnet/search?group=microsoft.public.dotnet.framework.aspnet&q=mac+address&qt_g=1
Ahora bien, porque la MAC porque si es por IP se pueden cambiar o
establecer un ip manualmente en alguna maquina y alli tu seguridad no
es tan buena, PERO... tambien este sistema de seguridad o de acceso
tendrias que evaluar si realmente necesitas un website para esto.... YA
QUE PODRIAS hacerlo como te comentaba the4man en el IIS
Espero que te sirvan los enlaces.
_________________________
Jose A. Fernandez
Post by Roberto M. Oliva
jejeje... si estas diciendo exactamente lo mismo que yo...
No te refieres a lo mismo??
O quieres decir que no se puede captura el nombre de la maquina, ni el
mac. Esto es asi: A traves de una conexion HTTP no se puede obtener
este informacion, a no ser que montes software especifico en ambos
lados.
Saludos
Roberto M. Oliva
Post by the4man
Pues no. Lo mejor que puedes usar es la IP, siempre que no haya un
proxy de por medio claro..porque entonces varias máquinas saldran con
la misma IP.
Para obtener la IP del cliente: Request.ServerVariables["REMOTE_ADDR"]
Saludos!
Post by ArraY
Entonces no se puede capturar el nombre de la maquina¿ o la mac de la
tarjeta de red de esa maquina...o....algo que me identifique
univocamente esa maquina¿
ArraY
2006-10-27 15:54:11 UTC
Permalink
Pues muchas gracias por la aclaracion. Prefiero entonces en pensar otra
opción:
En que cada cliente tenga instalado un certificado para que sea
reconocido por la aplicación.

Pero me surge 2 preguntas:

1)¿Como ASP.NET realiza esas comprobaciones para montar un sistema de
estas características?

2)Al igual que puedo crear un certificado ssl gratuito(Aunque no
certificado por una entidad) para poner mi servidor web como ssl,
¿sabe alguno como generar esos certificados para ponerlos en cada
cliente y que así la aplicación web funcione?

Gracias, un saludo a todos
Post by Roberto M. Oliva
En cualquiera de los casos que comentas, necesitas desarrollar software
especifico en el lado del cliente (un ActiveX, por ejemplo), para que
se pueda enviar el MAC a traves de una conexion HTTP.
Saludos
Roberto M. Oliva
Post by Jose A. Fernandez
Si tu ambiente es de LAN sin que tus usuarios utilicen un proxy
entonces te es factible obtener la MAC pero no directamente...po
ejemplo.
Este es tu ambiente de trabajo?
O sea si el ambiente es como te describi puedes, conociendo previamente
la IP del usuario (que esto si es factible) cuando te realizan una
peticion mediante un objeto correspondiente buscar la MAC...O sea
obtiendo la ip tu pregunta ahora es como obtner la MAC desde el
SERVIDOR sabiando la IP de la maquina de la LAN..?? (aqui tienes un
ejemplo de como buscar la mac)
http://www.codeproject.com/csharp/Host_Info_within_Network.asp
http://www.daniweb.com/techtalkforums/thread22577.html
http://groups.google.com.ar/group/microsoft.public.dotnet.framework.aspnet/browse_thread/thread/2bf29ae1ded7a56f/
Post en los news de ASP.NET
http://groups.google.com.ar/group/microsoft.public.dotnet.framework.aspnet/search?group=microsoft.public.dotnet.framework.aspnet&q=mac+address&qt_g=1
Ahora bien, porque la MAC porque si es por IP se pueden cambiar o
establecer un ip manualmente en alguna maquina y alli tu seguridad no
es tan buena, PERO... tambien este sistema de seguridad o de acceso
tendrias que evaluar si realmente necesitas un website para esto.... YA
QUE PODRIAS hacerlo como te comentaba the4man en el IIS
Espero que te sirvan los enlaces.
_________________________
Jose A. Fernandez
Post by Roberto M. Oliva
jejeje... si estas diciendo exactamente lo mismo que yo...
No te refieres a lo mismo??
O quieres decir que no se puede captura el nombre de la maquina, ni el
mac. Esto es asi: A traves de una conexion HTTP no se puede obtener
este informacion, a no ser que montes software especifico en ambos
lados.
Saludos
Roberto M. Oliva
Post by the4man
Pues no. Lo mejor que puedes usar es la IP, siempre que no haya un
proxy de por medio claro..porque entonces varias máquinas saldran con
la misma IP.
Para obtener la IP del cliente: Request.ServerVariables["REMOTE_ADDR"]
Saludos!
Post by ArraY
Entonces no se puede capturar el nombre de la maquina¿ o la mac de la
tarjeta de red de esa maquina...o....algo que me identifique
univocamente esa maquina¿
the4man
2006-10-27 17:52:53 UTC
Permalink
Post by ArraY
1)¿Como ASP.NET realiza esas comprobaciones para montar un sistema de
estas características?
Se configura en IIS, en las propiedades del sitio web. Hay tienes que
decirle que vas a usar certificados de cliente.
Post by ArraY
2)Al igual que puedo crear un certificado ssl gratuito(Aunque no
certificado por una entidad) para poner mi servidor web como ssl,
¿sabe alguno como generar esos certificados para ponerlos en cada
cliente y que así la aplicación web funcione?
Si, yo lo hice hace tiempo....puedes seguir estas instrucciones:
http://www.microsoft.com/Spanish/msdn/arquitectura/BuildSecNetApps/html/17_HowTo.asp
ArraY
2006-10-30 12:46:45 UTC
Permalink
Muchas Gracias the4man,

El artículo es lo que busco...pero....el codigo:

string username;
username = User.Identity.Name;
message.Text = "Welcome " + username;
HttpClientCertificate cert = Request.ClientCertificate;
if (cert.IsPresent)
{
certData.Text = "Client certificate retrieved";
}
else
{
certData.Text = "No client certificate";
}


Me surge la siguiente pregunta:

¿Si en una máquina tengo instalado un certificado que no tiene nada
que ver con el certificado que yo creé para la aplicacion, me entrará
la ejecución en la linea
certData.Text = "Client certificate retrieved";? Es que me despista la
linea if (cert.IsPresent)
ya que no se si se refiere a un certificado presente cualquiera o al
que se refiere al de la aplicacion web mia.

Y en consecuencia, ¿Existe codigo en asp.net para diferenciar un
certificado de otro (pj. un certificado de hacienda y otro instalado de
la aplicacion web mia) que esten instalados en el cliente para entre o
no en la aplicacion web?

Un saludo,
Post by the4man
Post by ArraY
1)¿Como ASP.NET realiza esas comprobaciones para montar un sistema de
estas características?
Se configura en IIS, en las propiedades del sitio web. Hay tienes que
decirle que vas a usar certificados de cliente.
Post by ArraY
2)Al igual que puedo crear un certificado ssl gratuito(Aunque no
certificado por una entidad) para poner mi servidor web como ssl,
¿sabe alguno como generar esos certificados para ponerlos en cada
cliente y que así la aplicación web funcione?
http://www.microsoft.com/Spanish/msdn/arquitectura/BuildSecNetApps/html/17_HowTo.asp
the4man
2006-10-30 15:26:29 UTC
Permalink
Uhm....... si no recuerdo mal (tengo un poco oxidado este tema) puedes
configurar IIS para que solo acepte certificados digitales de un
determinado tipo. Creo que era en la opcion "create certificate trust
list", o algo asi.

Si lo haces en ASPNET supongo que podras mirar en las propiedades del
objeto cert. Deberias poder acceder a los diferentes campos del
certificado (como por ejemplo el OU) para comprobar quien lo ha
expedido.

Pero ya te digo que lo tengo un poco oxidado, tal vez google te pueda
ayudar mas.

Saludos!
Post by ArraY
Muchas Gracias the4man,
string username;
username = User.Identity.Name;
message.Text = "Welcome " + username;
HttpClientCertificate cert = Request.ClientCertificate;
if (cert.IsPresent)
{
certData.Text = "Client certificate retrieved";
}
else
{
certData.Text = "No client certificate";
}
¿Si en una máquina tengo instalado un certificado que no tiene nada
que ver con el certificado que yo creé para la aplicacion, me entrará
la ejecución en la linea
certData.Text = "Client certificate retrieved";? Es que me despista la
linea if (cert.IsPresent)
ya que no se si se refiere a un certificado presente cualquiera o al
que se refiere al de la aplicacion web mia.
Y en consecuencia, ¿Existe codigo en asp.net para diferenciar un
certificado de otro (pj. un certificado de hacienda y otro instalado de
la aplicacion web mia) que esten instalados en el cliente para entre o
no en la aplicacion web?
Un saludo,
Post by the4man
Post by ArraY
1)¿Como ASP.NET realiza esas comprobaciones para montar un sistema de
estas características?
Se configura en IIS, en las propiedades del sitio web. Hay tienes que
decirle que vas a usar certificados de cliente.
Post by ArraY
2)Al igual que puedo crear un certificado ssl gratuito(Aunque no
certificado por una entidad) para poner mi servidor web como ssl,
¿sabe alguno como generar esos certificados para ponerlos en cada
cliente y que así la aplicación web funcione?
http://www.microsoft.com/Spanish/msdn/arquitectura/BuildSecNetApps/html/17_HowTo.asp
ArraY
2006-10-30 21:00:27 UTC
Permalink
Pues nada....gracias por todo

Un saludo,
Post by the4man
Uhm....... si no recuerdo mal (tengo un poco oxidado este tema) puedes
configurar IIS para que solo acepte certificados digitales de un
determinado tipo. Creo que era en la opcion "create certificate trust
list", o algo asi.
Si lo haces en ASPNET supongo que podras mirar en las propiedades del
objeto cert. Deberias poder acceder a los diferentes campos del
certificado (como por ejemplo el OU) para comprobar quien lo ha
expedido.
Pero ya te digo que lo tengo un poco oxidado, tal vez google te pueda
ayudar mas.
Saludos!
Post by ArraY
Muchas Gracias the4man,
string username;
username = User.Identity.Name;
message.Text = "Welcome " + username;
HttpClientCertificate cert = Request.ClientCertificate;
if (cert.IsPresent)
{
certData.Text = "Client certificate retrieved";
}
else
{
certData.Text = "No client certificate";
}
¿Si en una máquina tengo instalado un certificado que no tiene nada
que ver con el certificado que yo creé para la aplicacion, me entrará
la ejecución en la linea
certData.Text = "Client certificate retrieved";? Es que me despista la
linea if (cert.IsPresent)
ya que no se si se refiere a un certificado presente cualquiera o al
que se refiere al de la aplicacion web mia.
Y en consecuencia, ¿Existe codigo en asp.net para diferenciar un
certificado de otro (pj. un certificado de hacienda y otro instalado de
la aplicacion web mia) que esten instalados en el cliente para entre o
no en la aplicacion web?
Un saludo,
Post by the4man
Post by ArraY
1)¿Como ASP.NET realiza esas comprobaciones para montar un sistema de
estas características?
Se configura en IIS, en las propiedades del sitio web. Hay tienes que
decirle que vas a usar certificados de cliente.
Post by ArraY
2)Al igual que puedo crear un certificado ssl gratuito(Aunque no
certificado por una entidad) para poner mi servidor web como ssl,
¿sabe alguno como generar esos certificados para ponerlos en cada
cliente y que así la aplicación web funcione?
http://www.microsoft.com/Spanish/msdn/arquitectura/BuildSecNetApps/html/17_HowTo.asp
the4man
2006-10-27 12:16:05 UTC
Permalink
:D

La respuesta completa era: pues no, no se puede capturar la mac ni el
nombre de la máquina (salvo el caso que comenta el compañero si estas
en LAN).

Saludos!
Post by Roberto M. Oliva
jejeje... si estas diciendo exactamente lo mismo que yo...
No te refieres a lo mismo??
O quieres decir que no se puede captura el nombre de la maquina, ni el
mac. Esto es asi: A traves de una conexion HTTP no se puede obtener
este informacion, a no ser que montes software especifico en ambos
lados.
Saludos
Roberto M. Oliva
Post by the4man
Pues no. Lo mejor que puedes usar es la IP, siempre que no haya un
proxy de por medio claro..porque entonces varias máquinas saldran con
la misma IP.
Para obtener la IP del cliente: Request.ServerVariables["REMOTE_ADDR"]
Saludos!
Post by ArraY
Entonces no se puede capturar el nombre de la maquina¿ o la mac de la
tarjeta de red de esa maquina...o....algo que me identifique
univocamente esa maquina¿
Continúe leyendo en narkive:
Loading...