Date de publication initiale de l’article : jeudi 31 mars 2011

J’ai effectué cette tâche de différentes manières durant ces 12 derniers mois, mais j’ai fini par décider qu’il fallait l’effectuer une bonne fois pour toutes de la « bonne manière ».  La tâche est relativement simple : lorsque votre fournisseur de revendications personnalisées est appelé, comme par exemple durant l’augmentation de revendications, et que vous souhaitez savoir de quel genre d’utilisateur il s’agit (revendications Windows, revendications FBA ou revendications SAML), comment procéder ?  Plutôt que de vous présenter les différentes méthodes que j’ai appliquées par le passé, voici un petit bloc de code qui résume la bonne façon de procéder.

 

//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

}

 

Ce code étant relativement simple, je pense qu’il ne me sera pas nécessaire d’ajouter beaucoup de commentaires.  Dans le cas présent, le paramètre « entity » utilisé dans la méthode DecodeUserIdentifierClaim a été passé dans le cadre de ma substitution de FillClaimsForEntity (c’est-à-dire l’augmentation de revendications) dans mon fournisseur de revendications personnalisées.  La méthode illustrée ici devrait fonctionner correctement n’importe où dans un fournisseur de revendications personnalisées.

Ce billet de blog a été traduit de l’anglais. L’article d’origine se trouve à l’adresse How to Get the Real Original Issuer for an Identity Claim in SharePoint 2010