当前位置: 首页 > 知识库问答 >
问题:

JBoss Wildfly-数据库登录模块

秦宁
2023-03-14

JBoss Wildfly 8.0.0-最终
JSF 2.2.4

首先,我创建登录使用application-users.properties和application-roles.properties.添加用户add-user.bat

网状物xml

<security-constraint>
    <web-resource-collection>
        <web-resource-name>Admin Resource</web-resource-name>
        <url-pattern>/admin/*</url-pattern>
    </web-resource-collection>
    <auth-constraint>
        <role-name>admin</role-name>
    </auth-constraint>
    <user-data-constraint>
        <transport-guarantee>NONE</transport-guarantee>
    </user-data-constraint>
</security-constraint>

<login-config>
    <auth-method>FORM</auth-method>
    <form-login-config>
        <form-login-page>/login.xhtml</form-login-page>
        <form-error-page>/error.xhtml</form-error-page>
    </form-login-config>
</login-config>

<security-role>
    <role-name>admin</role-name>
</security-role>

独立的。xml

<login-module code="Remoting" flag="optional">
<module-option name="password-stacking" value="useFirstPass"/>
</login-module>
<login-module code="RealmDirect" flag="required">
<module-option name="password-stacking" value="useFirstPass"/>
</login-module>

登录。xhtml

    <?xml version="1.0" encoding="UTF-8"?>
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
    xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
    xmlns:f="http://xmlns.jcp.org/jsf/core"
    xmlns:h="http://xmlns.jcp.org/jsf/html"
    xmlns:p="http://primefaces.org/ui">
    <div class="center">
        <form method="POST" action="j_security_check" id="">
            <h:panelGrid id="panel" columns="2" border="1" cellpadding="4" cellspacing="4">
                <h:outputLabel for="j_username" value="Username:" />
                <input type="text" name="j_username" />
                <h:outputLabel for="j_password" value="Password:" />
                <input type="password" name="j_password" />
                <h:panelGroup>
                    <input type="submit" value="Login" />
                </h:panelGroup>
            </h:panelGrid>
        </form>
    </div>
</ui:composition>

所以这很有效。。现在我想使用数据库身份验证。。因此,我改变了独立。xml。

<login-module code="Database" flag="sufficient">
    <module-option name="dsJndiName" value="java:jboss/jsi/GarageXADataSource"/>
    <module-option name="principalsQuery" value="select encode(password, 'hex') from principal where username=?"/>
    <module-option name="rolesQuery" value="select r.role, r.role_group from role r inner join principal p on r.role = p.role where p.username=?"/>
    <module-option name="hashAlgorithm" value="SHA-512"/>
    <module-option name="hashEncoding" value="hex"/>
</login-module>

我使用此sql在数据库中插入角色和用户(PostgreSQL 9.3)

在角色(角色、角色组)中插入值(“管理员”、“角色”)
插入主体(用户名、电子邮件、密码、角色)值('Kris','xx@gmail.com,摘要('pass','sha512'),'admin');

但是登录不起作用。我在日志中没有看到错误。我以前在AS 7.1.1中使用过这种方法。

谢谢你的帮助。

共有3个答案

戚澄邈
2023-03-14

我刚才和Wildfly有同样的问题,请在你的单机版中查找这一行。xml

<default-security-domain value="other"/>

并将其他更改为您的安全域,在以前的版本中,此选项是不必要的。

裴彦
2023-03-14

问题是常量'角色',您必须像'角色'一样指定它。示例:从Role中选择角色,'Roles',其中角色ID=

屠杰
2023-03-14

首先,DatabaseServerLoginModule将日志记录到跟踪级别,所以您应该设置org。jboss。要在单机版中跟踪的安全日志级别。xml如下所示。现在您应该可以看到服务器中的错误。日志

<logger category="org.jboss.security">
    <level name="TRACE"/>
</logger>

您还需要在jboss web中添加域名。xml

<jboss-web>
    <security-domain>java:/jaas/MyRealm</security-domain>
</jboss-web>

您尚未提供登录模块配置代码段周围的标记。你应该在下面写些东西。域名需要与您的web中的域名匹配。xml

<subsystem xmlns="urn:jboss:domain:security:1.0">
  <security-domains>  
    <security-domain name="MyRealm">  
       <authentication>  
         <login-module code="Database" flag="required">  
         ....
      </authentication>  
    </security-domain>  
  </security-domains>  
</subsystem> 

完成此操作后,您可以发布服务器上的任何错误。日志

 类似资料:
  • 主要内容:通过命令行客户端软件登录当MySQL 服务开启后,就可以通过客户端来登录 MySQL 数据库了。在 Windows 操作系统下可以使用 DOS 命令登录数据库,本节将介绍使用命令方式登录 MySQL 数据库的方法。 登录 MySQL 数据库的具体操作步骤如下: 步骤 1):单击“开始”→“Windows 系统”→“命令提示符”,如图所示。 步骤 2):打开命令行提示符界面,输入命令 ,按回车键,如图所示。 步骤 3):在

  • 我有一个moodle数据库(其中有完整的用户)。所以,我想创建一个登录表单(只是为了好玩),并且用户可以用他们的moodle帐户credidentials登录。Moodle为每个单独的用户使用密码盐,我如何在我的代码中盐密码来与db记录进行比较?

  • 我必须将所有日志数据(即调试、信息、错误)放入mysql数据库,而不是文件/控制台。我阅读了Spring Boot文档,但没有看到任何与日志记录数据库相关的配置。 https://docs.spring.io/spring-boot/docs/current/reference/html/howto-logging.html 也尝试了以下链接,但它也不工作。https://www.tutorial

  • 我使用spring和security with创建了一个REST服务。当前,当我点击url时,我获得了访问令牌,然后使用它发送基本登录凭据,该凭据在文件中是静态的。如何使用数据库提供用户身份验证?

  • 使用C#在ASP.NET中使用VS2012中的Crystal Report创建/导出PDF文件。 CR版本:Crystal Report XI MVC Framework:4.0 OS:Windows 7 64位 错误列表: 1)无法加载文件或程序集“CrystalDecisions.ReportAppServer.CommLayer,版本=13.0.2000.0,区域性=Neutral,Publ

  • 我是mysql和php的新手。 一直致力于为用户创建一个带有表的数据库。 我已经成功地将用户添加到数据库中,他们的密码是md5(是的,我知道它不安全),它不会在线启动。 我的问题是,如何根据用户正确的用户名和密码登录。 这是我的密码 我的逻辑是taht查询运行后,它将返回true或false。 如果为真,则显示成功登录,否则不成功。 然而,即使我输入了正确的用户名和密码,我仍然会收到一条不成功的登