gpt4 book ai didi

java - 如何配置 Thorntail 2.5.0.Final 以使用 Keycloak 中的 JWT token 授权用户?

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

我在通过从 Keycloak 收到的不记名 token 授权用户时遇到问题。

任务是将来自 Angular 应用程序的用户请求授权给我的后端 Thorntail 2.5.0.Final 微服务。我已经涵盖了前端部分,并且应用程序将 Authorization: Bearer {TOKEN} 附加到对我的服务的每个请求。

我尝试遵循这两个指南: https://rieckpil.de/howto-microprofile-jwt-authentication-with-keycloak-and-react/ https://kodnito.com/posts/microprofile-jwt-with-keycloak/

使用thorntail microprofile和keycloak-micropfofile-jwt-fractions,但它们似乎都不起作用。

    @Inject
@ConfigProperty(name = "message")
private String message;
@Inject
private JsonWebToken callerPrincipal;


@GET
@RolesAllowed("testrole")
@ApiOperation(value = "Pridobi uporabnike", notes = "Pridobi vse uporabnike iz baze.", response = Uporabnik.class)
public Response getUsers() {
return Response.ok(callerPrincipal.getRawToken() + " is allowed to read message: " + message).build();
}

并得到以下响应

允许 null 读取消息:非常安全 42!

我尝试的第二件事是添加 keycloak 分数并按照此示例 https://github.com/thorntail/thorntail-examples/tree/master/security/keycloak 通过 header 发送 token

我添加了 resources/keycloak.json

{
"realm": "Intra",
"auth-server-url": "https://idm.ra.net/auth",
"ssl-required": "external",
"resource": "prenosOSBE",
"verify-token-audience": true,
"credentials": {
"secret": "e9709793-9333-40a7-bb95-2026ad98b568"
},
"use-resource-role-mappings": true,
"confidential-port": 0
}

以及示例中的 KeycloakSecurityContextFilter.java。如果我尝试调用我的端点,并且未随请求发送 token ,则会收到 401 Unauthorized 或 403 Forbidden。

那么我想知道的是,如果我的任务是通过 Thorntail 微服务上的 Bearer token 对用户进行授权,则应使用哪一部分?

microprofile-jwt、keycloak-microprofile-jwt 或 keycloak 以及其工作所需的最低配置是什么?

最佳答案

keycloak fraction 是 WildFly 的 Keycloak 适配器,按照 https://www.keycloak.org/docs/4.8/securing_apps/index.html#jboss-eap-wildfly-adapter它允许您使用 Java EE 中的常见安全机制(<security-constraint> 中的 web.xml 等)您可以在此处查看示例:https://github.com/rhoar-qe/thorntail-test-suite/tree/master/wildfly/keycloak

microprofile-jwt允许您使用裸 MicroProfile JWT(即 JAX-RS 资源上的 @RolesAllowed 等)。您必须配置预期的颁发者、其公钥等,如 MP JWT 文档中所述。您可以在此处查看示例:https://github.com/rhoar-qe/thorntail-test-suite/tree/master/microprofile/microprofile-jwt-1.0

keycloak-microprofile-jwt有点混合。它不会公开 Keycloak 适配器,而是在内部使用它来验证 Keycloak 颁发的 token ,并通过 MicroProfile JWT 公开 token 。您可以在此处查看示例:https://github.com/thorntail/thorntail/tree/master/testsuite/testsuite-keycloak-mpjwt

关于java - 如何配置 Thorntail 2.5.0.Final 以使用 Keycloak 中的 JWT token 授权用户?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57183088/

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