【问题标题】:Migrating a JDBC security realm to WildFly 10将 JDBC 安全领域迁移到 WildFly 10
【发布时间】:2016-04-23 14:11:50
【问题描述】:

我正在尝试将我的安全领域从 GlassFish 4 迁移到 WildFly 10,遵循 this guide

我有:

  • 将我的数据源设置为 java:/RemindersDS 并验证它可以正常工作。
  • 如下设置我的域:

    <security-domain name="RemindersDomain" cache-type="default">
        <authentication>
            <login-module code="Database" flag="required">
                <module-option name="dsJndiName" value="java:/RemindersDS"/>
                <module-option name="principalsQuery" value="SELECT password FROM Authentication WHERE username = ?"/>
                <module-option name="rolesQuery" value="SELECT rolename, 'Roles' FROM User_roles WHERE username = ?"/>
                <module-option name="hashAlgorithm" value="SHA-256"/>
                <module-option name="hashEncoding" value="BASE64"/>
            </login-module>
            <login-module code="RoleMapping" flag="required">
                <module-option name="rolesProperties" value="file:${jboss.server.config.dir}/reminders-domain.properties"/>
                <module-option name="replaceRole" value="false"/>
            </login-module>
        </authentication>
    </security-domain>
    
  • 验证了上述查询。

  • configuration目录中添加了reminders-domain.properties文件,内容如下:

    user=user
    admin=admin,user
    
  • &lt;security-domain&gt;RemindersDomain&lt;/security-domain&gt; 添加到我的jboss-web.xml

  • 在我的 web.xml 中添加了以下内容:

    <security-constraint>
        <display-name>Update and delete users</display-name>
        <web-resource-collection>
            <web-resource-name>Users</web-resource-name>
            <description/>
            <url-pattern>/api/users/*</url-pattern>
            <http-method>PUT</http-method>
            <http-method>DELETE</http-method>
        </web-resource-collection>
        <auth-constraint>
            <description/>
            <role-name>admin</role-name>
            <role-name>user</role-name>
        </auth-constraint>
    </security-constraint>
    <login-config>
        <auth-method>BASIC</auth-method>
        <realm-name>RemindersDomain</realm-name>
    </login-config>
    <security-role>
        <description/>
        <role-name>admin</role-name>
    </security-role>
    <security-role>
        <description/>
        <role-name>user</role-name>
    </security-role>
    

应用程序部署成功,但每当我尝试执行受限请求时,都会收到 401 Unauthorized 响应。我正在使用 Postman 发送这些请求(并为 HTTP 基本身份验证生成标头)。

我在这里缺少什么?我能做些什么来调试这个问题? WildFly 的日志没有报告任何问题。

【问题讨论】:

  • 您可以将安全域中的调试级别设置为 true 以获得更好的日志记录。看来问题还是解决了。

标签: java jakarta-ee jboss wildfly


【解决方案1】:

原来 hashEncoding 必须是“十六进制”。我错误地认为 BASE64 指的是 HTTP 基本身份验证中使用的 BASE64 编码,但事实并非如此。

【讨论】:

  • 一般来说,应该启用org.jboss.security 类别的调试日志以查看安全模块发生了什么
猜你喜欢
  • 2014-09-15
  • 1970-01-01
  • 2019-06-11
  • 2017-06-20
  • 2017-04-02
  • 2016-08-22
  • 1970-01-01
  • 1970-01-01
  • 2020-12-25
相关资源
最近更新 更多