我在通过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/
具有刺尾形轮廓和钥匙斗篷-micropfofile-jwt-馏分,但它们似乎都不起作用。
@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();
}
并得到以下答复
允许空值读取消息:“非常安全42”!
我尝试过的2.事情是添加密钥斗篷分数,并按照此示例https://github.com/thorntail/thorntail-examples/tree/master/security/keycloak
通过标头发送令牌我添加了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。 如果我尝试拨打我的端点的电话,如果我未随请求发送令牌,则会收到401未经授权或403禁止访问。
如果我的任务是通过Thorntail微服务上的Bearer令牌授权用户,那么我想知道应该使用哪个分数?
microprofile-jwt,keycloak-microprofile-jwt或keycloak,工作所需的最低配置是什么?
答案 0 :(得分:0)
keycloak
部分是https://www.keycloak.org/docs/4.8/securing_apps/index.html#jboss-eap-wildfly-adapter中用于WildFly的Keycloak适配器,它使您可以使用Java EE(<security-constraint>
中的web.xml
s等)的通用安全机制。可以在此处查看示例: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发行的令牌,并通过MicroProfile JWT公开令牌。您可以在此处查看示例:https://github.com/thorntail/thorntail/tree/master/testsuite/testsuite-keycloak-mpjwt