Thorntail MP JWT / Undertow:需要身份验证

Thorntail MP JWT / Undertow: required authentication

我正在尝试使用 JWT 身份验证在 thorntail 中设置 JAX-RS 服务。一切正常(我可以注入 Principal 并且用户已正确设置),除了在身份验证失败的情况下,仍然会在没有任何 401-HTTP-Header 的情况下发送答案。我所做的是:

我还需要做什么才能使其正常工作?我是否需要向端点添加任何注释?正如我所说,我想 return 一个 401 以防身份验证失败。

到目前为止我发现:JASPICAuthenticationMechanism.isMandatory 需要 return true 才能正常工作。如果是这种情况,JWTAuthMechanism.sendChallenge 会在 JWTAuthMechanism.authenticate 失败后触发,因此会向客户端发送 401。但我不知道,在哪种情况下 isMandatory return 是正确的。

感谢您在此案例中提供的任何帮助!

一,安全域的配置不是100%正确。这是 YAML 的一部分的修复:

      roles-token-stack:
        login-modules:
        - login-module: jwt-jaspi-login-module
          code: org.wildfly.swarm.microprofile.jwtauth.deployment.auth.jaas.JWTLoginModule
          flag: required

二,确实需要在 JAX-RS 资源上使用常见的 Java EE 注释(@RolesAllowed@DenyAll@PermitAll)。

解决方案(感谢 Ladicek,请参阅下面的评论):

如果你想使用 MP JWT,不要以 Swarm 开始,如果以 thorntail:run 开始,不要忘记设置标志 useUberJar