jueves, 24 de febrero de 2011

Silverlight. WebServices. WCF. Cross-Domain. clientaccesspolicy.xml

Bueno el famoso archivo “clientaccesspolicy.xml” debe colocarse en la raíz de su servidor web, no así en la raíz de un directorio virtual (configurado como aplicación) que usted haya creado.

Si usted tiene una aplicación en un directorio virtual llamado “miaplicación” tal como:

http://midominio/miaplicacion

entonces debe colocar el “clientaccesspolicy.xml” en la raíz:

http://midominio/clientaccesspolicy.xml

Este es el típico archivo predeterminado que permitiría el acceso desde cualquier dominio llamador (claro, esto siempre funcionaría en el supuesto de que sus servicios Web no tengan algún mecanismo de autentificación).

Code Snippet
  1. <?xml version="1.0" encoding="utf-8" ?>
  2. <access-policy>
  3.   <cross-domain-access>
  4.     <policy>
  5.       <allow-from http-request-headers="SOAPAction">
  6.         <domain uri="*"/>
  7.       </allow-from>
  8.       <grant-to>
  9.         <resource path="/" include-subpaths="true"/>
  10.       </grant-to>
  11.     </policy>
  12.   </cross-domain-access>
  13. </access-policy>

En cualquier caso si los dominios desde los que se llama son simples alias o entradas en un DNS (CNAME or A records) que apuntan a la misma IP, la seguridad provista por el dominio de su aplicación funcionaría adecuadamente y estaría en el contexto de las llamadas, por lo tanto una llamada a su servicio desde “midominioalias1/miaplicacion/miservicio” o desde “midominioalias2/miaplicacion/miservicio” no debería tener problemas aún cuando haya protegido sus servicios con algún mecanismo de seguridad de acceso como el provisto por ASP.NET. Este otro tema de seguridad se puede ver en Servicios WCF y ASP.NET

Ahora bien para limitar el acceso a su servicio desde dominios conocidos los mejor será eliminar el permisivo “<domain uri="*"/>”  y colocar explícitamente sus dominios en su archivo “clientaccesspolicy.xml”.

En el ejemplo siguiente, con los asteriscos, se aceptan llamadas desde cualquier subdominio de “midominio” y de subdominios de algunos otros dominios específicos (que podrían también ser alias de su propio dominio en un DNS). Podría poner una URL específica que acepta explícitamente, quitando el asterisco y reemplazándolo por “www.midominioalias1.com”.

Code Snippet
  1. <?xml version="1.0" encoding="utf-8" ?>
  2. <access-policy>
  3.   <cross-domain-access>
  4.     <policy>
  5.       <allow-from http-request-headers="SOAPAction">
  6.         <!--<domain uri="*"/>-->
  7.         <domain uri="http://midominio.com" />
  8.         <domain uri="http://*.midominio.com" />
  9.         <domain uri="http://*.midominioalias1.com" />
  10.         <domain uri="http://*.midominio2.com" />
  11.       </allow-from>
  12.       <grant-to>
  13.         <resource path="/" include-subpaths="true"/>
  14.       </grant-to>
  15.     </policy>
  16.   </cross-domain-access>
  17. </access-policy>

Dado que este archivo reside en la raíz de su sitio web, tal como está el “path” significa que podría llamar a cualquier servicio web que esté ubicado donde quiera bajo este punto de partida. Si necesita limitar el acceso a cierta ubicación debe colocar el “path”, por ejemplo: “path=”/miaplicacion/misservicios”. Vea Restricciones de seguridad de acceso a redes en Silverlight

Etiquetas de Technorati: ,,,

viernes, 4 de febrero de 2011

No olvidar El mensaje "Código de error: 0x80070002" cita un problema en la comprobación de la licencia después de una actualización en un equipo Dell

[Window Title]
Copias de seguridad de Windows: opciones para solucionar problemas

[Main Instruction]
Comprobar copia de seguridad

[Content]
El sistema no puede encontrar el archivo especificado.


[V] Mostrar detalles [Intentar ejecutar de nuevo la copia de seguridad] [Cambiar configuración de copia de seguridad] [Cancelar]

[Expanded Information]
Hora de copia de seguridad: 04/02/2011 06:28 p.m.
Ubicación de copia de seguridad: Backup (J:)
Código de error:0x80070002


El mensaje "Código de error: 0x80070002" cita un problema en la comprobación de la licencia después de una actualización en un equipo Dell