[SharePoint] Saber si un usuario es externo a nuestra organización (FBA) en una aplicación basada en claims

Tenemos una intranet que como requerimiento indespensable se pide poder invitar a usuarios externos a la organización/empresa a participar en la intranet. Para ello lo primero que necesitamos es cambiar el modelo de autenticación clásica a claims y habilitar un FBA para que los usuarios externos puedan registrarse y acceder. Los usuarios internos mandarán invitaciones por correo electrónico a los usuarios externos (Partners, clientes…) para participar en ciertos sitios de la intranet. Los usuarios recibirán una invitación en su correo con una url en la que se podrán registrar y accederán al portal. En ciertas partes de nuestro código necesitamos identificar si el usuario es un usuario de dominio (interno) o un usuario de FBA (externo).

Para ello podemos usar la siguiente función:

private bool IsExternalUser(string loginname)

{

    var response = false; 

    

    var spClaimProviderManager = SPClaimProviderManager.Local; 

    

    if (spClaimProviderManager != null)

    {

        var userLogonNameClaim = spClaimProviderManager.DecodeClaim(loginname); 

        var issuerType = SPOriginalIssuers.GetIssuerType(userLogonNameClaim.OriginalIssuer);

 

        if (issuerType != SPOriginalIssuerType.Windows)

            response = true;

    }

 

    return response;

}

Pasando el loginname de la propiedad SPUser.LoginName podremos saber si el usuario es de nuestra organización o externo y así poder hacer algún de tipo de operación especial con él o con la información que tratamos.

Un saludo y espero que os sirva!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *