英文原文已於 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