Share via


IssuerNameRegistry 類別

定義

簽發者名稱登錄的抽象基底類別。 簽發者名稱登錄會用來建立助憶名稱與驗證對應簽發者所產生權杖簽章時所需之密碼編譯資料的關聯。 簽發者名稱登錄會維護一份簽發者清單,這些都是信賴憑證者 (RP) 應用程式所信任的簽發者。

public ref class IssuerNameRegistry abstract : System::IdentityModel::Configuration::ICustomIdentityConfiguration
public abstract class IssuerNameRegistry : System.IdentityModel.Configuration.ICustomIdentityConfiguration
type IssuerNameRegistry = class
    interface ICustomIdentityConfiguration
Public MustInherit Class IssuerNameRegistry
Implements ICustomIdentityConfiguration
繼承
IssuerNameRegistry
衍生
實作

範例

下列程式代碼顯示 類別的 IssuerNameRegistry 實作,該類別只接受使用主體 “CN=localhost” 憑證的簽發者。

警告

下列程式代碼僅供說明之用。 根據主體名稱驗證憑證不是很好的做法。 此程式代碼不應與生產環境一樣使用。

using System.IdentityModel.Tokens;

namespace System.IdentityModel.Samples
{
    /// <summary>
    /// This class verifies that the issuer is trusted, and provides the issuer name.
    /// </summary>
    public class TrustedIssuerNameRegistry : IssuerNameRegistry
    {
        /// <summary>
        /// Gets the issuer name of the given security token,
        /// if it is the X509SecurityToken of 'localhost'.
        /// </summary>
        /// <param name="securityToken">The issuer's security token</param>
        /// <returns>A string that represents the issuer name</returns>
        /// <exception cref="SecurityTokenException">If the issuer is not trusted.</exception>
        public override string GetIssuerName(SecurityToken securityToken)
        {
            X509SecurityToken x509Token = securityToken as X509SecurityToken;
            if (x509Token != null)
            {
                if (String.Equals(x509Token.Certificate.SubjectName.Name, "CN=localhost"))
                {
                    return x509Token.Certificate.SubjectName.Name;
                }
            }

            throw new SecurityTokenException("Untrusted issuer.");
        }
    }
}

以下顯示使用受信任簽發者名稱登錄設定應用程式所需的 XML。

<system.identityModel>  
  <identityConfiguration>  
    <issuerNameRegistry type="System.IdentityModel.Samples.TrustedIssuerNameRegistry, MyApp" />  
  </identityConfiguration>  
</system.identityModel>  

備註

簽發者名稱登錄可用來將助記鍵名稱與驗證對應簽發者所產生的令牌簽章所需的密碼編譯數據產生關聯。 接著,這個名稱會用來設定 Issuer 宣告的 或 OriginalIssuer 屬性。 類別所 IssuerNameRegistry 公開的方法會由處理令牌的安全性令牌處理程式從管線呼叫。 未由簽發者名稱登錄所對應的數據簽署的令牌會捨棄為不受信任。 簽發者名稱登錄傳回的名稱在 RP 應用程式的內容中應該是唯一的。

在程式代碼中,您可以藉由設定 SecurityTokenHandlerConfiguration.IssuerNameRegistry 屬性來指定要使用的簽發者名稱登錄。 在組態檔中,您可以指定 securityTokenHandlerConfiguration> 元素底下的<issuerNameRegistry> 元素來指定簽發者名稱登錄。<

Windows Identity Foundation (WIF) 提供現用類別的 IssuerNameRegistry 實作:類別 ConfigurationBasedIssuerNameRegistry 。 當您使用此實作時,可以在 RP 應用程式的<組態檔中指定信任的簽發者>清單,此專案是在該元素type的 屬性中參考 .class 時ConfigurationBasedIssuerNameRegistry,該專案的<issuerNameRegistry>子元素。 在 <trustedIssuers> 元素下,每個簽發者名稱都會對應至應該用來驗證其簽章的 X.509 憑證。

若要建立自定義簽發者名稱登錄,您必須覆寫 IssuerNameRegistry.GetIssuerName(SecurityToken) 方法。 這個方法會傳回指定之安全性令牌的簽發者名稱。 如果您想要為不同於 DefaultIssuer的 Windows 令牌提供簽發者名稱,您可以選擇覆寫 IssuerNameRegistry.GetIssuerName(SecurityToken, String) 方法,以在擷取簽發者名稱和 GetWindowsIssuerName 方法時提供提示機制。 LoadCustomConfiguration覆寫 方法,以讓您的簽發者名稱登錄從組態檔初始化。

建構函式

IssuerNameRegistry()

初始化 IssuerNameRegistry 類別的新執行個體。

方法

Equals(Object)

判斷指定的物件是否等於目前的物件。

(繼承來源 Object)
GetHashCode()

做為預設雜湊函式。

(繼承來源 Object)
GetIssuerName(SecurityToken)

在衍生類別中覆寫時,會傳回指定的安全性權杖的簽發者名稱。

GetIssuerName(SecurityToken, String)

在衍生類別中覆寫時,會傳回指定的安全性權杖的簽發者名稱。 在決定要傳回之簽發者名稱時可能會考慮指定的簽發者名稱。

GetType()

取得目前執行個體的 Type

(繼承來源 Object)
GetWindowsIssuerName()

傳回要用於 Windows 宣告的預設簽發者名稱。

LoadCustomConfiguration(XmlNodeList)

在衍生類別中覆寫時,從 XML 載入自訂組態。

MemberwiseClone()

建立目前 Object 的淺層複製。

(繼承來源 Object)
ToString()

傳回代表目前物件的字串。

(繼承來源 Object)

適用於

另請參閱