没有可用于编程登录的身份验证器



当我尝试在两个不同的会话中使用两个不同的用户登录时,我总是得到这个错误。

13:27:28,444 ERROR [com.commit.steam.rest.RestLoginService] (http-localhost-127.0.0.1-8080-2)登录错误:javax.servlet.ServletException: No authenticator available for programmatic login[jbossweb-7.0.13.Final.jar][jbossweb-7.0.13.Final.jar][steam-rest-api-0.1.6-SNAPSHOT.jar:]

从standalone.xml:

<security-domain name="steam" cache-type="default">
                <authentication>
                    <login-module code="org.jboss.security.auth.spi.DatabaseServerLoginModule" flag="required">
                        <module-option name="dsJndiName" value="java:jboss/datasources/STEAMDS"/>
                        <module-option name="principalsQuery" value="select U.PASSWORD from USERS U where U.EMAIL=?"/>
                        <module-option name="rolesQuery" value="select R.NAME, 'Roles' from USERS U join USER_ROLES UR on U.ID = UR.USER_ID join ROLES R on UR.ROLE_ID = R.ID where U.EMAIL=?"/>
                        <module-option name="hashAlgorithm" value="SHA-256"/>
                        <module-option name="hashEncoding" value="base64"/>
                    </login-module>
                </authentication>
            </security-domain>

jboss-web.xml:

<?xml version="1.0"?>
<jboss-web>
  <security-domain>steam</security-domain>
</jboss-web>

我使用JBoss-as 7.1.1.Final

在调试时,我可以看到第一个请求(HttpServletRequest.context.authenticator)具有NonLoginAuthenticator和第二个会话的登录没有任何authenticator附加到它(即HttpServletRequest.context.authenticator为空)。第一个会话中的每个后续请求在请求上都具有相同的Authenticator(当我为一个用户测试业务流时)。

HttpServletRequest被注入到类级别

@Context
private HttpServletRequest request;
protected HttpServletRequest request() {
    return this.request;
}

(我试图将注入移动到方法级别,它没有帮助)。我的rest类被注释为@Stateless bean(允许注入)。

我尝试切换会话(我使用Chrome和FireFox来确保不同的会话),但它没有改变任何东西。

有没有人有任何想法或导致我需要在哪里寻找这个问题?

非常感谢Avi

在web.xml中添加一个<security-constraint>元素。像这样:

<security-constraint>
        <web-resource-collection>
              <web-resource-name>Permit all</web-resource-name>
              <url-pattern>/*</url-pattern>
        </web-resource-collection>
        <auth-constraint>
              <role-name>*</role-name>
        </auth-constraint>
  </security-constraint>

相关内容

  • 没有找到相关文章

最新更新