gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 09:02:43 25 4
gpt4 key购买 nike

我正在开发一个小型后端。为了确保这一点,我想使用 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 token 添加到我的请求中,则会显示 200 + 预期内容。

测试资源.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 {

}

所以问题是,如果请求中没有附加/或附加了无效 token ,我该怎么做才能收到 401?

最佳答案

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

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

}

关于java - Microprofile JWT web.xml 返回 200 而不是 401,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60583971/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com