【问题标题】:Authenticate all OpenLiberty end-points through JWT通过 JWT 验证所有 OpenLiberty 端点
【发布时间】:2022-12-23 02:46:47
【问题描述】:

我有一个设置,使得用 @RolesAllowed 注释的端点需要身份验证和授权。但是,那些没有任何特定注释的端点甚至不需要身份验证。我如何配置服务器,使所有 URL 默认都受到保护,至少需要一个登录用户?

【问题讨论】:

    标签: jakarta-ee jwt open-liberty microprofile


    【解决方案1】:

    更新-这些目前都不适用于带有 JWT 的 JAX-RS
    *目前将其保留为“已测试 - 不工作”以供参考。 *

    最简单的方法是在您的web.xml 中提供security-constraints。像这样(您可以将登录更改为 FORM)。这也可以通过注释来完成,但这种方式更直接:

    <security-constraint>
        <web-resource-collection>
            <web-resource-name>all-resources</web-resource-name>
            <url-pattern>/*</url-pattern>
            <http-method>GET</http-method>
            <http-method>POST</http-method>
        </web-resource-collection>
        <auth-constraint>
            <role-name>auth-user</role-name>
        </auth-constraint>
    </security-constraint>
    <login-config>
        <auth-method>BASIC</auth-method>
    </login-config>
    <security-role>
        <role-name>auth-user</role-name>
    </security-role>
    

    然后在server.xml提供角色绑定(类似的可以通过ibm-web-bnd.xml文件完成):

    <application-bnd>
        <security-role name="admin">
            <group name="admins" />
        </security-role>
        <security-role name="auth-user">
            <special-subject type="ALL_AUTHENTICATED_USERS" />
        </security-role>
    </application-bnd>
    

    【讨论】:

    • 谢谢,@Gas。你能解释一下每一位的作用吗?我不确定它是否适用于我的情况,我已经有一个单独的系统来定义角色和所有其他登录详细信息(表单等)。通过该系统,获取 JWT 令牌并将其发送到 OpenLiberty 服务器,由于 MicroProfile,该服务器可以理解它,而这正是 OpenLiberty 应该关心的。我也没有 web.xml 文件(我不熟悉它)。
    • @DanielM 如果您只是对使用 JWT 令牌保护微服务感兴趣,请查看本教程 Securing microservices with JSON Web Tokens 并让我知道您是否清楚。
    • 在这种情况下,您不需要 web.xml,因为所有数据都取自 JWT 声明。在没有 JWT 的情况下访问服务应该受到限制,但请确保您拥有所有必需的功能,如 appSecuritympJwt 等。
    • 我几乎已经有了那个设置,这就是我设法使 @RolesAllowed 工作的方式。但是,所有没有 @RolesAllowed 的端点(在您链接的指南中没有)不需要身份验证(它们应该需要身份验证,而不是授权)。
    • @DanielM 我将进行一些测试。完成后我会更新。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-14
    • 2019-07-18
    • 2017-11-22
    • 1970-01-01
    • 2017-10-02
    • 2020-10-09
    • 2022-11-30
    相关资源
    最近更新 更多