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

时间:2015-03-20 14:34:35

标签: java-ee authentication jboss wildfly-8

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

enter image description here

将服务器日志级别更改为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>

简而言之,即使在认证之后,用户&#34; sven&#34;无法访问受保护的资源。我在某个地方错过了一些配置吗?

1 个答案:

答案 0 :(得分:3)

解决了它。我错误地认为

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

是已注册的应用用户本身的名称。事实证明它应该是一个的名称,事后才知道注册每个用户的初步想法似乎是一个疯狂的游戏。