Microprofile JWT web.xml returns 200 而不是 401
Microprofile JWT web.xml returns 200 instead of 401
我正在开发一个小型后端。为了保护我想使用 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 + 预期内容。
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 {
}
所以问题是,如果 no/or 将无效令牌附加到请求,我必须做什么才能收到 401?
您的 JAX-RS 配置 class 缺少用于指定应用程序中所有可用角色的 @DeclareRoles({ "mysimplerole", "USER" })
注释。
@ApplicationPath("/resources")
@LoginConfig(authMethod = "MP-JWT")
@DeclareRoles({ "mysimplerole", "USER" })
public class JAXRSConfiguration extends Application {
}
我正在开发一个小型后端。为了保护我想使用 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 + 预期内容。
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 {
}
所以问题是,如果 no/or 将无效令牌附加到请求,我必须做什么才能收到 401?
您的 JAX-RS 配置 class 缺少用于指定应用程序中所有可用角色的 @DeclareRoles({ "mysimplerole", "USER" })
注释。
@ApplicationPath("/resources")
@LoginConfig(authMethod = "MP-JWT")
@DeclareRoles({ "mysimplerole", "USER" })
public class JAXRSConfiguration extends Application {
}