Microprofile JWT web.xml返回200,而不是401

问题描述 投票:1回答:1

我正在小型后端上工作。为了确保这一点,我想使用JWT。我的技术栈是:Payara和Keycloak幸运的是,我找到了一个很棒的教程(https://kodnito.com/posts/microprofile-jwt-with-keycloak/

根据作者的建议,我想通过web.xml保护/ resources / *下的所有端点。

这是我的web.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”)添加到我的JAXRSConfiguration.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?

java jwt jax-rs payara microprofile
1个回答
0
投票

您的JAX-RS配置类缺少用于指定应用程序中所有可用角色的@DeclareRoles({ "mysimplerole", "USER" })注释。

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

}
© www.soinside.com 2019 - 2024. All rights reserved.