一般来说,我尝试在另一个元素中添加嵌套元素,其中父元素不包含
name
属性:
<parentElement name="fooName">
<foo property1="abc"/>
</parentElement>
应该变成:
<parentElement name="fooName">
<foo property1="abc">
<fooChild property2="bcd"/>
</foo>
</parent>
问题是我找不到正确构建
CLI
命令路径的方法:
/sybsystem=xxx/parentElement=fooName/foo:add(fooChild={property2="bcd"})
给我一个错误
Node path format is wrong around 'foo' (index=37).
我认为这是因为
foo
元素没有属性 name
。
更具体地说,我正在寻找一种在
key
元素内添加 jwt
元素的方法:
<token-realm name="jwt-realm" principal-claim="sub">
<jwt issuer="${JWT_ISSUER}" audience="${JWT_AUDIENCE}" public-key="${JWT_PUBLIC_KEY}"/>
</token-realm>
应该变成:
<token-realm name="jwt-realm" principal-claim="sub">
<jwt issuer="${JWT_ISSUER}" audience="${JWT_AUDIENCE}" public-key="${JWT_PUBLIC_KEY}">
<key kid="xxx" public-key="${JWT_PUBLIC_KEY}"/>
</jwt>
</token-realm>
我尝试使用的命令:
/subsystem=elytron/token-realm=jwt-realm/jwt:add(key={kid="xxx",public-key="${JWT_PUBLIC_KEY}"})
我得到的错误:
Node path format is wrong around 'jwt' (index=41).
感谢我杰出的同事(他在这里没有账户,可惜),答案已经找到了。
要更新
key
的地图,可以使用以下命令:
/subsystem=elytron/token-realm=jwt-realm:write-attribute(name=jwt, ... ,key-map={"xxx","${JWT_PUBLIC_KEY}"}})
(
...
此处为jwt
元素的其他标准属性列表)。
对我来说,这做到了(而建议的解决方案没有),我正在使用 WildFly 31:
/subsystem=elytron/token-realm=jwt-realm:add(jwt={issuer=["quickstart-jwt-issuer"], audience=["jwt-audience"], key-map={1="-----BEGIN PUBLIC KEY-----MII...AAE=-----END PUBLIC KEY-----"}}, principal-claim="sub")
这在
standalone.xml
文件中创建了此元素:
<token-realm name="jwt-realm" principal-claim="sub">
<jwt issuer="quickstart-jwt-issuer" audience="jwt-audience">
<key kid="1" public-key="-----BEGIN PUBLIC KEY-----MII...AAE=-----END PUBLIC KEY-----"/>
</jwt>
</token-realm>
希望这有帮助。