背景:我正在尝试通过 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:role/AWSReservedSSO $3))
我的想法是我将使用 $ 来填写获得访问权限所需的 AWS 角色名。但是我不认为这是有效的,因为我刚刚读到 RegExReplace 用第三个参数生成的字符串替换了源字符串中的所有 RegEx 匹配项。
任何人都可以指出此声明规则中的缺陷或编写更好的规则以获得所需的结果吗?
先感谢您
好的,由于某种原因,我的 $index 构造不起作用。当我在我的正则表达式中用命名变量替换那些变量时,它开始正常工作。所以我更新的索赔规则如下所示: