Web 应用程序中经过身份验证的用户在受保护站点上收到 403 禁止访问

Authenticated user in Web Application receives 403 Forbidden on protected site

我在我的 WildFly 8.2 应用程序服务器上配置了一个名为 "sven" 的应用程序用户。我正在尝试使用 BASIC 方法实现基本安全性。尝试访问受保护资源 (secret/infidels.xhtml) 后,系统提示我登录对话框。填写 "sven" 的用户详细信息后,我收到一个禁止访问的页面。

将服务器日志级别更改为 TRACE 后,日志确认 "sven" 已正确验证:
13:45:09,481 TRACE [org.wildfly.extension.undertow] (default task-3) User: org.wildfly.extension.undertow.security.AccountImpl$AccountPrincipal@360e4c is authenticated


项目结构:

src
└── main
    ├── resources
    └── webapp
        ├── WEB-INF
        │   ├── faces-config.xml
        │   ├── jboss-web.xml
        │   └── web.xml
        ├── index.xhtml
        └── secret
            └── infidels.xhtml


web.xml

<web-app>
    <servlet>
        <servlet-name>Faces Servlet</servlet-name>
        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>*.xhtml</url-pattern>
    </servlet-mapping>

    <welcome-file-list>
        <welcome-file>index.xhtml</welcome-file>
    </welcome-file-list>

    <security-constraint>
        <web-resource-collection>
            <web-resource-name>MySecret</web-resource-name>
            <url-pattern>/secret/*</url-pattern>
        </web-resource-collection>
        <auth-constraint>
            <role-name>sven</role-name>
        </auth-constraint>
    </security-constraint>
    <login-config>
        <auth-method>BASIC</auth-method>
        <realm-name>PG6100</realm-name>
    </login-config>
    <security-role>
        <role-name>sven</role-name>
    </security-role>
</web-app>


jboss-web.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE jboss-web PUBLIC "-//JBoss//DTD Web Application 5.0//EN"
    "http://www.jboss.org/j2ee/dtd/jboss-web_5_0.dtd">
<jboss-web>
    <security-domain>other</security-domain>
</jboss-web>

简而言之,即使经过身份验证,用户 "sven" 也无法访问受保护的资源。我在某处缺少某些配置吗?

解决了。我误以为是

中指定的名字
<role-name>sven</role-name>

是已注册应用程序 用户 本身的名称。事实证明它应该是 的名称,事后看来,这让注册每个用户的最初想法看起来像是疯子的游戏。