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

如果您需要使用特定的傳入宣告類型,然後套用動作,讓此動作根據傳入宣告中的值判斷應該發生何種輸出,您可以在 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 此宣告屬性可用來傳達原本發出宣告的的同盟伺服器。 由於宣告的簽發者屬性會設定為最後一個簽署權杖的同盟伺服器,因此在宣告流經多個同盟伺服器的情況下,原始簽發者會相當有用;例如,從同盟提供者同盟伺服器接收到權杖的信賴憑證者可能會想知道使用者是由哪個宣告提供者同盟伺服器所驗證)
屬性 除了上述的五個屬性外,每個宣告也都有可儲存具名屬性的屬性包。 這些屬性不會序列化到權杖中,且只能在單一同盟伺服器的範圍內,用來傳遞宣告發行管線元件之間的資訊。 例如,在宣告提供者規則處理期間設定屬性,然後在信賴憑證者規則中加以參照。