El siguiente post pretende solucionar una caso de uso típico cuando se construyen sitios públicos en SharePoint.
Si tenemos un sitio público, obviamente tendremos que habilitar el acceso al usuario anónimo. Si lo hacemos, seguramente querremos ocultar la Ribbon de alguna forma, para que el usuario anónimo no vea ningún enlace de “Sign in”.
Pero entonces, ¿Cómo hacemos para que los usuario editores del portal, puedan acceder a la configuración del sitio, crear páginas, etc?
Pues bien, probablemente lo más rápido y sencillo sea decirle al usuario que acceda a una URL específica, protegida, que solicite autenticación al usuario, por ejm:
http://www.contoso.com/_layouts/settings.aspx
Pero la verdad es que no queda muy elegante… y SharePoint tiene mucha clase!!
Otra solución algo más elegante, es hacer uso de las Zonas de SharePoint y sus Authentication Providers.
La idea es que la zona Default, esté configurada para que permita el acceso anónimo. Esta zona responderá al host hearder http://www.contoso.com. A esta url accederá el usuario anónimo.
A continuación, extendemos la aplicación web, creamos la zona “Intranet” y hacemos que responda al host header: http://authoring.contoso.com
Los usuarios administradores y editores, accederán por la parte de Authoring, donde el sistema les solicitará credenciales, y, si hemos ocultado la Ribbon usando la técnica que nos cuenta el gran Santi en este post, tendremos la Ribbon para el usuario logado.
Hacer esto es muy sencillo desde la interfaz de la administración central. Yo aquí os dejo un script Power-Shell para conseguir esta configuración. Como este script lo reutilizo en otros escenarios, este script NO crea la aplicación web con el usuario anónimo habilitado. En este link tenéis muy bien explicado cómo hacerlo desde la interfaz. Si queréis también podéis modificar el script para que el comando New-SPWebApplication especifique el parámetro AllowAnonymousAccess
Os dejo el script:
Primero definimos las variables según nuestro entorno
1 |
<span id="lnum1" style="color: #606060"> 1:</span> # ******** Set variables <span style="color: #0000ff">for</span> WebApp |
1 |
<span id="lnum2" style="color: #606060"> 2:</span> $WebAppName = <span style="color: #006080">"SharePoint - dpa.heroes.lab80"</span> |
1 |
<span id="lnum3" style="color: #606060"> 3:</span> $WebAppHostHeader = <span style="color: #006080">"dpa.heroes.lab"</span> |
1 |
<span id="lnum4" style="color: #606060"> 4:</span> $WebAppPort = 80 |
1 |
<span id="lnum5" style="color: #606060"> 5:</span> $WebAppAppPool = <span style="color: #006080">"SharePoint - dpa AppPool"</span> |
1 |
<span id="lnum6" style="color: #606060"> 6:</span> $WebAppAppPoolAccount = <span style="color: #006080">"HEROESsp_apppool"</span> # This User has to be a Sharepoint Manager Account |
1 |
<span id="lnum7" style="color: #606060"> 7:</span> $WebAppDatabaseName = <span style="color: #006080">"WSS_Content_DPA_LAB"</span> |
1 |
<span id="lnum8" style="color: #606060"> 8:</span> $WebAppDatabaseServer = <span style="color: #006080">"Spiderman"</span> |
1 |
<span id="lnum9" style="color: #606060"> 9:</span> # ******** Set variables <span style="color: #0000ff">for</span> Site Collection |
1 |
<span id="lnum10" style="color: #606060"> 10:</span> $SiteCollectionName = <span style="color: #006080">"DPA desa"</span> |
1 |
<span id="lnum11" style="color: #606060"> 11:</span> $SiteCollectionURL = (<span style="color: #006080">"http://"</span> + $WebAppHostHeader) |
1 |
<span id="lnum12" style="color: #606060"> 12:</span> $SiteCollectionTemplate = <span style="color: #006080">"BLANKINTERNET#2"</span> #see templates: https:<span style="color: #008000">//www.nothingbutsharepoint.com/sites/devwiki/SP2010Dev/Pages/Site%20Templates%20in%20SharePoint%202010.aspx</span> |
1 |
<span id="lnum13" style="color: #606060"> 13:</span> $SiteCollectionOwner = <span style="color: #006080">"HEROESlmanez"</span> |
1 |
<span id="lnum14" style="color: #606060"> 14:</span> #******** Set variables to Extend to Authoring site |
1 |
<span id="lnum15" style="color: #606060"> 15:</span> $authoringSiteName = <span style="color: #006080">"Sharepoint DPA Authoring"</span> |
1 |
<span id="lnum16" style="color: #606060"> 16:</span> $authoringHostHeader = <span style="color: #006080">"authoringdpa.heroes.lab"</span> |
1 |
<span id="lnum17" style="color: #606060"> 17:</span> $authoringPort = 80 |
A continuación un par de funciones para crear la aplicación web y la colección de sitios. OJO, el script detecta si ya existe la app web, y pregunta si se quiere re-crear.
1 |
<span id="lnum1" style="color: #606060"> 1:</span> function CreateWebApplication([<span style="color: #0000ff">string</span>]$WebAppName, [<span style="color: #0000ff">string</span>]$WebAppHostHeader, $WebAppPort, [<span style="color: #0000ff">string</span>]$WebAppAppPool, [<span style="color: #0000ff">string</span>]$WebAppAppPoolAccount, |
1 |
<span id="lnum2" style="color: #606060"> 2:</span> [<span style="color: #0000ff">string</span>]$WebAppDatabaseName, [<span style="color: #0000ff">string</span>]$WebAppDatabaseServer) |
1 |
<span id="lnum3" style="color: #606060"> 3:</span> { |
1 |
<span id="lnum4" style="color: #606060"> 4:</span> Write-Host <span style="color: #006080">"Checking SPWebApplication... $WebAppName"</span> |
1 |
<span id="lnum5" style="color: #606060"> 5:</span> $target = Get-SPWebApplication | Where {$_.Url -eq (<span style="color: #006080">"http://"</span> + $WebAppHostHeader + <span style="color: #006080">"/"</span>)} |
1 |
<span id="lnum6" style="color: #606060"> 6:</span> <span style="color: #0000ff">if</span> ($target -ne $<span style="color: #0000ff">null</span>) |
1 |
<span id="lnum7" style="color: #606060"> 7:</span> { |
1 |
<span id="lnum8" style="color: #606060"> 8:</span> Write-Host <span style="color: #006080">"Removing SPWebApplication..."</span> |
1 |
<span id="lnum9" style="color: #606060"> 9:</span> Remove-SPWebApplication (<span style="color: #006080">"http://"</span> + $WebAppHostHeader) -DeleteIISSite |
1 |
<span id="lnum10" style="color: #606060"> 10:</span> #-RemoveContentDatabases |
1 |
<span id="lnum11" style="color: #606060"> 11:</span> Start-Sleep 5 |
1 |
<span id="lnum12" style="color: #606060"> 12:</span> iisreset /noforce |
1 |
<span id="lnum13" style="color: #606060"> 13:</span> Start-Sleep 5 |
1 |
<span id="lnum14" style="color: #606060"> 14:</span> Write-Host <span style="color: #006080">"SPWebApplication Removed"</span> |
1 |
<span id="lnum15" style="color: #606060"> 15:</span> } |
1 |
<span id="lnum16" style="color: #606060"> 16:</span> |
1 |
<span id="lnum17" style="color: #606060"> 17:</span> Write-Host <span style="color: #006080">"Creating SPWebApplication..."</span> |
1 |
<span id="lnum18" style="color: #606060"> 18:</span> New-SPWebApplication -Name $WebAppName -Port $WebAppPort -HostHeader $WebAppHostHeader -URL (<span style="color: #006080">"http://"</span> + $WebAppHostHeader) -ApplicationPool $WebAppAppPool -ApplicationPoolAccount (Get-SPManagedAccount $WebAppAppPoolAccount) -DatabaseName $WebAppDatabaseName -DatabaseServer $WebAppDatabaseServer |
1 |
<span id="lnum19" style="color: #606060"> 19:</span> Write-Host <span style="color: #006080">"SPWebApplication Created"</span> |
1 |
<span id="lnum20" style="color: #606060"> 20:</span> } |
1 |
<span id="lnum21" style="color: #606060"> 21:</span> |
1 |
<span id="lnum22" style="color: #606060"> 22:</span> function CreateSiteCollection([<span style="color: #0000ff">string</span>]$SiteCollectionName, [<span style="color: #0000ff">string</span>]$SiteCollectionURL, [<span style="color: #0000ff">string</span>]$SiteCollectionTemplate, [<span style="color: #0000ff">string</span>]$SiteCollectionOwner) |
1 |
<span id="lnum23" style="color: #606060"> 23:</span> { |
1 |
<span id="lnum24" style="color: #606060"> 24:</span> # +++++++++++++ Create a <span style="color: #0000ff">new</span> Sharepoint Site Collection |
1 |
<span id="lnum25" style="color: #606060"> 25:</span> Write-Host <span style="color: #006080">"Creating SPSite..."</span> |
1 |
<span id="lnum26" style="color: #606060"> 26:</span> New-SPSite -URL $SiteCollectionURL -OwnerAlias $SiteCollectionOwner -Template $SiteCollectionTemplate -Name $SiteCollectionName |
1 |
<span id="lnum27" style="color: #606060"> 27:</span> Write-Host <span style="color: #006080">"SPSite created"</span> |
1 |
<span id="lnum28" style="color: #606060"> 28:</span> } |
Finalmente, llamamos a las funciones y otros comandos Power-Shell:
1 |
<span id="lnum1" style="color: #606060"> 1:</span> CreateWebApplication $WebAppName $WebAppHostHeader $WebAppPort $WebAppAppPool $WebAppAppPoolAccount $WebAppDatabaseName $WebAppDatabaseServer |
1 |
<span id="lnum2" style="color: #606060"> 2:</span> Write-Host <span style="color: #006080">"Web Application created succesfully"</span> -ForegroundColor Green |
1 |
<span id="lnum3" style="color: #606060"> 3:</span> iisreset /noforce |
1 |
<span id="lnum4" style="color: #606060"> 4:</span> Start-Sleep 30 |
1 |
<span id="lnum5" style="color: #606060"> 5:</span> Write-Host <span style="color: #006080">"IIS Restarted succesfully"</span> -ForegroundColor Green |
1 |
<span id="lnum6" style="color: #606060"> 6:</span> CreateSiteCollection $SiteCollectionName $SiteCollectionURL $SiteCollectionTemplate $SiteCollectionOwner |
1 |
<span id="lnum7" style="color: #606060"> 7:</span> Start-Sleep 10 |
1 |
<span id="lnum8" style="color: #606060"> 8:</span> iisreset /noforce |
1 |
<span id="lnum9" style="color: #606060"> 9:</span> Write-Host <span style="color: #006080">"Site collection created succesfully"</span> -ForegroundColor Green |
1 |
<span id="lnum10" style="color: #606060"> 10:</span> Write-Host <span style="color: #006080">"Extending authoring..."</span> |
1 |
<span id="lnum11" style="color: #606060"> 11:</span> Get-SPWebApplication -Identity (<span style="color: #006080">"http://"</span> + $WebAppHostHeader) | New-SPWebApplicationExtension –Name $authoringSiteName -HostHeader $authoringHostHeader -Port $authoringPort -Zone Intranet -URL (<span style="color: #006080">"http://"</span> + $authoringHostHeader) |
1 |
<span id="lnum12" style="color: #606060"> 12:</span> Write-Host <span style="color: #006080">"Authoring site extended"</span> -ForegroundColor Green |
Espero que os sirva.
Saludos!!
Deja un comentario