當您需要將連入宣告類型對應至連出宣告類型時,您可以在 Active Directory 同盟服務 (AD FS) 中使用此規則,然後套用動作,以根據傳入宣告中的值來判斷應該發生的輸出。 當您使用此規則時,會根據您在規則中設定的選項之一,傳遞或轉換符合下列規則邏輯的宣告,如下表所述。
| 規則選項 | 規則邏輯 |
|---|---|
| 處理所有傳入索賠 | 如果連入宣告類型等於 指定的宣告類型 並且值等於 任何值,則將宣告傳遞出去,傳出宣告類型等於 指定的宣告類型 |
| 將傳入宣告值替換成不同的傳出宣告值 | 如果輸入的宣告類型等於指定的宣告類型,且值等於指定的宣告值,則將宣告轉換為新的傳出宣告值指定的宣告值及新的傳出宣告類型指定的宣告類型。 |
| 用新的電子郵件後綴替換原有的電子郵件後綴 | 如果連入宣告類型等於 指定的宣告類型 且值等於 任何後綴值,那麼將該宣告轉換為具有新的傳出宣告值 指定後綴值 和傳出宣告類型 指定的宣告類型。 |
下列各節提供宣告規則的基本簡介,並提供關於何時使用此規則的進一步詳細數據。
關於索賠規則
宣告規則代表一種商業邏輯規則,它將接收傳入的宣告,對其應用條件(如果 x 則為 y),然後根據條件參數生成傳出宣告。 在您進一步閱讀本主題之前,下列清單概述您應該瞭解的宣告規則的重要提示:
在 AD FS 管理控制台中,宣告規則只能使用宣告規則範本來建立。
宣告規則會處理從宣告提供者 (例如 Active Directory 或其他同盟服務) 直接接收的宣告,或者從宣告提供者信任的接受轉換規則輸出接收的宣告。
宣告規則會依照指定規則集內的時間順序,由宣告發行引擎處理。 藉由設定規則的優先順序,您可以進一步精簡或篩選指定規則集內先前規則所產生的宣告。
宣告規則範本一律會要求您指定傳入宣告類型。 不過,您可以使用單一規則來處理具有相同宣告類型的多個宣告值。
如需宣告規則和宣告規則集的詳細資訊,請參閱 宣告規則的角色。 如需規則處理方式的詳細資訊,請參閱《宣告引擎的角色》。 如需了解有關處理宣告規則集的更多資訊,請參閱「宣告管線的角色」。
傳遞所有宣告值
使用此動作時,所有以指定的傳入宣告類型為鍵的傳入宣告值,都會先對應至指定的傳出宣告類型,然後作為傳出宣告發送至由您的同盟服務簽署的令牌中。
例如,當規則使用 傳遞所有宣告值 選項邏輯設定,並指定 Group 作為傳入宣告類型和 Role 作為傳出宣告類型時,所有由簽發者傳入的宣告值都將個別複製到新的宣出宣告中,其中宣告類型為 Role。
轉換索賠
在 AD FS 中, 宣告轉換 一詞表示將一個傳入宣告值取代為不同的傳出宣告值。 是「轉換傳入宣告」規則讓這項功能成為可能。 在此規則的屬性內,您可以設定條件,根據指定的傳入宣告類型,使用不同的傳出宣告值來轉換傳入值。
例如,如下圖所示,當規則設定為將傳入值取代為不同傳出宣告值的條件時,群組的所有傳入宣告類型都會對應至 Role 的新傳出宣告類型。 在此情況下,Purchaser 的輸入宣告值會被替換為 Admin 的新輸出宣告值。
您也可以使用此規則來套用條件,以新的值取代具有指定電子郵件後綴值的所有傳入宣告。 例如,您可以在此規則中設定一個條件,將所有具有後綴 sales.corp.fabrikam.com 的宣告值變更為 fabrikam.com。
在宣告提供者信任關係上配置此規則
當您使用宣告提供者信任架構時,可以將此規則設定為將來自宣告提供者的傳入宣告轉換成可信任的等效宣告。 宣告類型或宣告值在您的組織中可能與在宣告提供者組織中的意義不同。 您可以使用此規則,正規化來自宣告提供者的宣告類型和值,以便信賴方能夠理解其傳出的宣告等效項目。
在信賴方信任上配置此規則
當您使用信任方信任時,可以將此規則設定為轉換特定信任方的宣稱。 宣告類型或宣告值對於特定信賴憑證者可能有不同的意義,而且此規則可讓您變更單一信賴憑證者的傳出宣告類型和值。
如何建立此規則
您可以使用宣告規則語言或使用AD FS管理嵌入式管理單元中的 轉換傳入宣告 規則範本來建立此規則。 此規則範本提供下列組態選項:
指定宣告規則名稱
將特定進入宣告類型轉換為指定的傳出宣告類型
傳遞所有宣告值
將傳入宣告值替換成不同的傳出宣告值
替換內送電子郵件的後綴聲明為新的電子郵件後綴
如需如何建立此範本的詳細資訊,請參閱AD FS部署指南中的 建立規則以轉換傳入宣告 。
使用宣稱規則語言
如果必須從多個傳入宣告的內容建構傳出宣告,您必須改用自定義規則。 如果傳出宣告的宣告值必須以傳入宣告的值為基礎,但需要加入額外內容,您也必須在該情境中使用自定義規則。 如需詳細資訊,請參閱 使用自定義宣告規則的時機。
如何建構轉換規則語法的範例
使用宣告規則語言語法轉換宣告時,您可以將已轉換宣告的屬性設定為新的常值。 例如,下列規則會將角色宣告的值從 「Administrators」 變更為 「root」,同時保留相同的宣告類型:
c:[type == "https://schemas.microsoft.com/ws/2008/06/identity/claims/role", value == "Administrators"] => issue(type = c.type, value = "root");
正則表達式也可用於聲明轉換。 例如,下列規則會將網域設定於主體宣告中,將 Windows 使用者名稱以 DOMAIN\USER 格式設為 FABRIKAM:
c:[type == "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name"] => issue(type = c.type, value = regexreplace(c.value, "(?<domain>[^\\]+)\\(?<user>.+)", "FABRIKAM\${user}"));
建立自定義規則的最佳做法
宣告轉換可以選擇性地套用至使用基本篩選功能選取的宣告。 每個用於篩選的索賠屬性都可以設定值,並注意下列事項:
| 宣告財產 | Description |
|---|---|
| Type、Value、ValueType | 這些屬性最常用於指派。 至少必須為結果轉換的宣告指定類型和值。 |
| Issuer | 雖然宣告規則語言允許設定宣告的簽發者,但通常不建議這樣做。 宣告的簽發者不會在令牌中序列化。 當收到令牌時,所有宣告的 Issuer 屬性都會被設為簽署該令牌的同盟伺服器的識別碼。 因此,在規則中設定宣告的簽發者不會影響令牌的內容,一旦宣告封裝在令牌中,設定將會遺失。 唯一適合設定宣告簽發者的情況是,當宣告提供者規則集中已設定為特定值,且信賴憑證者規則集則利用參考此特定值的規則撰寫時。 如果在宣告規則中,Issuer屬性未被明確設置為某個值,則宣告發行引擎會將其設置為「LOCAL AUTHORITY」。 |
| OriginalIssuer | 與簽發者類似,OriginalIssuer 通常不應該明確指派值。 與發行者不同,OriginalIssuer 屬性會在令牌中序列化,但令牌使用者期望,如果已設定,它會包含最初簽發宣告的同盟伺服器的標識符。 |
| 屬性 | 如上一節所述,宣告的屬性包不會保存在令牌中,因此只有在後續的本地原則會參考在屬性中儲存的資訊時,才應執行屬性指派。 |
如需如何使用宣告規則語言的詳細資訊,請參閱 宣告規則語言的角色。