Configurando FBA y Anonymous Authentication en Extended Web Applications – SharePoint 2013

Uno de los requerimientos más comunes cuando implementamos portales web públicos sobre SharePoint 2013, es que los portales tengan la capacidad de proveer acceso autenticado a secciones del Portal.

El mecanismo de autenticación por defecto es Windows Authentication, pero para portales públicos definitivamente no es un escenario válido registrar usuario públicos en el directorio activo. En ese sentido, SharePoint 2013 ofrece el soporte a emplear 2 mecanismo de autenticación adicionales: Forms Based Authentication o Trusted Identity Provider. En este artículo veremos el método Forms Based Authentication (FBA).

FBA es un mecanismo soportado por ASP.NET y básicamente provee una base de datos desde donde se puede gestionar las credenciales de los usuarios, esta base de datos se crea en SQL, y es una de las opciones más idóneas para cumplir el requerimiento de disponer de un medio para gestionar accesos a usuarios externos.

A continuación explicaré el paso a paso para configurar un Portal web con autenticación anónima y Forms based authentication, para lo cual será necesario crear una aplicación web y extenderla:

1. Primero debemos crear una nueva aplicación web.

2. Especificamos que emplearemos el puerto 80.

 3. Empleamos la autenticación Windows con NTLM.

4. Especificamos la cuenta de identidad del Application Pool, debemos recordar esta cuenta pues la emplearemos más adelante.

 5. Especificamos el nombre de la base de datos del Portal.

 6. Validar que se haya creado la aplicación web correctamente.

7. Creamos una colección de sitios.

 8. Especificamos los datos de la colección del sitio.

 9. Seleccionar la plantilla “Portal de publicación“.

 10. Especificar la cuenta del administrador.

 11. Se creó la colección de sitios.

12. Validamos el acceso a la colección de sitios.

 13. Ahora seleccionamos la aplicación web y damos clic a Authenticacion Providers.

14. Damos clic en la zona Default.

15. Seleccionamos Enable anonymous access.

 16. Ingresamos a la colección de sitios y damos clic en Configuración del sitio.

 17. Damos clic a Permisos del sitio.

 18. Damos clic en Acceso anónimo.

 19. Seleccionamos Sitio web completo.

20.  Ingresamos al site collection y veremos que aparecerá la opción de Inicio de sesión

21. En Application Management, seleccionamos Configure alternate Access mappings.

22. Damos clic en Edit Public URLs.

23. Seleccionamos la aplicación web que creamos al inicio y en la Zona Intranet especificamos la URL: http://portal.

 24. Veremos que se creó correctamente la nueva URL alternativa (El registro debe existir en el DNS).

25. Podemos verificar que se puede acceder sin problemas con la URL alternativa.

26. Ahora debemos extender la aplicación web. Esto debido a que queremos que la URL pública solo permita acceso anónimo y por FBA y el interno solo permita acceso autenticado de Windows.

Seleccionamos la aplicación web y damos clic Extend.

27. En este caso emplearemos el puerto 443 y especificaremos la URL pública que utilizaremos.

28. Especificamos que permitiremos acceso anónimo y SSL.

29. Inicialmente dejaremos por defecto autenticación Windows con NTLM.

 

30. Seleccionaremos la Zona Internet.

31. Entramos al IIS y verificamos que se haya creado un Sitio de IIS para la aplicación extendida.

32. Damos clic derecho y Edit Bindings…

33. Vemos que la URL ya se presenta por defecto. Seleccionamos el binding y damos clic en Edit…

34. Debido a que estamos empleando SSL y Puerto 443, entonces debemos seleccionar el certificado que previamente debemos haber importado en el servidor WFE.

35. Cerramos la configuración del binding.

36. Probamos el acceso (El registro DNS ya debe existir) y se verá el site collection correctamente, como podemos apreciar ya se muestra el acceso anónimo sin necesidad de haber hecho una configuración adicional. Esto porque la aplicación extendida es una replica, esto quiere decir que todo lo que esté configurado en la aplicación web en Zona default se replicará en esta aplicación web en Zona Internet.

37. Ahora toca configurar la aplicación para que soporte FBA. Seleccionamos la aplicación web y clic en Authentication Providers.

38. Seleccionamos la Zona Internet, que es donde deseamos configurar el soporte a FBA.

39. Seleccionamos Enable Forms Based Authentication (FBA) y ASP.NET Membership Provider Name especificamos el nombre: SQL_Membership y en ASP.NET Role Manager Name especificamos el nombre: SQL_Role.

40. Ahora para facilitar la configuración de FBA vamos a instalar 2 Farm Solutions (.wsp) libres. Uno es el FBA configuration Manager for SharePoint (http://blogs.technet.com/b/speschka/archive/2012/07/28/fba-configuration-manager-for-sharepoint-2013.aspx) y el otro es el SharePoint 2013 FBA Pack (http://sharepoint2013fba.codeplex.com/).

Añadimos los .wsp desde PowerShell con el Add-SPSolution.

41. Verificamos que se hayan añadido correctamente y las desplegamos.

42. Desplegamos el fbaconfigfeature.wsp.

43. Desplegamos el visigo.sharepoint.formsbasedauthenticacion.wsp.

 44. Al acceder a la colección de sitios con la URL externa (https://www.iwdemo.com) nos aparecerá un formulario para seleccionar el tipo de autenticación. Seleccionaremos Autenticación de Windows.

45. Ingresamos a la Configuración del sitio.

 

46. Ahora damos clic en Características de la colección de sitios.

47. Y activamos el Feature “Forms Based Authentication Management“.

48. Podremos validar que en Configuración del sitio aparecieron nuevas opciones de configuración de FBA.

49. Ahora corresponde crear la base de datos de FBA. Ubicamos la ruta C:WindowsMicrosoft.NETFramework64v4.0.30319 y ubicamos el archivo aspnet_regsql.exe y lo ejecutamos.

50. En la ventana ASP.NET SQL Server Setup Wizard, damos clic en Next.

51. Configure SQL Server for application services y clic en Next.

52. Especificamos el nombre del servidor de base de datos y el nombre de la base de datos (Ej. Extranet_User_DB). 

 53. Clic en Next.

54. Clic en Finish.

55. Ingresamos al SQL Server Management Studio y validamos que se creó la base de datos correctamente.

56. Ahora debemos dar permisos a la cuenta de Application Pool de nuestra aplicación web del Portal hacia la base de datos de FBA. Si no la recordamos en Service Accounts podemos ubicarla.

57. Ahora damos permisos a esta cuenta (Ej. sp13_webapp).

58. En Membership seleccionamos db_owner.

59. Ahora debemos ejecutar a la aplicación FBA Configuration Manager que descargamos al inicio (http://blogs.technet.com/b/speschka/archive/2012/07/28/fba-configuration-manager-for-sharepoint-2013.aspx)

A. En Web Application Url especificamos la URL de la aplicación web que creamos al inicio.

B. En Zone, seleccionamos la Zona Internet pues es la que empleamos cuando extendimos la aplicación y en esta zona es donde deseamos configurar FBA.

C. En Sample Configurations seleccionamos People Picker Wildcard.

D. En Connection String especificamos los siguiente: <add name=”fbaSQL” connectionString=”server=VMSP2015;database=Extranet_User_DB;Trusted_Connection=true” />

E. En People Picker Wildcard especificamos: <add key=”SQL_Membership” value=”%” />

F. En Membership Provider especificamos: <add connectionStringName=”fbaSQL” applicationName=”/” name=”SQL_Membership” type=”System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a” />

G. En Role Provider especificamos: <add connectionStringName=”fbaSQL” applicationName=”/” name=”SQL_Role” type=”System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”/>

Finalmente damos clic en Apply Config.

 

60. Damos clic en OK.

61. Ahora verificamos los cambios, damos clic derecho en el sitio IIS extendido y luego clic en Explore.

62. Vemos que se generó un backup del web.config.

63. Luego abrimos el web.config y validamos que se registró correctamente.

64. En el Sitio IIS de SharePoint Web Services seleccionamos SecurityTokenServiceApplication, clic derecho y clic en Explore.

65. Vemos que también se generó una copia del web.config.

66. En el Web.config vemos que también se deben mostrar los cambios.

67. Lo mismo hacemos para la Administración Central.

68. Validamos de la misma manera el web.config.

 69. Ejecutamos un IIS Reset.

70. Podemos verificar que también se aplicaron los cambios correctamente al especificar la aplicación web, la Zona Internet y clic en Get FBA Config.

71. Ingresamos a la URL de la aplicación extendida.

 

72. En la Configuración del sitio damos clic en FBA User Management.

 

73. Damos clic en New User.

74. Especificamos los datos de una cuenta. 

75. Especificamos el mensaje de correo para la cuenta que estamos registrando.

76. Vemos que se registró la cuenta correctamente.

 

77. Agregamos esta cuenta al grupo de Integrantes para probar que el acceso funcione correctamente. 

78. Verificamos la cuenta.

79. Validamos que se registró correctamente.

80. Ingresamos nuevamente a la URL https://www.iwdemo.com y seleccionamos Autenticación de formularios.

81. Ingresamos las credenciales del usuario de FBA.

82. Y validamos su ingreso correctamente.

83. Ahora, como queremos que desde la URL pública solo se acceda anónimo o mediante FBA y no mediante Autenticación Windows vamos a cambiar los administradores de la colección de sitios.

 

84. Agregamos un segundo administrador de la colección de sitios.

85. Buscamos la cuenta FBA antes creada.

86. Verificamos que se haya agregado como administrador secundario de manera correcta.

87. Seleccionamos nuevamente la aplicación web y clic en Authentication Providers.

88. Seleccionamos la zona Internet.

89. Quitamos la opción Enable Windows Authentication.

90. Ingresamos nuevamente a la URL https://www.iwdemo.com

91. Automáticamente se muestra el formulario de autenticación de FBA.

92. Ingresamos las credenciales.

93. Y validamos el ingreso.

94. Podremos comprobar que es administrador de la colección de sitios pues se puede apreciar la sección Administración de la colección de sitios.

 

 

Creando un mapa de sitio con Managed Navigation en SharePoint 2013

SharePoint 2013 como sabemos ofrece un nuevo mecanismo para configuración la navegación del Portal mediante la Navegación Administrada. Esta configuración puede realizarse de manera centralizada y por medio del uso de términos. Además ofrece muchas ventajas, como la posibilidad de configurar URLs amigables o incorporar propiedades SEO.

Lamentablemente SharePoint 2013 no dispone de un WebPart o algún componente nativo para la creación de un mapa de sitio que es un requerimiento muy común en Portales web.

A falta del componente nativo, es posible desarrollar nuestro propio componente que consulte a los términos de la navegación Administrada, sin embargo también existen componentes libres en Internet, que pueden ser utilizados.

En la siguiente página pueden encontrar un componente de Site Map muy bueno: http://www.codeproject.com/Articles/775248/Site-Map-Web-Part-SharePoint

A continuación detalle el proceso de instalación y configuración:

1. Descargar la solución. El .zip esta conformado por el código fuente así como el compilado (.wsp) para instalar directamente. 

2. Instalamos el .wsp ejecutando el comando Add-SPSolution.

 3. En la Administración Central nos dirigimos a Solution Management y ubicar la solución recién agregada. Se mostrará como Not Deployed.

4. Procedemos a instalarla dando clic en Deploy Solution. Esto también se puede lograr con el comando Install-SPSolution.

5. Procedemos a instalar en las aplicaciones web donde lo requiramos. 

6. Y listo, se mostrará como Deployed

 7. Ahora nos vamos a la colección de sitios desde donde deseemos agregar el Mapa del Sitio. En características de la colección del sitio Activamos el Feature Questech Systems Site Map Web Part.

8. Creamos una nueva página para el Mapa del Sitio e insertamos el WebPart Site Map

9. El resultado será el siguiente:

10. En el WebPart de SiteMap solo se mostrarán los términos de la navegación administrada que se encuentren marcados para mostrarse desde la navegación global o local. Así que asegurémonos a seleccionar al menos 1 de ellos.

11. El resultado se puede comprobar. 

12. Ahora crearé mas niveles en mi navegación Administrada. En este caso crearé hasta 4 niveles.

13. En la navegación global podremos ver que solo se ve como máximo hasta el 3er nivel pues es el comportamiento nativo.

14.En la navegación local (Quick Launch) vemos que máximo se muestra hasta el segundo nivel, también este es el comportamiento nativo. 

15. Sin embargo, en nuestro mapa del sitio si podremos ver todos los niveles que necesitemos. 

 16. Por último, si queremos cambiar los estilos de nuestro SiteMap no es necesario modificar el código fuente, ya que es posible configurar el WebPart y especificar las clases que deseemos.

Y listo, disponemos de un mapa del sitio configurable y que cumple con las necesidades básicas.

SEO SiteMap en Portales web de SharePoint 2013

Dentro de las características SEO que SharePoint 2013 trae, una de las más importantes es la creación de un SiteMap (Mapa del sitio) que pueda ser empleado por los motores de búsqueda para optimizar los resultados de los mismos. Este mapa de sitio viene a ser un archivo .XML que contiene el listado de las URLs de nuestro Portal para estas sean indizadas por los motores de búsqueda de una manera más sencilla. Esto definitivamente optimiza las capacidades de búsqueda.

Para lograr esto los pasos son sencillos:

1. Ir a la configuración del sitio y debajo de Administración de la colección de sitios seleccionar Características de la colección de sitios.

2. Ubicar la característica Mapa del sitio del motor de búsqueda y Activarlo.

3. La activación del feature antes mencionado habilitará la ejecución de un timer job diario para la generación el SiteMap (Archivo XML) del Site collection.

Nosotros podemos forzar la ejecución del timer Job. para esto nos vamos a la sección de Monitoring en la Administración Central y debajo de Timer Jobs seleccionamos Review Job definitions.

4. Ubicamos el timer job Search Engine Sitemap job y le damos clic.

5. Ejecutamos el timer job. Clic en Run Now.

6. Validamos que se ejecute el timer Job.

7. Ahora nos dirigimos hacia nuestro site collection y en la raíz le agregamos a la url sitemap0.xml. La URL quedaría algo como: http://portal/sitemap0.xml.

8. Se abrirá el archivo XML y podremos comprobar que se generó el SiteMap correctamente con todas las URLs del Portal a ser indizadas por el motor de búsqueda.

Y eso es todo!

SEO en escenarios de Cross-site publishing en SharePoint 2013

SharePoint 2013 a evolucionado significativamente en cuanto a características de web Content Management frente a su predecesor SharePoint 2010.

Muchos de estos features han estado orientados a lograr implementaciones de Portales web que cumplan con los estándares del mercado y que satisfagan las expectativas de las empresas sin la necesidad de invertir mucho esfuerzo en desarrollos o personalizaciones.

En post anteriores he ido mencionando algunos de estos como son:

1. Cross-site publishing.

2. Managed Navigation.

3. Responsive Design.

4. Variations.

Entre otros.

Adicionalmente a los ya mencionados, uno de los requerimientos más importantes cuando implementamos portales web es que estos soporten capacidades de Search Engine Optimization (SEO), es decir, que nuestro Portales se encuentre optimizado para que los motores de búsqueda pueda priorizar nuestras páginas en los resultados de búsqueda.

 A diferencia de SharePoint 2010, SP2013 trae muchas capacidades de SEO de manera nativa. Por ejemplo, el manejo de URL amigables a través de Managed Navigation es uno de ellos. Así mismo, cuando creamos páginas web, en la pestaña de Páginas podemos dirigirnos a las opciones de Editar propiedades de SEO debajo de Editar propiedades.

Aparecerá un formulario donde podremos completar los valores de los principales atributos SEO como son: Título del explorador, Descripción META, palabras clave.

Una vez aplicados los cambios sobre la página, podremos explorar que en el HTML que se genera ya se incorporar el valor que especificamos en el tag <title>.

Lo mismo sucede con los meta tags para description y keywords.

 Configurar estos valores en nuestras páginas resulta bastante sencillo, sin embargo, que sucede en un escenario de Cross-site publishing, donde el contenido puede encontrarse en listas y no en bibliotecas de páginas. Por ejemplo, en el caso de emplear una lista de noticias donde queremos que cada noticia tenga sus campos SEO.

Pues para esto seguiremos los pasos a continuación especificados:

1. Primero debemos crear un tipo de contenido que utilizaremos para nuestra lista (Ej. lista noticias), a continuación debemos agregar todas las columnas de sitio de tipo SEO.

2. Veremos que se añadieron las columnas SEO (Descripción metaPalabras clave meta, etc.). 

 

 3. Estas columnas de manera nativa se encuentran selladas y en sus propiedades esta especificado que no se mostrará en la vista de lectura, edición o creación de un elemento de lista. En este sentido debemos primero ejecutar por cada columnas el siguiente script de PowerShell, para quitar el sello temporalmente.

4. A continuación especificamos que la columna debe poder verse en el formulario de lectura, edición y creación. 

5. Podremos comprobarlo si es que creamos un nuevo elemento en la lista. 

6. Una vez comprobado debemos volver a cambiar el estado de la columna para que se encuentra sellada. Con esto protegemos la columna.

7. A continuación debemos asegurarnos de que las propiedades administradas de SEO estén asociadas correctamente con las propiedades rastreadas de nuestras columnas de sitio. Previamente debemos ejecutar el rastreo completo.

Para esto nos vamos a la Administración Central y ubicamos el servicio de aplicaciones de búsqueda, y a continuación seleccionamos Search Schema

 8. Después buscamos todas las propiedades administradas que tengan la palabra SEO.

 9. Editamos cada una de ellas.

 

10. Y tenemos que asegurarnos que la propiedad rastreada esté mapeada correctamente. Por defecto se encuentran mapeadas las propiedades rastreadas en Inglés, pero si nuestro ambiente es en español debemos agregar la de español. Por ejemplo para título del explorador debemos agregar: ows_Titulo_x0020_del_x0020_exp.

11. Para palabras clave Meta: ows_q_TEXT_Palabrasclavemeta.

 12. Para descripción meta: ows_q_TEXT_Descripcionmeta.

 13. Finalmente registramos las noticias que necesitemos.

 

14. Una vez publicada la información vía el esquema de Cross-site publishing podremos acceder a la página de publicación. Por defecto el WebPart de reutilización de elemento de catálogo soporta los campos SEO.

15. Si accedemos al HTML podremos ver que el tag <title> tiene el valor que nosotros especificamos. 

16. Lo mismo para los meta tags de description y keywords.

Listo. Eso es todo, de esa manera logramos incorporar SEO para nuestras listas y/o bibliotecas en el esquema de Cross-site publishing.

En el caso de no utilizar el webpart de reutilización de elementos del catálogo nativo y en vez de eso utilicemos un WebPart como el Content by Search WebPart debemos asegurarnos de que su propiedad AddSEOPropertiesFromSearch se encuentre en True, para hacer esto podemos exportar el WebPart.

Guardamos el Webpart con el nombre que deseemos.

 

Editamos el archivo con un editor (Ej. NotePad ++). Y verificamos que la propiedad este en True, si es así, no tenemos que hacer nada más, pero si está en False, tendremos que cambiarlo a True y volver a cargar el WebPart en la galería de WebParts como si fuera uno nuevo pues este tendremos que utilizar para soportar las características SEO y que emplee las propiedades SEO de nuestro catálogo.

Cross site publishing con listas de SharePoint

En el siguiente post, explicaré como emplear Cross-site publishing para listas de SharePoint las cuales no requieren ser consultadas desde la navegación superior o el Quick Launch de SharePoint.

Típicamente los elementos de este tipo de listas requerirán ser consultas mediante Content by search Webparts desde la página principal u otras páginas internas. Algunos de ejemplos de este tipo de listas podrían ser Noticias, Anuncios, Comunicados, Eventos, entre otros.

A continuación pasaré a detallar el paso a paso de implementación.

1. Lo primer que debemos hacer es crear nuestra estructura de términos y subtérminos con la agrupación requerida. En mi ejemplo yo he creado un Conjunto de términos llamado Clasificaciones Portal, ya que en este se encontrarán todos los tipos de contenidos que desearé presentar en mi portal. A continuación he creado un término por cada uno de los contenidos asociados a una lista (Audios, Eventos, Anuncios, Videos, Noticias, etc.).

Finalmente por cada uno de esos términos que representan una Categoría de información, cree sus propios subtérminos, de esta manera cada Anuncio por ejemplo podrá ser clasificado. Esta es la estructura mínima que se debería cumplir si es que deseamos publicar múltiples listas como catálogos mediante la característica de Cross-site publishing.

2. Una vez lista nuestra estructura de términos y subtérminos, debemos crear una columna de sitio asociada al conjunto de términos. En mi ejemplo he llamado a la columna “Clasificación” y el conjunto de términos asociado es “Clasificaciones Portal“. 

 

 3. Posteriormente crearé todas las demás columnas que necesite y las asociaré a un nuevo tipo de contenido. Para que funcione el esquema de cross-site publishing, existen 2 columnas muy importantes. 1 es la columna de clasificación que creamos antes y otra es la columna de URL, esta columna permitirá generar URLs amigables por cada uno de los elementos registrados en nuestra lista, favoreciendo a las capacidad de SEO.

 4. Ahora crearemos nuestra lista, en este caso crearé una lista que la llamaré Anuncios.

 5. A mi lista le asociaré el tipo de contenido de Anuncios antes, creado. Por otro lado, ubicaré la columna “Clasificación” y le daré clic,

6. Como vimos antes, durante la creación de esta columna, se asoció al conjunto de términos, sin embargo como yo únicamente quiero seleccionar los términos de clasificación de Anuncios, es posible modificar para que solo me muestre los subtérminos de la categoría de Anuncios. 

7. Así que seleccionamos el términos Anuncios y guardamos los cambios.

 

 

 8. Ahora podemos probar que funcione. Crear un nuevo elemento y seleccionamos los valores del campo Clasificación

 

 9. Podremos observar que únicamente se muestran los términos de clasificación de un Anuncio. Lo bueno es que con esto no hemos alterado la columna de sitio, es decir que cada lista que creemos podrá utilizar esta misma columna y editarla de la misma manera para que solo seleccione los términos que le correspondan.

 10. Ahora solo nos quedamos configurar a nuestra lista como catálogo. Seleccionamos Configuración del catálogo

 

 11. Seleccionamos Habilitar esta biblioteca como catálogo y Habilitar acceso anónimo.

 

 12. En campos de dirección URL de elementos del catálogo, seleccionamos nuestro campo de URL, en este caso URL del Anuncio. Y en jerarquía de Navegación seleccionamos nuestro campo Clasificación.

 

 13. Ahora nos dirigimos al Portal web de publicación el cual consumirá a los catálogos. Nos vamos a Configuración del sitio y seleccionamos Administrar conexiones al catálogo.

 

 14. Damos clic en Conectar a un catálogo.

15. Ubicamos nuestro catálogo de Anuncios y damos clic en Conectar.

 

 16. Dejamos marcado Integrar el catálogo en mi sitio, mediante esta opción se crearán URL relativas al Portal actual que será generadas mediante el campo de URL del catálogo.

17. En Jerarquía de la Navegación se mostrará automáticamente nuestro campo Clasificación y en Término raíz de la Jerarquía se mostrará también el término Anuncios.

18. Debemos marcar el check incluir término raíz en la navegación del sitio. Así se mostrará en la navegación en el primer Nivel Anuncios y en el segundo Nivel los términos de clasificación de los Anuncios.

19. Todo lo demás quedará por defecto. 

 20. Aquí podremos apreciar el resultado.

21. En la navegación del Portal podremos observar que ya se generó correctamente la replica del término Anuncios con su respectivo subtérmino.

 

22. Si deseamos que no se muestren los Anuncios en la navegación podemos desactivar la navegación global y local para el término Anuncios. 

Espero haya sido de utilidad!

Configurando variantes con Managed Navigation en SharePoint 2013 – Parte 2

En el post anterior (http://geeks.ms/blogs/marchena/archive/2015/01/24/configurando-variantes-con-managed-navigation-en-sharepoint-2013-parte-1.aspx), se explicó el procedimiento para configurar variantes en SharePoint Server 2013. En este post se explicará como configurar la navegación administrada e integrarla con las variantes.

La navegación administrada en SharePoint 2013 permite gestionar la navegación de un portal mediante el uso de términos y subtérminos de clasificación de contenidos. Es un mecanismo mucho más flexible que la navegación estructural que era muy limitada.

A continuación se explicará el paso a paso de la configuración de la navegación administrada y la sincronización entre sitios de variantes.

1. Primero ingresamos a nuestro sitio web de origen y vamos a la configuración del sitio.

2. Debajo de Aspecto damos clic en Navegación.

 3. Veremos que por defecto el sitio ya estará configurado con Navegación administrada

 

 4. En la parte inferior en Navegación administrada conjunto de términos veremos que existe el conjunto de términos Navegación de variantes que corresponde al sitio web de origen, así mismo veremos que se creo otro conjunto de términos para el sitio web de destino (Navegación de variantes (en-us)).

5. Damos clic en Herramienta de administración de almacén de términos para crear los términos que definirán nuestro árbol de navegación.

 

 6. En Navegación de variantes creamos nuestro árbol de navegación basado en términos y subtérminos. 

 

7. Al guardar los cambios podremos observar que en nuestro sitio web de origen ya se muestran los términos de navegación.

 8. Ahora creamos todas las páginas basados en los Page Layouts que deseemos ya que estas páginas serán asociadas a los términos de navegación antes definidos.

 9. Una manera de asociar las páginas a los términos de navegación es ir a la pestaña Página y dar clic en la opción Direcciones URL de página.

 10. A continuación dar clic en Agregar una dirección URL descriptiva a esta página.

11. Aquí seleccionaré el término que representará la ubicación de nuestra página en el árbol de navegación. Clic en Agregar.

 12.  Podremos ver que ya se encuentra la dirección especificada.

13. Ese procedimiento debemos realizarlo por cada una de las páginas. Ahora si queremos sincronizar los cambios podemos forzar la ejecución del timer job Variations Propagate Page Job Definition.

14. Si volvemos a la herramienta de administración de términos, veremos ahora que los términos se sincronizaron con éxito.

15. Por último, en la Navegación de variantes empleada por el sitio web de origen, por cada uno de los términos y subtérminos deberemos especificar el nombre de la etiqueta para el idioma Español e Inglés.

 

 16. Aquí vemos como se configura el valor de la etiqueta en Inglés.

 17. Una vez configuradas las etiquetas, solo nos queda ver los resultados. Un punto interesante de las variantes es que el Portal web muestra por defecto sitio web del idioma que tenga configurado en su sistema. Por ejemplo, si la configuración del idioma es Español (Perú).

 18. Cuando ingresamos al Portal, automáticamente seremos redirigidos al sitio web http://portal/es-pe/, donde a su vez podemos apreciar la navegación en idioma español. 

 

19. Si en cambio nuestra configuración de Idioma es English (United States).

 20. Automáticamente seremos redirigidos al sitio web en Inglés http://portal/en-us/ y se podrá apreciar la navegación en idioma Inglés. Esto debido a que manualmente especificamos el nombre del término tanto para el idioma Español como el idioma Inglés.

Y Listo. Eso fue todo, espero haya sido de utilidad!

Configurando variantes con Managed Navigation en SharePoint 2013 – Parte 1

Uno de los requerimientos más comunes para implementaciones de portales web públicos que son accedidos desde distintas partes el mundo, es el de tener la capacidad de presentar el contenido en distintos idiomas.

SharePoint Server 2013, incorpora esta capacidad mediante la característica de Variantes. Las Variantes en SP2013 permiten que un usuario de acuerdo a la configuración de idioma de su máquina pueda visualizar el contenido de un Portal web en el idioma que corresponda. Es decir, si alguien accede desde un equipo en EEUU cuya configuración por defecto es en idioma Inglés, al acceder al portal, verá el contenido en Ingles, lo mismo con cualquier otro idioma que haya sido definido en la configuración de variantes en SharePoint.

Las variantes en SP2013 funcionan de la siguiente manera:

a. Se dispone de un sitio web conocido como origen, desde donde se crean las páginas y contenidos en el idioma original (Ej. Español).

b. Se crean etiquetas por cada otro idioma al que quiera ser traducido el contenido. Por ejemplo, podríamos crear una etiqueta para el idioma Inglés.

c. Mediante un Timer Job se crear automáticamente un sitio web por cada etiqueta de Idioma. Estos sitios web son los sitios de destino.

d. Cada vez que se publica una página nueva en el sitio web de origen, mediante un timer job que se ejecuta cada 15 minutos, la página se recrea en modo draft en el/los sitio(s) web de destino.

e. El contenido en el sitio web de destino se muestra en modo draft hasta que no sea traducido manualmente y publicado. 

Ese es el proceso básico como funcionan las variantes en SP2013, a este proceso se puede añadir el Machine Traslation Service para realizar traducciones automáticas mediante el traductor de Bing o también incorporar la navegación administrada.

En este primer post, explicaré el procedimiento paso a paso para configurar las variantes de un sitio web de origen en español y un sitio web de destino en Ingles.

 1. Primero debemos disponer de una colección de sitios basada en el Publishing Site Template.

2. A continuación vamos a configuración del sitio.

 

 2. Debajo de características de la colección de sitios seleccionamos Configuración de variantes.

 3. En configuración de variantes dejamos todas las opciones por defecto y damos clic en Aceptar.

 4. A continuación debajo de características de la colección de sitios damos clic en Etiquetas de variantes.

 5. Damos clic en Nueva etiqueta.

 6. Vamos a crear nuestra etiqueta de origen para lo cual seleccionamos nuestro idioma de origen que en este caso sería Español, la configuración regional que sería Español (Perú) y el nombre de etiqueta que sería es-pe.

 7. En Nombre para mostrar mantenemos Español (Perú) y en Plantilla de sitio de publicación utilizaremos Sitio de publicación con flujo de trabajo.

 8. Al dar clic aparecerá el mensaje “Sus nuevas variaciones están en camino”. Dar clic en Aceptar.

 

 9. Podremos ver que se registro la etiqueta pero en la Jerarquía creada dice No. Esto es porque se ejecuta un Timer Job que es el encargado de crear la Jerarquía.

 

 10. Una vez que se ejecuta el Timer Job, automáticamente Jerarquía creada cambia a Si.

 

 11. A continuación crearemos otra etiqueta, esta será la etiqueta de destino. En Idioma de la plantilla del sitio seleccionaremos Inglés, en Configuración regional seleccionamos Inglés (Estados Unidos) y damos clic en Continuar

 

 12. En Nombre de etiqueta especificamos en-us, Nombre para mostrar Inglés (Estados Unidos) y en Creación de Jerarquía dejamos marcado Sitios de publicación, listas con variantes y todas las páginas.

 13. En Opciones de traducción dejamos las opciones por defecto marcadas, tanto para Crear paquete de traducción como traducción automática. Asumimos que disponemos del servicio de Machine Translation en nuestra infraestructura. En este post no hablaremos de este servicio.

 14. En comportamiento de etiqueta de destino, dejamos la opción por defecto. Mas adelante la podemos cambiar. Damos clic en Continuar.

 15. Se mostrará la configuración final de la etiqueta damos clic en Finalizar.

 16. Podremos observar ahora que se muestra la etiqueta de origen (Español) y la etiqueta de destino (Inglés).

 17. Ahora para generar la creación del sitio web de origen y destino, damos clic en Crear jerarquías, aparecerá el mensaje “Sus nuevas variaciones están en camino“. Clic en Aceptar.

 18. Se ejecutará el timer job, una vez finalizado podremos ver que sobre la colección de sitios se crearon 2 sitios web, Español (Perú) que será el sitio web de origen e Inglés (Estados Unidos), que será el sitio web de destino.

 19. Como queremos que la actualización de las páginas del origen al destino la hagamos manualmente, cambiamos la configuración de la etiqueta y en Comportamiento de actualización de páginas especificamos Actualizaciones manuales.

 20. Ahora entramos al sitio web de origen (http://portal/es-pe).

 21. Para probar la sincronización de páginas, editamos la página principal y Protegemos lo cambios.

22. Protegemos la página. 

23. Publicamos el borrador.

 24. Como en la configuración inicial seleccionamos la plantilla de aprobación de páginas mediante flujo de aprobación, aparecerá el formulario de flujo, damos clic en Iniciar.

25. El Aprobador deberá dar clic en Aprobar. Tener en cuenta que en el sitio web existirá un grupo llamado Aprobadores, solo los usuarios que pertenezcan a este grupo podrán aprobar las páginas para la publicación.

26. Debido a que configuramos la sincronización manual, debemos manualmente indicar que cree la página o que la actualice, en la pestaña Publicar dar clic en Actualizar todos los objetivos si queremos actualizar los cambios o Crear nuevo destino si es que hemos creado una página nueva.

 

27. Como comenté con anterioridad existen distintos Timer Jobs que se ejecutan cada tiempo, a continuación son descritos:

1. Variations Create Hierarchies Job Definition: Se encarga de crear los sitios web de origen y de destino cuando se crear por primera vez la etiqueta.

2. Variations Propagate List Ítems Job Definition: Se encarga de sincronizar los elementos de lista o documentos de bibliotecas entre sitios web origen y destino.

3. Variations Propagate Job Definition: Se encarga de sincronizar las páginas web entre sitios web de origen y destino.

4. Variations Propagate Sites and Lists Timer Job: Se encarga de sincronizar la creación de listas, bibliotecas y/o subsitios en los sitios web de destino.

 28. Para replicar los cambios podemos forzar la ejecución de Variations Propagate Page Job Definition.

 29. Podremos ver que la página se replicó con éxito.

 En el siguiente post, veremos como integrar la capacidad de navegación administrada con las variantes.

Configurando biblioteca de documentos como catálogos – Parte 1

SharePoint 2013 ha incorporado mejoras significativas en cuanto a las capacidades para implementar portal web públicos. Uno de los cambios más grandes ha sido las mejoras en cuanto a su Arquitectura de búsqueda después de haber integrado las capacidades de FAST Search, así como también las técnicas de publicación de contenidos web, presentación y personalización de los mismos en portal web públicos.

La incorporación del modelo de cross-site publishing ha sido uno de los cambios más significativos que ha tenido SharePoint 2013 en cuanto a Web Content Management.

Cross-site publishing permite gestionar contenidos de múltiples site collections y ser expuestos en un único site collection haciendo uso de las capacidades del motor de búsqueda. Es decir, existe una separación lógica entre contenidos y presentación gráfica.

Con XSP aparece el concepto de catálogos. Un catálogo es una lista o biblioteca cuyo contenido puede ser expuesto para ser presentado en otros site collection. Para presentar su contenido este debe previamente ser rastreado y considerado dentro del índice de SharePoint.

A continuación describiré los pasos para configurar una biblioteca de documentos que se encuentra en un site collection como un catálogo y exponer su contenido en otro site collection que representará el portal web de publicación. En esta primera parte también veremos como emplear las columnas de mi biblioteca de documentos como refinadores para generar una interacción más enriquecida con los contenidos.

 1. Primera creamos una biblioteca de documentos, creamos un tipo de contenido con las columnas que deseemos y subimos algunos documentos y ejecutamos un rastreo Full.

 2. Los campos pueden ser de distintos tipos. Como pueden ver tengo algunos campos que son del tipo metadatos administrados.

3. A continuación entramos a la configuración de la biblioteca y seleccionamos Configuración del catálogo (Catalog settings).

4. En Catalog Settings seleccionamos Enable this library as catalog y presionamos el botón de Enable anonymous Access para que los contenidos puedan ser consultados por un usuario anónimo.

 5. A continuación seleccionamos los campos que deseemos que formen parte de la URL. En Este caso podemos seleccionar cualquier campo como referencia pues realmente no generaremos una URL específica para los documentos, la URL se mantendrá del repositorio de documentos la cual deberá ser una URL pública.

 

  6. Ahora nos vamos a nuestro site collection empleado como portal público.

 

7. Vamos a las opciones de configuración del site collection. 

 8. Debajo de Administración de sitios damos clic a Administrar conexiones al catálogo.

 9. Damos clic en conectar a un catálogo.

 10. Aparecerá nuestra biblioteca de documentos y damos clic en Conectar.

 10. Seleccionamos la opción Conectar, pero no integrar el catálogo. Esto debido a que no queremos que forme parte de la navegación como cualquier otro catálogo, solo queremos mostrar los documentos y sus metadatos en un Content by Search WebPart o un Result Search WebPart.

 11. Todas las demás opciones se mantienen por defecto.

 

 12. Ahora creamos una nueva página e insertamos nuestro Search Result WebPart.

 

 13. En la configuración del Search Result WebPart seleccionamos de la lista el catálogo que acabamos de conectar.

 14.  Ahora veremos los documentos de mi biblioteca de documentos en el Result Search WebPart.

 15. Ahora vamos a agregar nuestro WebPart “Panel de refinamiento“, pero para mostrar a las columnas de nuestra biblioteca como refinadores, primero debemos configurar las propiedades administradas asociadas a estas columnas. Para esto nos vamos a nuestro site collection donde está nuestra biblioteca de documentos y vamos a las opciones de configuración del sitio.

 

 16. En Site collection Administration seleccionamos Search Schema.

 

 17. Vemos las propiedades administradas por defecto. Cuando nosotros ejecutamos un full crawl, automáticamente se crean propiedades administradas asociadas a las columnas que hemos rastreado. El problema es que estas propiedades administradas por defecto no están configuradas para ser empleadas como refinables o para ordenar.

 18. SharePoint por defecto ya tiene 20 propiedades administradas por tipo de dato (string, date, integer, decimal, etc.), que ya están configuradas como refinables y con capacidad de ordenamiento. En ese sentido, nosotros podemos reutilizar estas propiedades administradas y únicamente asociar a nuestra columnas rastreadas. Un vez asociadas las columnas, podemos ejecutar un nuevo full crawl.

 

19. Edito la propiedad administrada del tipo de dato que desee y agregado la propiedad rastreada que desee.

 

 20. Ahora vuelvo a mi página y agrega el panel de refinamiento. Por defecto muestra algunos refinamientos nativos.

 

 21. Edito el WebPart de Panel de refinamiento y doy clic en Elegir refinadores…

 22. Elijo los metadatos administrados que desee. En este caso los metadatos RefinableDate#, RefinableString#, etc.

 23. Puedo presionar el botón Vista previa de los refinadores…

 24. Se mostrará una vista previa de como quedarían. 

 25. Y finalmente el resultado esperado.

SharePoint 2013 – Empleando Sinónimos en resultados de búsqueda

SharePoint 2013 ha traído múltiples mejoras al incorporar de manera integrada las funcionalidades soportadas por el producto FAST Search for SharePoint el cual en versiones anteriores se implementaba de manera independiente a SharePoint muchas veces en granjas complejas de acuerdo a las necesidades del negocio. Con la incorporación de estas características, así mismo la topología de búsqueda y componentes que la conforman ha evolucionado.

En este post hablaré de una funcionalidad muy útil cuando queremos mejorar la calidad de los resultados de búsqueda que nos ofrece nuestro buscador.

Típicamente cuando realizamos búsquedas utilizamos palabras que no necesariamente están especificadas en el contenido publicado, pero que si guardan relación y que muchas veces son sinónimos. Por defecto SharePoint no identifica que nos estamos refiriendo a un mismo concepto, por lo cual requiere apoyo por parte de nosotros.

SharePoint 2013 nos ofrece la posibilidad de mantener un listado de sinónimos e importarlos en el motor de búsqueda de tal manera que cuando alguien realice búsquedas no solo se muestren como resultado los contenidos que coincidan con palabras específicas, sino también contenido con sinónimos de la palabra o palabras buscadas.

A continuación explicaré el paso a paso:

1. Para probar esta funcionalidad cree una biblioteca documental y subí documentos de distintos formatos. Como se puede apreciar algunos tienen en el título la palabras SharePoint y otros solo SP o SP2013, etc. El objetivo es que cuando alguien busque SharePoint o SP, se muestren todos los documentos que he cargado en esta biblioteca.

2. Si hago una búsqueda vamos a observar que solo se muestran los documentos que exactamente coinciden con la palabras buscada.

Lo mismo pasa si busco solo “SP“.

 3. A continuación tengo que crear un archivo que tenga como estructura Key,Synonym,Language.

Key: es la palabra que se buscará desde el Search Center.

Synonym: Representa al sinónimo de esta palabra. Es decir si alguien busca SharePoint también se mostrarán los resultados que contengan SP 2013. Si quiero utilizar más sinónimos tengo que agregarlos línea por línea como se ve en la imagen.

Language: Hace referencia al lenguaje al cual esta asociado. Mi SharePoint esta instalado en español y tiene language pack en ingles, para no generar conflictos ese tercer campo no lo completo, pues no es obligatorio.

4. El archivo lo guardo como csv y en Encoding selecciono UTF-8.

5. A continuación guardo el archivo en una carpeta compartida. A la cuenta con privilegios de administrador del Search Service Application le doy privilegios para acceder a este archivo. La cuenta que podríamos emplear para evitar cualquier conflicto de accesos puede ser la cuenta de la granja.

 6. Después ejecuto la consola de PowerShell de SP2013 en modo administrador (Debo estar logueado con el farm account) y digito los siguientes comandos:

$searchApp = Get-SPEnterpriseSearchServiceApplication -Identity “<ID Search Service Application>. (El Id solo es necesario si tengo mas de un Search Service Application y puedo obtenerlo al digitar el comando Get-SPEnterpriseSearchServiceApplication y ver el Id de mi Search Service Application).

Import-SPEnterpriseSearchThesaurus -SearchApplication $searchApp -FileName “<UNC donde esta el archivo>“. (Es obligatorio utilizar el formato UNC, el formato UNC es: \<SERVER><Folder><file.csv>).

7. Finalmente sin necesidad de hacer un rastreo o un cambio adicional podemos probar buscar la palabra SharePoint o SP y obtendremos los mismos resultados.

 

 Igual en SP!

Espero haya sido de utilidad!

 

Reusable content en Web Content Management Portals con SharePoint 2013

SharePoint 2013 ofrece múltiples capacidades para gestión de contenidos web. Las características soportadas en la última versión están orientadas a dar agilidad en el proceso de publicación de contenidos principalmente para portal web públicos en Internet.

Una de las características ya existentes desde la versión 2007, pero que no es muy difundida, es el uso de los contenidos reutilizables. Un contenido reutilizable puede ser una tabla con un formato en particular, un pie de página o cabecera, o cualquier otra sección que pueda ser comúnmente insertada en los contenidos que deseamos publicar. Combinar esta capacidad con muchas otras mas como el uso de listas, versiones, aprobación y rechazo de contenidos, inserción de contenido multimedia, entre otras características, logramos aprovechar una robusta solución de web content Management.

 A continuación detallo los pasos para habilitar y emplear esta funcionalidad:

1. Primero debemos habilitar la característica “Infraestructura de publicación de SharePoint Server” a nivel de colección de sitios.

 2. A continuación debemos habilitar el Feature “Publicación de SharePoint Server” a nivel de sitio.

3. Luego debemos verificar que se haya creado la lista de Contenido reutilizable. En esta lista podremos crear todos los tipos de contenidos que deseemos reutilizar, pueden ser contenidos de texto como podrían ser contenidos HTML mucho más elaborados.

4. Luego debemos crear una columna en donde insertaremos y almacenaremos contenido reutilizable.

5. La columna debe ser del tipo Contenido HTML completo con formato y restricciones para publicación.

6. Posteriormente debemos agregar la columna de sitio a la lista desde donde almacenaremos el contenido reutilizable.

 

 7. Verificamos que la columna se encuentre asociada a la lista correctamente. 

 8. Al posicionarlo sobre el tipo de columna, veremos que en el ribbon en la pestaña INSERTAR se habilitará el botón de Contenido reutilizable y podremos utilizar los contenidos que hayamos creado.

 

 Y listo!