WebService y Seguridad

03/06/2006 - 20:34 por Helena | Informe spam
Hola,

he creado un webservice para una aplicación y lo tengo en mi servidor web.
Lo probé y funcionaba bien

También estoy creando una aplicación web con Web Forms, y le tengo puesto
seguridad a nivel "Form", es decir los usuarios tienen que introducir su
login y pass.

El problema ahora es que cuando intento utilizar el servicio web, me da
error por que no me autentifico...

como puedo autenticarme al utilizar un servicio web desde una aplicación
corriendo en el ordenador?

gracias de antemano.

Helena.

Preguntas similare

Leer las respuestas

#1 Alberto Poblacion
03/06/2006 - 21:38 | Informe spam
"Helena" wrote in message
news:
[...]
El problema ahora es que cuando intento utilizar el servicio web, me da
error por que no me autentifico...

como puedo autenticarme al utilizar un servicio web desde una aplicación
corriendo en el ordenador?



a) En el servidor donde está el servicio web, configura la seguridad de
IIS con el tipo de autenticación que quieras (por ejemplo, la Basica).
b) En el programa cliente, después de crear el proxy del servicio web,
asignale la propiedad .Credentials con los datos que quieras pasar al
servidor:

Dim proxy as New MiServicio.MiClase()
proxy.Credentials = New System.Net.NetworkCredential(usuario, password)
proxy.MiFuncion(...)

Si tienes el IIS configurado para usar autenticación NTLM y quieres pasar
el mismo usuario que hizo login en Windows, puedes poner
proxy.Credentials=CredentialCache.DefaultCredentials.
Respuesta Responder a este mensaje
#2 Helena
04/06/2006 - 18:14 | Informe spam
Hola Alberto,

muchas gracias por la respuesta,

lo he estado probando tanto en mi servidor web, que es un host contratado
con Arsys, asi como con mi servidor web local en mi pc (ISS).

En ambos casos, utilizando tu método de autentificación me da el mismo error
que sin usarlo... es decir, me reenvia a la página que tengo puesta por
defecto para hacer login http://localhost/login.aspx

No se si será por esto, pero no utilizo los utilidades de seguridad de
VB.net, simplemente compruebo contra una base de datos el usuario y el login
y si todo es correcto ejecuto la siguiente sentencia:
FormsAuthentication.RedirectFromLoginPage(txtUsuario.Text, False)



"Alberto Poblacion"
escribió en el mensaje news:%
"Helena" wrote in message
news:
[...]
El problema ahora es que cuando intento utilizar el servicio web, me da
error por que no me autentifico...

como puedo autenticarme al utilizar un servicio web desde una aplicación
corriendo en el ordenador?



a) En el servidor donde está el servicio web, configura la seguridad de
IIS con el tipo de autenticación que quieras (por ejemplo, la Basica).
b) En el programa cliente, después de crear el proxy del servicio web,
asignale la propiedad .Credentials con los datos que quieras pasar al
servidor:

Dim proxy as New MiServicio.MiClase()
proxy.Credentials = New System.Net.NetworkCredential(usuario, password)
proxy.MiFuncion(...)

Si tienes el IIS configurado para usar autenticación NTLM y quieres
pasar el mismo usuario que hizo login en Windows, puedes poner
proxy.Credentials=CredentialCache.DefaultCredentials.



Respuesta Responder a este mensaje
#3 Alberto Poblacion
04/06/2006 - 19:06 | Informe spam
"Helena" wrote in message
news:OuJv0H$
muchas gracias por la respuesta,

lo he estado probando tanto en mi servidor web, que es un host contratado
con Arsys, asi como con mi servidor web local en mi pc (ISS).

En ambos casos, utilizando tu método de autentificación me da el mismo
error que sin usarlo... es decir, me reenvia a la página que tengo puesta
por defecto para hacer login http://localhost/login.aspx

No se si será por esto, pero no utilizo los utilidades de seguridad de
VB.net, simplemente compruebo contra una base de datos el usuario y el
login y si todo es correcto ejecuto la siguiente sentencia:
FormsAuthentication.RedirectFromLoginPage(txtUsuario.Text, False)



No puedes usar la autenticacion tipo Forms con un Web Service. El
RedirectFromLoginPage lo que hace es enviar una cookie al navegador y
enviarle un error de "el recurso se ha movido a...", que ocasiona que el
navegador vuelva a navegar a la nueva página. Pero cuando usas un servicio
web, la petición no la envía un navegador, sino el proxy que has creado en
tu programa cliente, que de forma predeterminada no entiende ni las cookies
ni el redirect. Podrías programar ambas cosas, pero te va a resutar muy
complicado. Nadie utiliza la autenticación tipo Forms con servicios web,
solo con páginas web.
Necesitarás reconfigurar el servidor web para que utilice autenticación
Windows en lugar de Forms, o poner en el web.config un <location
path='miservicio.asmx'> con un <allow users=*/> para desactivar la
autenticación sobre el asmx (y luego hacer tú la autenticación que quieras
dentro del servicio).
Respuesta Responder a este mensaje
#4 Helena
04/06/2006 - 19:41 | Informe spam
Ok,

