使用傳遞或篩選宣告規則的時機

當您需要採用特定的傳入宣告類型,然後套用可根據傳入宣告中的值來決定應發生輸出的動作時,您可以在 Active Directory 同盟服務 (AD FS) 中使用此規則。 當您使用此規則時,您會根據您在規則中設定的選項之一,傳遞或篩選任何與下表中的規則邏輯相符的宣告。

規則選項 規則邏輯
傳遞所有宣告值 如果傳入宣告類型等於指定的宣告類型,且值等於任何值,則會傳遞該宣告
僅傳遞特定宣告值 如果傳入宣告類型等於指定的宣告類型,且值等於指定的宣告值,則會傳遞該宣告
僅傳遞符合特定電子郵件尾碼值的宣告值 如果傳入宣告類型等於指定的宣告類型,且值等於指定的尾碼值,則會傳遞該宣告
僅傳遞以特定值開頭的宣告值 如果傳入宣告類型等於指定的宣告類型,且值以指定的宣告值開頭,則會傳遞該宣告

下列章節提供宣告規則的基本介紹,並進一步提供如何使用此規則的詳細資訊。

關於宣告規則

宣告規則表示商務邏輯的執行個體,將會收取傳入宣告,對其套用條件 (若 x 則 y),然後根據條件參數產生傳出宣告。 在您進一步閱讀本主題之前,請先閱讀下列清單,其中會概述關於宣告規則您應該知道的重要秘訣:

  • 在 AD FS 管理] 嵌入式管理單元中,只能使用宣告規則範本建立宣告規則

  • 宣告規則會從宣告提供者 (例如 Active Directory 或其他同盟服務) 直接處理傳入宣告,或是在宣告提供者信任上從接受轉換規則的輸出處理傳入宣告。

  • 宣告規則的處理方式,是由宣告發行引擎依時間先後順序按照指定的規則集處理。 藉由設定規則優先順序,您可以進一步精簡或篩選由特定規則集內的上一個規則所產生的宣告。

  • 宣告規則範本一律會要求您指定傳入宣告類型。 不過,您可以使用單一規則和同一宣告類型處理多個宣告值。

如需宣告規則和宣告規則集的詳細資訊,請參閱宣告 規則的角色。 如需有關如何處理規則的詳細資訊,請參閱 宣告引擎的角色。 如需如何處理宣告規則集的詳細資訊,請參閱 宣告管線的角色

傳遞所有宣告值

使用此動作時,將會以傳出宣告的形式傳遞指定宣告類型的所有傳入宣告值。 例如,當傳入宣告類型指定為角色宣告類型時,所有的傳入宣告值會個別複製到新的傳出宣告,且傳出宣告的類型為「角色」。

篩選宣告

在 AD FS 中, 宣告篩選 條件表示篩選或限制傳入的宣告值,因此只會以傳出宣告的形式傳遞或傳送特定的值。 此功能的運作有賴 [傳遞或篩選傳入宣告] 規則範本。 在此規則的屬性內,您可以設定篩選傳入值的條件,而只讓與您指定的條件相符的值傳遞。

例如,您可以使用此規則,在傳入宣告類型符合「角色」宣告類型時僅傳遞符合宣告值「購買者」的宣告,或者您可以僅發出關於使用者名稱的宣告,而不是包含使用者身分證號碼的宣告。

當您使用具有此規則的篩選條件時,所有的傳入宣告都會受到檢查,以判斷哪些宣告符合規則所設定的條件。 所有其他宣告都會被忽略,如此只有符合所選宣告類型的指定宣告值會傳遞。

例如,如下圖所示,當規則設定為僅篩選以 UPN 宣告類型組成的傳入宣告,而且結尾為時 @fabrikam.com ,除非符合此準則,否則會忽略所有其他的傳入宣告。 這包括具有電子郵件地址宣告類型的連入宣告,即使其宣告值結尾為 @fabrikam.com 。 在此情況下,只有包含值的宣告 Nick@fabrikam.com 會傳送至信賴憑證者。

when to use pass through

在宣告提供者信任上設定此規則

當您使用宣告提供者信任時,可將此規則設定為只會傳遞符合特定條件約束的宣告提供者所傳入的宣告。 例如,您可能只想接受來自宣告提供者的電子郵件宣告;因此,您會使用此規則範本來接受宣告提供者的網域名稱系統 (DNS) 名稱結尾的電子郵件宣告類型。

