當您需要採用特定的連入宣告類型,然後套用動作,以根據傳入宣告中的值來判斷應發生的輸出時,您可以在 Active Directory 同盟服務 (AD FS) 中使用此規則。 當您使用此規則時,會根據您在規則中設定的選項之一,傳遞或篩選符合下表中規則邏輯的任何宣告。
規則選項 | 規則邏輯 |
---|---|
遍歷所有宣告值 | 如果傳入宣告類型等於 指定的宣告類型和 值等於 任何值,則傳遞宣告 |
僅傳遞特定宣告值 | 如果傳入宣告類型等於 指定的宣告類型和 值等於 指定的宣告值,則傳遞宣告 |
僅傳遞符合特定電子郵件後綴值的宣告值 | 如果傳入宣告類型等於 指定的宣告類型和 值等於 指定的後綴值,則傳遞宣告 |
僅傳遞以某個特定值作為開頭的宣告值 | 如果傳入宣告類型等於 指定的宣告類型 並且值以 指定的宣告值開頭,則通過該宣告 |
下列各節提供宣告規則的基本簡介,並提供關於何時使用此規則的進一步詳細數據。
關於索賠規則
宣告規則代表一種商業邏輯規則,它將接收傳入的宣告,對其應用條件(如果 x 則為 y),然後根據條件參數生成傳出宣告。 在您進一步閱讀本主題之前,下列清單概述您應該瞭解的宣告規則的重要提示:
在 AD FS 管理控制台中,宣告規則只能使用宣告規則範本來建立。
宣告規則會處理從宣告提供者 (例如 Active Directory 或其他同盟服務) 直接接收的宣告,或者從宣告提供者信任的接受轉換規則輸出接收的宣告。
宣告規則會依照指定規則集內的時間順序,由宣告發行引擎處理。 藉由設定規則的優先順序,您可以進一步精簡或篩選指定規則集內先前規則所產生的宣告。
宣告規則範本一律會要求您指定傳入宣告類型。 不過,您可以使用單一規則來處理具有相同宣告類型的多個宣告值。
如需宣告規則和宣告規則集的詳細資訊,請參閱宣告規則的角色。 如需規則處理方式的詳細資訊,請參閱《宣告引擎的角色》。 如需了解有關處理宣告規則集的更多資訊,請參閱「宣告管線的角色」。
遍歷所有宣告值
使用此動作時,指定宣告類型的所有傳入宣告值都會以傳出宣告的形式傳遞。 例如,當傳入宣告類型被指定為角色宣告類型時,所有傳入的宣告值都會被個別複製到具有角色傳出宣告類型的新傳出宣告中。
篩選申請
在AD FS中, 宣告篩選 一詞表示篩選或限制傳入宣告值,以便只傳遞或傳送特定值做為傳出宣告。 這是傳入宣告規則範本,可讓此函式成為可能的 傳遞或篩選 。 在此規則的屬性中,您可以設定條件來篩選傳入值,以便只傳遞符合您指定準則的值。
例如,當進入的宣告類型符合 Role 宣告類型時,您可以使用此規則來傳遞符合 Purchaser 宣告值的宣告;或者,您可能只想發出有關用戶姓名的宣告,而不要包含用戶社會安全碼的宣告。
當您搭配此規則使用篩選條件時,會檢查所有傳入宣告,以判斷哪些宣告符合規則所設定的準則。 所有其他宣告都會被忽略,因此只會傳遞符合所選宣告類型的指定宣告值。
例如,如下圖所示,當規則設定為只篩選索引鍵為 UPN 宣告類型且結尾為 @fabrikam.com 的傳入宣告時,所有其他不符合該條件的傳入宣告都會被忽略。 這包括具有電子郵件位址宣告類型的傳入宣告,即使其宣告值以 @fabrikam.com結尾也一樣。 在此情況下,只有包含Nick@fabrikam.com值的宣告才會被傳送給信賴方。
在宣告提供者信任關係中設定此規則
當您使用宣告提供者信任時,此規則可以設定為只傳遞來自符合特定條件約束之宣告提供者的傳入宣告。 例如,您可能只想要接受來自宣告提供者的電子郵件宣告;因此,您會使用此規則範本來接受宣告提供者域名系統 (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 代表如何解釋宣告中 Value 所包含的資訊。 通常 ValueType 會設定為 http://www.w3.org/2001/XMLSchema#string,但宣告值可能包含Base64Binary編碼的數據(例如影像)或日期、布爾值等等。 |
發行人 | 簽發者是一方,負責最後簽發有關使用者的宣稱。 如果在宣告提供者聯盟伺服器上取得宣告,所有宣告的簽發者將會被設為「LOCAL AUTHORITY」。 如果宣告是由同盟提供者的聯盟伺服器收到,則宣告的簽發者將被設定為簽署該令牌的宣告提供者的標識符。 因此,當處理從宣告提供者收到的宣告規則時,所有宣告的簽發者都會設定為相同的值。 撰寫受信任方規則時,可以利用簽發者屬性來區分來自不同聲明提供者的聲明。 |
原始發行者 | 此宣告屬性旨在傳達原本發出宣告的同盟伺服器。 由於宣告的簽發者屬性設定為最後一個簽署令牌的同盟伺服器,因此原始簽發者在宣告流經多個同盟伺服器的案例中很有用(例如,從同盟提供者同盟伺服器接收令牌的信賴憑證者可能會對特定宣告提供者同盟伺服器驗證使用者感興趣) |
性能 | 除了上述五個屬性之外,每個宣告也有一個屬性袋,可以在其中儲存具名屬性。 這些屬性不會在令牌中序列化,且只有在單一同盟伺服器範圍內的宣告發行管線元件之間傳遞資訊時才有意義。 例如,在宣告提供者規則處理期間設定屬性,然後在信賴方規則中參考它。 |