我在通过从 Keycloak 收到的 Bearer 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!
我尝试的 2. 事情是添加 keycloak 分数并按照此示例通过标头发送令牌https://github.com/thorntail/thorntail-examples/tree/master/security/keycloak
我添加了资源/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。如果我尝试调用我的端点,如果我没有随请求发送令牌,我会得到 401 Unauthorized 或 403 Forbidden。
所以我想知道的是,如果我的任务是通过我的 Thorntail 微服务上的 Bearer 令牌授权用户,那么应该使用哪个分数?
microprofile-jwt、keycloak-microprofile-jwt 或 keycloak,它工作所需的最低配置是什么?