Adfs

在單個規則中發出多個聲明

  • February 17, 2016

是否有一種簡單的方法可以在單個 ADFS 聲明規則中發出多個聲明?我能看到的唯一範例是查詢屬性儲存的範例,並且每個檢索到的列都映射到不同的聲明類型。

我嘗試了一種使用Types而不是的“明顯”方法Type,將兩種類型放在括號中(根據 SQL 範例),但是我需要提供多個值 - 所以我想使用Values而不是Value. 但Types無論如何它都會窒息。

這不起作用:

c:[Type == incomingClaim, Value =~ incomingMatch]
=> issue(Types = (type1,type2), Issuer = c.Issuer, OriginalIssuer = c.OriginalIssuer,
     Values = (value1,value2), ValueType = c.ValueType);

其中incomingClaim, type1, type2, value1andvalue2是簡單的字元串文字,並且incomingMatch是一個正則表達式。

當然,我可以將其作為多個聲明規則來執行,但我希望暫時保持簡單。- 目前將有約 5 個傳出索賠,但我想設置一些使用者來獲取所有索賠,而無需設置 5 條規則。隨著時間的推移,索賠的數量會增加。

(我只標記為 ADFS - 我看不到任何其他明顯的標記要包含)

ADFS 規則由條件、=>令牌、命令(issueadd)組成,並以分號結尾。您不能為每個規則發出多個文字,但您可以使用 powershell 使其更易於使用。

Set-AdfsRelyingPartyTrust您可以使用一次設置所有規則,而不是進入 UI 並通過該嚮導 5 次。

Set-RelyingPartyTrust -TargetName SharePoint_Prod -IssuanceTransformRulesFile c:\drop\rules.txt

rules.txt 的樣子

c:[Type == incomingClaim, Value =~ incomingMatch] => issue(Type = type1, Issuer = c.Issuer, OriginalIssuer = c.OriginalIssuer, Value = value1, ValueType = c.ValueType);
c:[Type == incomingClaim, Value =~ incomingMatch] => issue(Type = type2, Issuer = c.Issuer, OriginalIssuer = c.OriginalIssuer, Value = value2, ValueType = c.ValueType);
c:[Type == incomingClaim, Value =~ incomingMatch] => issue(Type = type3, Issuer = c.Issuer, OriginalIssuer = c.OriginalIssuer, Value = value3, ValueType = c.ValueType);
c:[Type == incomingClaim, Value =~ incomingMatch] => issue(Type = type4, Issuer = c.Issuer, OriginalIssuer = c.OriginalIssuer, Value = value4, ValueType = c.ValueType);
c:[Type == incomingClaim, Value =~ incomingMatch] => issue(Type = type5, Issuer = c.Issuer, OriginalIssuer = c.OriginalIssuer, Value = value5, ValueType = c.ValueType);

相對於 UI 的區別?我使用了複製和粘貼。

引用自:https://serverfault.com/questions/447831