Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
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