Микропрофиль JWT Web. xml возвращает 200 вместо 401 - PullRequest
1 голос
/ 08 марта 2020

Я работаю над небольшим бэкэндом. Чтобы обеспечить эту вещь, я хочу использовать JWT. Мой Tech-стек: Payara & Keycloak К счастью, я нашел отличный учебник (https://kodnito.com/posts/microprofile-jwt-with-keycloak/)

Против предложения автора я хочу защитить все конечные точки под / resources / * с помощью сеть. xml.

Это моя сеть. xml:

...
<security-constraint>
        <display-name>App-Name</display-name>
        <web-resource-collection>
            <web-resource-name>App-Name</web-resource-name>
            <description/>
            <url-pattern>/resources/*</url-pattern>
        </web-resource-collection>
        <auth-constraint>
            <description/>
            <role-name>mysimplerole</role-name>
        </auth-constraint>
    </security-constraint>

    <security-role>
        <description/>
        <role-name>mysimplerole</role-name>
    </security-role>
...

Пока все хорошо. Если я отправляю запрос конечной точке, например, http://localhost: 8080 / resources / test , я получаю 401, как и ожидалось.

Если я добавлю @LoginConfig (authMethod = "MP-JWT" ) к моей конфигурации JAXRSC. java и снова вызовите конечную точку. Я получаю 200, но контент не отправляется, я ожидаю, что появится 401. Если я добавлю JWT-токен в свой запрос, то отобразится ожидаемое содержимое 200+.

TestResource. java:

@Path("test")
public class TestResource {

    @GET
    public Response test() {
        return Response.ok("HI").build();
    }
}

JAXRSConfiguration. java

@ApplicationPath("/resources")
@LoginConfig(authMethod = "MP-JWT")
public class JAXRSConfiguration extends Application {

}

Итак, вопрос в том, что мне нужно сделать, чтобы получить 401, если к запросу не добавлен / или неверный токен?

1 Ответ

0 голосов
/ 09 марта 2020

В вашем классе конфигурации JAX-RS отсутствует аннотация @DeclareRoles({ "mysimplerole", "USER" }) для указания всех доступных ролей в вашем приложении.

@ApplicationPath("/resources")
@LoginConfig(authMethod = "MP-JWT")
@DeclareRoles({ "mysimplerole", "USER" })
public class JAXRSConfiguration extends Application {

}
...