Habilitar Uso Compartido Externo en SharePoint Online Programáticamente - Blog de David Alonso. Microsoft SharePoint, Office 365, Azure y otras tecnologías Microsoft

Blog de David Alonso. Microsoft SharePoint, Office 365, Azure y otras tecnologías Microsoft

Microsoft SharePoint, Azure, Office 365

martes, 3 de marzo de 2020

Habilitar Uso Compartido Externo en SharePoint Online Programáticamente


Cómo habilitar Uso Compartido Externo en una colección de sitios de SharePoint Online


habilitar uso compartido sharepoint online

¿Que es el Uso Compartido?

SharePoint Online permite compartir el contenido de una colección de sitios con personas de fuera de la organización como pueden ser clientes o proveedores.  Para habilitar el uso compartido de una colección de sitios, hay que hacer lo siguiente:
  • Desde la página de Sitios activos del panel de administración de SharePoint moderno, hacer clic en el sitio (colección de sitios) para el que se desea activar el uso compartido.
  • Seleccione el sitio.
  • Hacer clic en uso compartido en el menú superior.
  • A continuación aparecen las siguientes opciones:  

habilitar-uso-compartido-sharepoint-online

Más información sobre el uso compartido aquí.

Habilitar uso compartido externo programáticamente

Las mismas opciones que hemos visto en el apartado anterior, pueden realizarse mediante código fuente C#. Por ejemplo, desde una Azure Function se podría modificar el uso compartido mediante código c#.  Si no conocéis que es una Azure Function, dejo aquí un post de como crear una desde cero. 


A continuación os dejo una función para modificar el uso compartido externo:

      
public static void ConfigureExternalSharing(string site, string userSp , string passwordUserSP)
        {            
                ClientContext ccTenant = new AuthenticationManager().GetSharePointOnlineAuthenticatedContextTenant("https://dalonsoblog.sharepoint.com/",userSP, ConvertStringToSecureString(passwordUserSP));
                var _tenantAdmin = new Tenant(ccTenant);
                SiteProperties _siteprops = _tenantAdmin.GetSitePropertiesByUrl(site, true);
                ccTenant.Load(_tenantAdmin);
                ccTenant.Load(_siteprops);
                ccTenant.ExecuteQuery();
                _siteprops.SharingCapability = SharingCapabilities.ExternalUserAndGuestSharing;
                _siteprops.Update();
                ccTenant.ExecuteQuery();
                ccTenant.Dispose();           
        }

La línea importante es:

   _siteprops.SharingCapability = SharingCapabilities.ExternalUserAndGuestSharing;

Donde ConvertStringToSecureString es una función que he implementado para convertir la password de un string a un SecureString. 

   
private static SecureString ConvertStringToSecureString(string s)
        {
            var secure = new SecureString();
            for (int i = 0; i < s.Length; i++)
            {
                secure.AppendChar(s[i]);
            }
            return secure;
        }


Las opciones que se pueden indicar en la propiedad SharingCapability son:
https://docs.microsoft.com/en-us/previous-versions/office/sharepoint-csom/dn174825(v%3Doffice.15)


  • SharingCapabilities.Disabled 
  • SharingCapabilities.ExternalUserSharingOnly 
  • SharingCapabilities.ExternalUserAndGuestSharing SharingCapabilities.ExistingExternalUserSharingOnly

No hay comentarios:

Publicar un comentario