SharePoint 2010 で ID クレームの真の本来の発行元を取得する方法
原文の記事の投稿日: 2011 年 3 月 31 日 (木曜日)
この 1 年、さまざまな方法でこの作業を行ってきましたが、ようやく "正しい" 方法で行えばよいということがわかりました。 この作業はもう十分です。クレーム拡張時など、カスタム クレーム プロバイダーが呼び出されたときに、ユーザーのクレームが、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」をご覧ください。