Artículo original publicado el jueves, 31 de marzo de 2011

He realizado esta tarea de diversas maneras en el último año pero finalmente decidí que debo hacer las cosas de la forma “correcta”.  La tarea es lo suficientemente simple: cuando invoca al proveedor de notificaciones personalizadas, por ejemplo durante el aumento de notificaciones, y desea saber qué clase de usuarios son: notificaciones de Windows, notificaciones FBA o notificaciones SAML, ¿cómo se hace?  En lugar de describir las distintas formas en que he realizado esta tarea hasta ahora, aquí les muestro un pequeño fragmento de código que resume la forma correcta de llevarla a cabo.

 

//get the claim provider manager

SPClaimProviderManager cpm = SPClaimProviderManager.Local;

 

//get the current user so we can get to the "real" original issuer

SPClaim curUser = SPClaimProviderManager.DecodeUserIdentifierClaim(entity);

 

//get the original issuer for the user

SPOriginalIssuerType loginType = SPOriginalIssuers.GetIssuerType(curUser.OriginalIssuer);

                                 

if (loginType == SPOriginalIssuerType.Windows)

{

//do windows

}

else if ((loginType == SPOriginalIssuerType.TrustedProvider) ||

(loginType == SPOriginalIssuerType.ClaimProvider))

{

//do SAML

}

 

Creo que el código es lo suficientemente claro de manera que no tengo muchos comentarios para agregar.  En este caso, el parámetro "entity" usado en el método DecodeUserIdentifierClaim se pasó como parte de la invalidación de FillClaimsForEntity (es decir, aumentar las reclamaciones) en mi proveedor de notificaciones personalizadas.  El método que se ilustra aquí debería funcionar bastante bien en cualquier lugar en un proveedor de notificaciones personalizadas.

Esta entrada de blog es una traducción. Puede consultar el artículo original en How to Get the Real Original Issuer for an Identity Claim in SharePoint 2010