如何在 SharePoint 2010 中获取标识声明的真正原始颁发者
原文发布于 2011 年 3 月 31 日(星期四)
过去我使用了各种方法来执行此任务,但最终明白使用“对”的方法才是王道。 此任务很简单,调用您的自定义声明提供程序时(如在声明扩充期间),您想知道是哪种用户(Windows 声明、FBA 声明还是 SAML 声明),我们应该如何实现呢? 虽然过去我使用了各种各样的方法,但是在这里我只想提供一个简短的代码段来介绍执行此任务的正确方法。
//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
}
我想代码非常简单,所以不需要添加过多的备注。 在本例中,DecodeUserIdentifierClaim 方法所使用的“entity”参数在我的自定义声明提供程序中作为 FillClaimsForEntity 替代的一部分传入(即扩充声明)。 此处演示的方法适用于自定义声明提供程序中的任何位置。
这是一篇本地化的博客文章。请访问 How to Get the Real Original Issuer for an Identity Claim in SharePoint 2010 以查看原文