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

WildFly 13网页应用程序不显示登录表单

宇文峰
2023-03-14

我目前正在迁移一个应用程序从JBoss 5到WildFly 13。该应用程序由一个EAR组成,该EAR将一系列ejbs打包到一个jar中,并包含几个保存网络应用程序的WAR文件。

其中一个网络应用的网站。xml如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>

    <display-name>My App</display-name>

    <!-- RESTful web services support -->
    <servlet>
        <servlet-name>MyServlet</servlet-name>
        <servlet-class>com.test.Dispatcher</servlet-class>
    </servlet>


    <servlet-mapping>
        <servlet-name>MyServlet</servlet-name>
        <url-pattern>/*</url-pattern>
    </servlet-mapping>


    <!-- order of security-constraint in web.xml is very important!!! -->
    <security-constraint>
        <web-resource-collection>
            <web-resource-name>Secure Content</web-resource-name>
            <url-pattern>*</url-pattern>
        </web-resource-collection>

        <auth-constraint>
            <role-name>LOGON</role-name>
        </auth-constraint>

        <user-data-constraint>
            <transport-guarantee>NONE</transport-guarantee>
        </user-data-constraint>
    </security-constraint>

    <login-config>      
        <auth-method>BASIC</auth-method>
    </login-config>

    <security-role>
        <description>automatic generated role</description>
        <role-name>LOGON</role-name>
    </security-role>

</web-app>

jboss web只定义了我配置的安全领域:

<jboss-web>
  <security-domain>myRealm</security-domain>
</jboss-web>

值得一提的是,由于我原本预计BASIC身份验证方法会在我调用任何资源时提示浏览器登录表单显示。

安全子系统定义了一个名为myRealm的自定义安全域,该域使用jdbc查询:

<subsystem xmlns="urn:jboss:domain:security:2.0">
            <security-domains>
                <security-domain name="myRealm" cache-type="default">
                    <authentication>
                        <login-module code="com.login.LoginModule" flag="required" module="org.jboss.login">
                            <module-option name="dsJndiName" value="java:jboss/datasources/datasourceDSXA"/>
                            <module-option name="hashAlgorithm" value="SHA"/>
                            <module-option name="hashEncoding" value="BASE64"/>
                            <module-option name="principalsQuery" value="SELECT ...."/>
                            <module-option name="rolesQuery" value="SELECT ...."/>
                            <module-option name="unauthenticatedIdentity" value="guest"/>
                        </login-module>
                        <login-module code="Remoting" flag="optional">
                            <module-option name="password-stacking" value="useFirstPass"/>
                        </login-module>
                    </authentication>
                </security-domain>
</subsystem>

undertow安全域设置为我的自定义域:

<subsystem xmlns="urn:jboss:domain:undertow:6.0" default-server="default-server" default-virtual-host="default-host" default-servlet-container="default" default-security-domain="myRealm">

关于我可能做错了什么的想法?

共有1个答案

崔宇
2023-03-14

修改代码

 类似资料:
  • 我有一个使用SpringMVC的Java网络应用程序。该 Web 应用程序在 jboss AS7.1 服务器上运行,该服务器使用带有表单认证的 JAAS 登录模块。当用户在表单上填写其用户名和密码时,登录工作顺利。 我现在想创建一个java控制器,它“将用户登录”,就好像用户填写了日志通知一样。 当上述方法完成时,应允许对任何安全页面的任何访问,因为用户被视为已登录。 可以通过访问Jboss的lo

  • 问题内容: 我想在Java swing应用程序中显示一个网页。与使用HTML时类似,但在Java Swing中。这可能吗?如果可以,怎么办? 问题答案: 使用:

  • 编辑1我知道这个问题已经问过了,但是没有人回答,stacktrace也没有添加到里面,所以我又问了一遍。 如果我安装了twitter应用程序,然后尝试登录,那么应用程序将成功地用twitter登录,但如果我从移动端卸载twitter应用程序,然后尝试登录应用程序,那么我收到以下错误,无法用twitter登录 未能获取请求令牌 我没有看到任何WebView。之后点击登录与twitter按钮。 E/T

  • 我已将Websphere Liberty服务器配置为支持IBM知识中心中所述的管理中心。 我在Eclipse Neon环境(即localhost)的Windows 10上运行WASLiberty版本17.0.0.1。我从Chrome(版本61)连接URL(http://localhost:9080/adminCenter)。 它会显示一个登录页面(外观不好看,但可用) 我输入我的凭据并单击“提交”

  • 我们有一个内部网络应用程序,在登录时在IE 8中呈现罚款。但在chrome中,它显示的页面源如下: 尝试用开发者控制台调试。响应选项卡具有Chrome中显示的文本。HTTP响应标头具有: 内容类型的文本/平原是否导致此问题?想知道为什么它会在IE 8中渲染组件。火狐的行为和chrome一样。

  • 我目前正在尝试制作一个应用程序,允许您登录到您的帐户并查看需要显示的任何数据。 我没有使用 webview,而是为了显示信息,我将从 HTML 中解析数据,然后从那里开始工作,提取我需要显示的数据。我将在下面发布我的应用程序中的代码。 我需要帮助的是弄清楚如何用我的应用程序登录网站。 基本上,步骤应该是这样的: 1.输入用户名 2.输入密码 3.按登录按钮 4.发送用户名 5.如果-网站返回“登录