Wildfly с Basic Auth блокирует запросы с HTTP POST для этого метода - PullRequest
0 голосов
/ 12 ноября 2018

У меня странная проблема, которая на данный момент не воспроизводима. У меня есть следующие конечные точки:

@Path("/v1/")
@Produces(MediaType.APPLICATION_JSON)
public class EndpointVersion1Base
{
    private BackendRestClient restClient;


    @EJB
    public void setRestClient(BackendRestClient restClient)
    {
        this.restClient = restClient;
    }


    @Path("/dataprivacy/")
    public Object getDataPrivacy()
    {
        return new DataPrivacyEndpoint(restClient);
    }

    @Path("/crashreporting/")
    public Object getCrashReport()
    {
        return new CrashReportEndpoint(restClient);
    }
}

Отчет о сбое конечной точки имеет обычную аутентификацию. У данных конечной точки нет аутентификации. Конечная точка обработки данных выглядит следующим образом:

@Path("/")
@Produces(MediaType.APPLICATION_JSON)
public class DataPrivacyEndpoint
{
    private BackendRestClient restClient;

    private Logger logger = LoggerFactory.getLogger(getClass());

    public DataPrivacyEndpoint(BackendRestClient restClient)
    {
        this.restClient = restClient;
    }

    public DataPrivacyEndpoint()
    {
    }

    @POST
    @Path("/")
    @Consumes(MediaType.APPLICATION_JSON)
    public Response storeConsent(
            @NotNull(message = ErrorCodes.ERR_QUERY_PARAM_NULL) @Valid String consentInputBo) throws ForbiddenException, BadRequestException
    {
        //some code
    }
}

Я получил базовую аутентификацию конечной точки аварийного отчета с помощью следующего файла web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
  <display-name>publicapi</display-name>
    <security-constraint>
        <web-resource-collection>
            <web-resource-name>Crash reporting</web-resource-name>
            <description>crash reporting service</description>
            <url-pattern>/v1/crashreporting/*</url-pattern>
        </web-resource-collection>
        <auth-constraint>
            <role-name>publicapi</role-name>
        </auth-constraint>
    </security-constraint>
    <login-config>
        <auth-method>BASIC</auth-method>
        <realm-name>UserRoles simple realm</realm-name>
    </login-config>
    <security-role>
        <role-name>publicapi</role-name>
    </security-role>
</web-app>

и jboss-web.xml

<?xml version="1.0" encoding="UTF-8"?>
<jboss-web xmlns="http://www.jboss.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.jboss.com/xml/ns/javaee http://www.jboss.org/j2ee/schema/jboss-web_5_1.xsd">
    <context-root>publicapi</context-root>
    <security-domain>other</security-domain>
</jboss-web>

Вчера все это работало. Сегодня я начал службы. Неожиданно, когда я отправил запрос POST в конечную точку хранения данных через http://192.168.0.80:8080/publicapi/v1/dataprivacy/ и получил ответ об ошибке HTTP " HTTP POST не разрешен для этого метода ". Я удивился, почему это произошло, потому что это сработало вчера. После того, как я перезапустил службы, вдруг снова заработало? Что здесь происходит? Почему это иногда работает, а иногда нет? (В настоящее время я не могу воспроизвести его). У меня есть какая-то неверная конфигурация, которая может привести к странному поведению? Боюсь, что это может произойти и в моей системе LIVE.

...