Como obter o emissor original real para uma declaração de identidade no SharePoint 2010
Artigo original publicado na quinta-feira, dia 31 de março de 2011
Executei esta tarefa de variadas maneiras no passado, mas finalmente decidi que deveria fazer tudo do modo "correto". A tarefa é simples – quando seu provedor de declarações personalizado estiver sendo chamado, como durante as declarações de aumento, e você quiser saber que tipo de usuário eles são - declarações do Windows, declarações FPA ou declarações SAML, como fazemos isso? Em vez de mostrar a você as diversas maneiras como fiz isso no passado, veja um pequeno trecho de código que resume o modo correto de fazer.
//obter o gerenciador de provedor de declarações
SPClaimProviderManager cpm = SPClaimProviderManager.Local;
//obter o usuário atual de forma que possamos obter o emissor original "real"
SPClaim curUser = SPClaimProviderManager.DecodeUserIdentifierClaim(entity);
//obter o emissor original para o usuário
SPOriginalIssuerType loginType = SPOriginalIssuers.GetIssuerType(curUser.OriginalIssuer);
if (loginType == SPOriginalIssuerType.Windows)
{
//criar janelas
}
else if ((loginType == SPOriginalIssuerType.TrustedProvider) ||
(loginType == SPOriginalIssuerType.ClaimProvider))
{
//criar SAML
}
Acho que o código é bastante simples e, portanto, não tenho muitos comentários a adicionar. Neste caso, o parâmetro de "entidade" usado no método DecodeUserIdentifierClaim foi passado como parte de minha substituição de FillClaimsForEntity (isto é, declarações de aumento) em meu provedor de declarações personalizado. O método ilustrado aqui deve funcionar bastante bem em qualquer lugar em um provedor de declarações personalizado.
Esta é uma postagem de blog traduzida. Encontre o artigo original em How to Get the Real Original Issuer for an Identity Claim in SharePoint 2010