necesito realizar la autentificación "Forms" en mi servidor web para poder
controlar el acceso a las páginas.
Además, mi servidor web, Arsys, solo me permite tener aplicaciones ASP.NET
en el directorio raiz de HTML, por lo que no puedo crear subcarpetas dentro
del directorio HTML (dentro de estas subcarpetas, según creo, podría
controlar el acceso con un web.config en cada subcarpeta).

Por lo que solo puedo tener un web.config para todo, y necesito que controle
el acceso de clientes a las paginas aspx, pero también necesito que desde el
ordenador local de los clientes puedan subir datos atraves de un servicio
web.

Por lo que te he entendido, puedo configurar el web.config para que al
servicio web puedan acceder todos los usuarios (sin autenticación) y
mantener la autentificación "Forms" para las página web.

te he entendido bien, no??

para la configurar el acceso de los cliente en el web.config, utilizo las
siguientes sentencias:

<authentication mode="Forms">

<forms loginUrl="Login.aspx"/>

</authentication>

<authorization>

<deny users="?"/>

</authorization>










"Alberto Poblacion"
escribió en el mensaje news:%23NpiLl$
"Helena" wrote in message
news:OuJv0H$
muchas gracias por la respuesta,

lo he estado probando tanto en mi servidor web, que es un host contratado
con Arsys, asi como con mi servidor web local en mi pc (ISS).

En ambos casos, utilizando tu método de autentificación me da el mismo
error que sin usarlo... es decir, me reenvia a la página que tengo puesta
por defecto para hacer login http://localhost/login.aspx

No se si será por esto, pero no utilizo los utilidades de seguridad de
VB.net, simplemente compruebo contra una base de datos el usuario y el
login y si todo es correcto ejecuto la siguiente sentencia:
FormsAuthentication.RedirectFromLoginPage(txtUsuario.Text, False)



No puedes usar la autenticacion tipo Forms con un Web Service. El
RedirectFromLoginPage lo que hace es enviar una cookie al navegador y
enviarle un error de "el recurso se ha movido a...", que ocasiona que el
navegador vuelva a navegar a la nueva página. Pero cuando usas un servicio
web, la petición no la envía un navegador, sino el proxy que has creado en
tu programa cliente, que de forma predeterminada no entiende ni las
cookies ni el redirect. Podrías programar ambas cosas, pero te va a
resutar muy complicado. Nadie utiliza la autenticación tipo Forms con
servicios web, solo con páginas web.
Necesitarás reconfigurar el servidor web para que utilice autenticación
Windows en lugar de Forms, o poner en el web.config un <location
path='miservicio.asmx'> con un <allow users=*/> para desactivar la
autenticación sobre el asmx (y luego hacer tú la autenticación que quieras
dentro del servicio).




Respuesta Responder a este mensaje
#5 Alberto Poblacion
04/06/2006 - 19:58 | Informe spam
"Helena" wrote in message
news:e%230Zp4$
necesito realizar la autentificación "Forms" en mi servidor web para poder
controlar el acceso a las páginas.
Además, mi servidor web, Arsys, solo me permite tener aplicaciones ASP.NET
en el directorio raiz de HTML, por lo que no puedo crear subcarpetas
dentro del directorio HTML (dentro de estas subcarpetas, según creo,
podría controlar el acceso con un web.config en cada subcarpeta).

Por lo que solo puedo tener un web.config para todo, y necesito que
controle el acceso de clientes a las paginas aspx, pero también necesito
que desde el ordenador local de los clientes puedan subir datos atraves de
un servicio web.

Por lo que te he entendido, puedo configurar el web.config para que al
servicio web puedan acceder todos los usuarios (sin autenticación) y
mantener la autentificación "Forms" para las página web.

te he entendido bien, no??



Si, eso es. En el web.config se pueden poner varias secciones con
distintos permisos para páginas o carpetas.

para la configurar el acceso de los cliente en el web.config, utilizo las
siguientes sentencias:

<authentication mode="Forms">
<forms loginUrl="Login.aspx"/>
</authentication>

<authorization>
<deny users="?"/>
</authorization>



Exacto. Pues bien, la parte de "authorization" la puedes repetir varias
veces, con distintos permisos para distintas páginas. Eso se hace metiéndola
dentro de tags <location path=...>. Algo asi:

<configuration>
<system.web>
...
<authorization>
<deny users="?" />
</authorization>
...
</system.web>

<location path="MiServicio.asmx">
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>

</configuration>
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida