jueves, 31 de mayo de 2012

Búsquedas SharePoint 2010 con autentificacion basada en Claims

Hace un par de meses en un proyecto tuve que configurar una granja de búsquedas en SharePoint 2010. esto no tiene mucha complejidad, pero como siempre hay un pero la autentificacion de este portal es basada en Claims y no solo eso, este también usa federetion services ADFS 2.0.
Requisito:Necesitamos indexar un web aplication cuya autentificacion solo es basa en claims.

Problema: Al utilizar la autentificacion basada en claims los servicios de "Búsqueda de SharePoint  Foundation o Busquedas de SharePoint Server" se ejecutan con un usuario de windows por este motivo cuando estos servicios intentan indexar el contenido nos da un error por no usar autentificacion basada en claims.
Solución: La solucion es extender el web aplication con atentificacion basada en windows. y por mas seguridad con Zona intranet.


Solución: Se creara una extencion al Web aplication que se quiere indexar y rastrear, esta estencion es capas de acceder al contenido del web aplication, por acceder con autentificacion basada en windows


Como hacerlo:





1) Lo primero es agregar entradas en nuestro DNS.
Esto no sirve por si queremos cambiar nuestra granja o servidor de búsquedas rápidamente de servidor
si tenemos un balanceador de carga en la entrada ip adrees colocamos la ip de el balancer.

2) Extender el Web Aplication.
hay dos formas de hacer la extencion una es desde la administración central y otros desde powershell
En el caso de hacerlo por la administración central hay un pequeño bug en sharepoint. Que mas adelnate describo. Por esta razón veremos los dos casos de hacer una extencion para mi gusto es fiable hacerlo desde powershell.

a) Desde Administración Central




Con esto tenemos listo un nuevo pool el cual puede indexar el contenido de portal servicesdesk.
¿Porque esta extencion puede indexar el contenido?
Primero repasemos que es una extencion es el mecanismo de sharepoint para que puedamos acceder a un portal de múltiples maneras. Es decir hay varias entradas en IIS con una sola base de datos de contenido.
Y contestando a la pregunta este extencion puede acceder al contenido de nuestro webaplication sin ningún problema a la autentificacion.

b) Desde PowerShell

$Url="http://searchservice-servicedesk.ryasoft. com"
$Name="Nombre del portal"
$
HostHeader="
searchservice-servicedesk.ryasoft. com
"


$Port= 111

$ZoneType="Intranet"
$UrlExtend=[Url del sitio que se quiere extender]


Get-SPWebApplication –Identity $Url | New-SPWebApplicationExtension -Name $Name -HostHeader $HostHeader -Port $Port -Zone $ZoneType -Url $UrlExtend

Con este scrip podemos extender el webaplication con toda certeza que no va ha duplicar entradas en el IIS

3) Configurar Conten Source







Con eso tenemos listo nuestro origen de contenido

4) Ejecutar Rastreo

Con esto tenemos listo nuestro portal para poder realizar búsquedas
En los siguientes pos aremos algo mas complejo con Scopes y desarrollar búsquedas personalizadas

Espero que les guía les sirva.
Salu2
Aldo Flores
@alduar
























lunes, 28 de mayo de 2012

Instalar estilos desde un WSP "SharePoint 2010" parte 2

Continuando con el post...
a). Que nos falta hacer concluir el desarrollo de proyecto DeployHelper.
b). Configurar el proyecto donde se tienen los módulos.
c). Desarrollar un Scrip de powershell para instalar el WSP.

13) Agregamos una clase en el proyecto DeployHelper con el nombre de "HelperSharePoint.cs". Esto es para tener mas organizada la solución.


Nota: este método puede estar en la misma clase pero siempre es importante tener el código lo mas organizado posible.

14) Escribimos el siguiente cogido.

15) Agregamos mas funcionalidad a nuestra extencion.del paso 12

Agregamos este código


16) En el paso 12 hay un función que se llama validate la cual es una extencion de un XAttribute
como se ve en la siguiente imagen.

17) Desarrollar la extencion Validate



Nota:Lo que esta extencion hace es si el elemento esta vació coloca un carácter vació. esto es como leemos de un documento xml puede que haya un error al acceder a los datos del mismo. por este motivo decidí proteger este caso.

Con esto tenemos finalizado el proyecto DeployHelper.
Como esta dll va estar registrada en la GAC "Global Acembli Cache" necesitamos configurar algo en nuestro proyecto dichos pasos los describo aquí.

a) Boton derecho en el proyecto DeployHelper "propiedades" Firma y click en firmar ensamblado

Con esto en emsamblado puede ser registrado en la GAC

b) Registrar DeployHelper.dll
Abrimos un símbolo de sistema con privilegios de administrador y vamos a la ruta
"C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\NETFX 4.0 Tools"
ahí ejecutamos el siguiente comando.
gacutil -i "ruta proyecto"\DeployHelper\bin\[Debug,Release]\DeployHelper.dll -f
con esto tenemos registrado el ensamblado en la GAC.

18) Agregar la referencia a DeployServiceDesk

Con esto tenemos disponible la extencion para actualizar los archivos en los mudulos.

19) Agregamos el Using para poder usar la extencion dentro los eventos.

20) Agregar extencion en el evento FeatureActivated.

Con esto tenemos concluido el desarrollo. en el siguiente post haremos la configuración para generar el paquete.

Saludos
Aldo Flores
@aduar




















sábado, 26 de mayo de 2012

JailBreak 5.1.1 untethered

El pasado viernes por fin han liberado el jailbrak 5.1.1 untethered "Es decir no perdemos el jailbrak al reiniciar o apagarlo".


Aquí dejo una guía exprés para hacer el jailbrak yo lo hecho en 4 dispositivos y funciona perfectamente.
a) iPhone 4s
b) iPhone 4
c) iPhone 3gs
d) iPad 2
Que Hacer
1) Descargar Absinthe 2.0
Si usas Mac OS X: https://sites.google.com/site/greenpois0nabsinthe/absinthe-mac-2.0.2.dmg?attredirects=0&d=1
Si usas Windows:https://sites.google.com/site/greenpois0nabsinthe/absinthe-win-2.0.2.zip?attredirects=0&d=1
2) BackUp de nuestro dispositivo

3) Actualizar a la versión 5.1.1 Desde el iTunes o desde nuestro dispositivo.



5) Ejecutar Absinthe 2.0


Nota: Es muy importante que "antes" de ejecutar Absinthe 2.0 desabilitemos el passcode lock de nuestro dispositivo.

Y con esto tenemos JB para el IOS 5.1.1
Saludos
alduar
@alduar










viernes, 25 de mayo de 2012

Instalar estilos desde un WSP "SahrePoint 2010" parte 1

En el ultimo proyecto en donde estoy colaborando ha surgido la necesidad de tener vercionados los estilos.
Esto pares ser una tarea muy rápida y simple pero no lo es....
Requisito: Necesitamos enviar al equipo de instalación un paquete "WSP" con las actualizaciones de los estilos.(CSS, JPG Jscrips)
Problemas:Al ser imágenes  y estilos esto tiene un flujo de aprovacion, por esta razon no actuliza solo agrega los nuevos itmes.
Solución: Con Visual Studio creamos un modulo con su receptor de eventos y creamos un proyecto de clases el cual tendra un Helper para la instalación.
Como hacerlo:
1) Creamos un nuevo proyecto de tipo SharePoint vació.
En este caso lo llamaremos DeployServicedesk.
2) Agregamos al Proyecto DeployServicedesk un "modulo"
Por tratarse de la librería de estilo nombramos nuestro modulo lo llamaremos "Style Library"


3) Agregamos al proyecto DeployServicedesk otro modulo.


En este modulo se encontraran los java scrips necesarios para nuestra Liberia de estilos. que llamaremos dvtAssets

Por ultimo para tener nuestra arquitectura lógica agregamos un nuevo proyecto de tipo biblioteca de clases.

Este proyecto se llamara "DeployHelper"

En el explorador de soluciones no tien que quedar algo como esto.
Dentro de modulo Style Library agregamos una nueva carpeta donde estarán nuestras imágenes y hojas de estilo para nuestro portal SharePoint.
nota: aquí agregaremos n carpetas como n estilos tenga nuestro webaplication.
Para el caso de este post,.Y para que no  se haga cansado y largo; solo agregaremos una carpeta con unas cuantas imágenes y css.

5) Agregar Carpeta y contenidos de nuestro estilo(jpg, png, ico, css...) 
haasi tendría que verse nuestra carpeta de estilo personalizado.
hasta qui todo es muy simple y nada complicado. En los sigientes pasos es cuando esto se pone divertido y tenemos que usar un poco nuestra imaginación y espesamos a desarrollar.

6) En la Feacture agregamos un receptor de eventos para ellos damos click en "Main.Feacture"

Esto nos genera una clase con el nombre de la feacture en nuestro caso.  "Feacture", se renombro a "Main".
Cuyo nombre completo sera MainEventReceiver.cs

7) En este caso como lo que necesitamos es actualizar o agaragar nuevas cosas de nuestro estilo necesitamos agregar código en el evento.

 public override void FeatureActivated(SPFeatureReceiverProperties properties)
  {
            
   }
 Este evento se ejecutara cuando la feacture sea activada. En lo que a nuestro problema respecta aquí tenemos que desarrollar un mecanismo el cual se capas de actualizar o insertar los archivos que contenga nuestra modulo Style Library.

Antes de comenzar con el desarrollo me gustaría explicar el diseño de dicha solución.
En nuestro mudulo tenemos el archivo Elements.xml en el cual esta el path y la url de nuestros archivos esto no servirá como data source en nuestro desarrollo, es decir esto en tiempo de ejecución no servirá para saber cual es su ruta física y cual es su Url en la granja de SharePoint.
Si mas preámbulos a desarrollar.

8) En el proyecto DeployHelper Agregamos una Clase con el nombre SPFeatureReceiverPropertiesExtensions.cs
Esta clase tiene que ser publica y estática.

9) Agregamos referencia a los ensamblados "Microsoft.Sharepoint.Dll" 
"Bonton derecho referencias agregar refrencias..."Pestaña Explorar

Hasta llegar a esta ruta "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\ISAPI\Microsoft.SharePoint.dll"

10) Agregamos Usings en nuestra clase
11) Agregamos un método publico y estático llamado UpdateFilesInModule.
Como lo vamos hacer una extencion de SPFeatureReceiverProperties las firma del metodo queda asi

public static void UpdateFilesInModule(this SPFeatureReceiverProperties instance)
{
}


12) Necesitamos un ojeto el cual contenga la comfiguracion de los archivos del modulo es decir.
Cargamos leemos el Elements.xml en el cual esta toda la configuracion de los archivos necesarios para nuestra biblioteca de estilos.
Con LINQ hacemos esto:

En el siguiente post concluimos con el desarrollo de esta función.....

Saludos alduar
@alduar
.