Mi consulta es la siguiente:
Estoy implementando un webservice para conectarlo con un cliente
desarrollado en Flex. Envio los datos en XML. Y aqui tengo mi primera
pregunta:
- Si formateo los datos a traves de la vista (a diferencia de hacerlo
con el render :xml => @bug.to_xml) creo que el tipo de datos enviado al
navegador web no es un tipo mime XML porque no me sale formateado como
tal. Como puedo especificar que el tipo mime enviado es XML? Lo cierto
es que la transferencia de datos funciona parfectamente, por lo que este
es un problema menor.
La siguiente pregunta es sencilla y, a la vez, compleja: Quiero que la
seguridad de datos se implemente a nivel de servidor web. Me explico: El
servicio web debe enviar los datos segun el usuario logeado, pero ese
logeo lo quiero hacer por HTTP, cuando se requiere una pagina web. Esto
implica lo
siguiente:
- El servicio web, debe acceder a la cuenta de usuario logeado.
- Hay que definir las cuentas de usuario del servidor web y configurarlo
para que las utilice.
Por esto tengo varias preguntas:
- La facil: Como obtengo con rails el nombre de usuario autentificado en
el sistema? Lo que en .NET es: “Request.ServerVariables[“LOGON_USER”]” o
en PHP es “$_SERVER[‘PHP_AUTH_USER’]”. No debe ser muy complicado en
Rails…
- Me recomendais otra manera de hacerlo? Por ejemplo: Enviando el nombre
de usuario/contraseña por cada peticion?
- Lo “complicado”: Mi idea es montar un servidor LDAP para la gestion de
usuarios. Para hacer todo lo que quiero en Apache, mas o menos me
imagino como hacerlo. Pero estoy leyendo por ahi el rendimiento del
servidor nginx.
Se podria implementar lo que quiero (validacion de usuarios HTTP contra
un servidor LDAP) con este servidor web?
Muchas gracias por vuestro tiempo y vuestra dedicacion.
Un saludo
Roberto Oliva
Hola a todos!
Ya que veo que nadie constesta me lo voy a decir yo todo por si hay
alguien que le pueda interesar (quiza la no respuesta por parte del
foro, es como un empujon a la investigacion para buscar la solucion por
todos los medios posibles)
- Si formateo los datos a traves de la vista (a diferencia de hacerlo
con el render :xml => @bug.to_xml) creo que el tipo de datos enviado al
navegador web no es un tipo mime XML porque no me sale formateado como
tal. Como puedo especificar que el tipo mime enviado es XML? Lo cierto
es que la transferencia de datos funciona parfectamente, por lo que este
es un problema menor.
Para indicar que el contenido es XML hay que establecer el Content-Type
a text/xml:
@response.headers[“Content-Type”] = “text/xml”
Por esto tengo varias preguntas:
- La facil: Como obtengo con rails el nombre de usuario autentificado en
el sistema? Lo que en .NET es: “Request.ServerVariables[“LOGON_USER”]” o
en PHP es “$_SERVER[‘PHP_AUTH_USER’]”. No debe ser muy complicado en
Rails…
Pos se hace de la siguiente manera:
if request.env.has_key? ‘X-HTTP_AUTHORIZATION’
# try to get it where mod_rewrite might have put it
@authdata = @request.env[‘X-HTTP_AUTHORIZATION’].to_s.split
elsif request.env.has_key? ‘HTTP_AUTHORIZATION’
# this is the regular location
@authdata = @request.env[‘HTTP_AUTHORIZATION’].to_s.split
end
at the moment we only support basic authentication
if @authdata and @authdata[0] == ‘Basic’
@user, @pass = Base64.decode64(@authdata[1]).split(‘:’)[0…1]
end
Lo he obtenido del siguiente enlace:
http://blogs.23.nu/c0re/stories/7409/
- Lo “complicado”: Mi idea es montar un servidor LDAP para la gestion de
usuarios. Para hacer todo lo que quiero en Apache, mas o menos me
imagino como hacerlo. Pero estoy leyendo por ahi el rendimiento del
servidor nginx.
Se podria implementar lo que quiero (validacion de usuarios HTTP contra
un servidor LDAP) con este servidor web?
Pues supongo que se podra hacer, pero como el objetivo no es montar un
servidor de paginas estaticas muy eficiente (de hecho no voy a servir
ningun elemento estatico) no me importa la efectividad del Reverse
Proxy, asi que no me voy a complicar la vida montando Pound o Nginx y
voy a montar Apache, que va a tener 3 objetivos:
- Validar los usuarios contra LDAP
- Encriptar/Desencriptar las comunicaciones mediante canal SSL.
- Envio de los datos por HTTP a uno o varios servidores Mongrel (Reverse
Proxy).
En fin, muchas gracias por vuestra ayuda. Probablemente mi planteamiento
sea algo complejo o no sea una implementacion estandar. Lo cierto es que
estoy bastante emocionado porque con Rails, todas las piezas van
encajando de una manera perfecta.
Saludos
Roberto M. Oliva