Adfs

聲明規則語言 RegExReplace 與多個匹配項

  • November 5, 2019

**背景:**我正在嘗試通過 ADFS 在本地 AD 和 AWS 之間設置單點登錄。我無權訪問我們的 ADFS 實例,而且我真的對 ADFS 知之甚少,所以我只能嘗試猜測解決方案。幸運的是,在我相信一切都會正常執行之前,我認為我已經很接近了,只有一個索賠規則翻譯需要解決。

**問題:**我遇到的問題是我需要使用聲明規則語言(我也沒有太多經驗)將 AD 組轉換為 AWS 角色,但我提出的規則無法正常工作。

**我已經嘗試過:**我已經讓 AD 組填充臨時/變數類型,並傳遞到頒發令牌的管道中的下一步。我需要解析的 AD 組的格式是:AWS#AWS_AccountName#AWS_RoleName#AWS_AccountNumber(即 AWS#Sandbox#SecurityAuditor#1234567890)。

我需要使用此組名中的 AWS_RoleName 和 AWS_AccountNumber 來生成要傳遞給 AWS 的 arn。我嘗試使用 RegExReplace 來執行此規則:c:

$$ Type==“http://temp/variable”, Value=~"(?i)(^AWS)#([-_a-z0-9 $$+)#($$ -_a-z0-9 $$+)#($$ -_a-z0-9 $$+)"] => 問題(Type=“https://aws.amazon.com/SAML/Attributes/Role", Value=RegExReplace(c.Value, “(?i)(^AWS)#($$ -_a-z0-9 $$+)#($$ -_a-z0-9 $$+)#([- a-z0-9]+)”, “arn:aws:iam: $ 4:saml-provider/ADFS,arn:aws:iam: $ 4:角色/AWSReservedSSO $3)) 我的想法是我將使用 $ 來填寫獲得訪問權限所需的 AWS 角色名。但是我不認為這是有效的,因為我剛剛讀到 RegExReplace 用第三個參數生成的字元串替換了源字元串中的所有 RegEx 匹配項。

任何人都可以指出此聲明規則中的缺陷或編寫更好的規則以獲得所需的結果嗎?

先感謝您

好的,由於某種原因,我的 $index 構造不起作用。當我在我的正則表達式中用命名變數替換那些變數時,它開始正常工作。所以我更新的索賠規則如下所示:

c:[Type=="http://temp/variable", 
Value=~"(?i)(^AWS)#([-_a-z0-9]+)#([-_a-z0-9]+)#([-_a-z0-9]+)"] => 
issue(Type="https://aws.amazon.com/SAML/Attributes/Role", 
Value=RegExReplace(c.Value, 
                  "(?i)(^AWS)#(?<accountname>[-_a-z0-9]+)#(?<role>[-_a-z0-9]+)#(?<accountnumber>[-a-z0-9]+)", 
                  "arn:aws:iam:${accountnumber}:saml-provider/ADFS,arn:aws:iam:${accountnumber}:role/${role}))

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