在WildFly 8.1.0上创建安全领域 - 发出命令创建领域时,“x”周围的节点路径格式错误

时间:2014-10-16 19:34:45

标签: security java-ee wildfly java-ee-7 wildfly-8

jboss-cli.bat(Windows的MS-DOS批处理文件)上发出以下命令,以便在this migration guide中提到的WildFly 8.1.0 final上创建安全领域,

./subsystem=security/security-domain=app:add(cache-type="default")
  cd ./subsystem=security/security-domain=app
     ./authentication=classic:add(
       login-modules=[ {
         code="Database",
         flag="required",
         module-options={
           dsJndiName="java:/jdbc/project_datasource",
           principalsQuery="SELECT password FROM user_role_table WHERE user_id=?",
           rolesQuery="SELECT group_id, 'Roles'
                       FROM group_table gt INNER JOIN user_role_table urt ON gt.user_group_id = urt.user_id
                       WHERE urt.user_id=?", hashAlgorithm="SHA-256",
           hashEncoding="BASE64",
           unauthenticatedIdentity="guest"
         }
       }, {
         code="RoleMapping",
         flag="required",
         module-options={
           rolesProperties="file:${jboss.server.config.dir}/app.properties",
           replaceRole="false"
         }
       }
     ])

我在cli提示符下出现以下错误:

  

节点路径格式错误' cd。' (索引67)

如果删除cd,则会报告以下错误。

  

无法执行read-opration-description来验证请求:   java.util.concurrent.ExecutionException:操作失败

该命令以连续的文本格式给出,如下所示。

./subsystem=security/security-domain=app:add(cache-type="default") cd ./subsystem=security/security-domain=app ./authentication=classic:add(login-modules=[ {code="Database",flag="required",module-options={dsJndiName="java:/jdbc/project_datasource",principalsQuery="SELECT password FROM user_role_table WHERE user_id=?",rolesQuery="SELECT group_id, 'Roles' FROM group_table gt INNER JOIN user_role_table urt ON gt.user_group_id = urt.user_id WHERE urt.user_id=?",hashAlgorithm="SHA-256",hashEncoding="BASE64",unauthenticatedIdentity="guest"}},{code="RoleMapping",flag="required",module-options={rolesProperties="file:${jboss.server.config.dir} /app.properties",replaceRole="false"}}])

修复是什么?我只是不想将XML复制/过去到配置文件,因为它可能因版本而异。

1 个答案:

答案 0 :(得分:2)

问题在于在一行上组合更多命令。

您可以使用外部文件来存储CLI命令。

E.g。使用以下内容在security-domain.cli文件夹中创建wildfly-8.1.0.Final/bin文件(如果要将命令拆分为更多行,请将反斜杠作为最后一个字符):

/subsystem=security/security-domain=app:add(cache-type="default")
/subsystem=security/security-domain=app/authentication=classic:add()
/subsystem=security/security-domain=app/authentication=classic/login-module=Database:add( \
    code="Database", \
    flag="required", \
    module-options=[ \
        ("dsJndiName"=>"java:/jdbc/project_datasource"), \
        ("principalsQuery"=>"SELECT password FROM user_role_table WHERE user_id=?"), \
        ("rolesQuery"=>"SELECT group_id, 'Roles' FROM group_table gt INNER JOIN user_role_table urt ON gt.user_group_id = urt.user_id WHERE urt.user_id=?"), \
        ("hashAlgorithm"=>"SHA-256"), \
        ("hashEncoding"=>"BASE64"), \
        ("unauthenticatedIdentity"=>"guest") \
    ])
/subsystem=security/security-domain=app/authentication=classic/login-module=RoleMapping:add( \
    code="RoleMapping", \
    flag="required", \
    module-options=[ \
        ("rolesProperties"=>"file:${jboss.server.config.dir}/app.properties"), \
        ("replaceRole"=>"false") \
    ])

(您的示例包含旧式设置登录模块。现在它已被弃用,所以示例用法是新方法。)

使用JBoss CLI工具运行新文件:

jboss-cli.bat -c --file=security-domain.cli