在信賴憑證者信任上設定此規則

當您使用信賴憑證者信任時,可將此規則設定為會傳遞或篩選將傳送給信賴憑證者的傳出宣告。 有些信賴憑證者可能不了解特定的宣告類型,或是某些宣告可能包含不應傳送給特定信賴憑證者的敏感性資訊。 此規則範本可協助您針對特定的信賴憑證者信任強制執行這些原則。

如何建立此規則

您可以使用 [宣告規則語言] 或 [AD FS 管理] 嵌入式管理單元中的 [通過或篩選傳入宣告規則] 範本來建立此規則。 此規則範本提供以下設定選項:

  • 指定宣告規則名稱

  • 指定傳入宣告類型

  • 傳遞所有宣告值

  • 僅傳遞特定宣告值

  • 僅傳遞符合特定電子郵件尾碼值的宣告值

  • 僅傳遞以特定值開頭的宣告值

如需有關如何建立此範本的詳細指示,請參閱 AD FS 部署指南中的 建立規則,以通過或篩選傳入 宣告。

使用宣告規則語言

如果只有在宣告值符合自訂模式時才應傳送宣告,您必須使用自訂規則。 如需詳細資訊,請參閱「使用自訂規則的時機」。

說明如何建構傳遞或篩選規則語法的範例

一個簡單的篩選規則會篩選根據前述其中一個屬性來篩選宣告。 例如,下列規則將會傳遞所有的電子郵件宣告:

c:[type == "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress"]  => issue(claim  = c);

篩選可依邏輯使用 AND 運算子。 例如,下列規則會接受所有具有值的電子郵件宣告 johndoe@fabrikam.com :

c:[type == "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress", value == "johndoe@fabrikam.com "]  => issue(claim  = c);

在上述範例中,篩選器一律使用等號比較運算子。 宣告規則語言支援下列運算子:

  • == - 等於 (區分大小寫)

  • != - 不等於 (區分大小寫)

  • =~- 規則運算式相符

  • !~ - 規則運算式不相符

例如,下列規則將會接受所有不是由本機同盟伺服器發出、且尾碼為 boeing.com 的電子郵件宣告:

c:[type == "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress", value =~ "^.*@boeing\.com$" , issuer != "LOCAL AUTHORITY"]  => issue(claim  = c);

建立自訂規則的最佳做法

篩選可以套用到每個宣告的一或多個屬性,如下表所說明。

宣告屬性 描述
類型 宣告類型 (通常以 URI 表示) 會反映同盟中的夥伴之間有關於宣告中應傳達哪種資訊的隱含協議。 例如,類型的宣告 http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress 會包含使用者的電子郵件地址。
宣告的值。 例如,類型的宣告的 http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress 值可能是 johndoe@fabrikam.com
ValueType ValueType 表示要解讀宣告值中包含的資訊的方式。 ValueType 通常會設定為 http://www.w3.org/2001/XMLSchema#string ,但宣告值可能包含 Base64Binary 編碼的資料 (例如,影像) 或日期、布林值等等。
Issuer 簽發者代表上次發出使用者相關宣告的一方。 如果宣告是在宣告提供者同盟伺服器上取得,則所有宣告的簽發者將會設定為「本機授權單位」。 如果事由同盟提供者同盟伺服器接收宣告,則宣告的簽發者會設定為簽署權杖之宣告提供者的宣告提供者識別碼。 因此,在對接收自宣告提供者的宣告處理規則時,所有宣告的簽發者都會設為相同的值。 當撰寫信賴憑證者的規則時,可使用簽發者屬性來區分來自不同宣告提供者的宣告。
OriginalIssuer 此宣告屬性可用來傳達原本發出宣告的的同盟伺服器。 由於宣告的簽發者屬性會設定為最後一個簽署權杖的同盟伺服器,因此在宣告流經多個同盟伺服器的情況下,原始簽發者會相當有用;例如,從同盟提供者同盟伺服器接收到權杖的信賴憑證者可能會想知道使用者是由哪個宣告提供者同盟伺服器所驗證)
屬性 除了上述的五個屬性外,每個宣告也都有可儲存具名屬性的屬性包。 這些屬性不會序列化到權杖中,且只能在單一同盟伺服器的範圍內,用來傳遞宣告發行管線元件之間的資訊。 例如,在宣告提供者規則處理期間設定屬性,然後在信賴憑證者規則中加以參照。