【发布时间】:2021-07-23 14:07:34
【问题描述】:
在我的应用程序中,我正在使用带有 keycloak 身份验证的反应。我正在尝试使用从 keycloak 接收到的令牌来保护我的后端 vertx API。 我关注了这个博客http://paulbakker.io/java/jwt-keycloak-angular2/
我是这样从 react 中调用的
return await fetch('/api/getAuthentication',{
method: 'GET',
headers: {"Authorization" : `Bearer ${token}`}
})
}
在我的顶点侧
JsonObject authConfig = new JsonObject()
.put("public-key", "MyPublicKeyFromKeycloak")
.put("permissionsClaimKey", "realm_access/roles");
JWTAuth authProvider = JWTAuth.create(vertx, new JWTAuthOptions(authConfig));
router.route("/api/*").handler(JWTAuthHandler.create(authProvider));
我尝试用下面的代码进行测试,
router.route("/api/getAuthentication").handler(ctx -> {
logger.info("Headers: {}", ctx.request().headers().get("Authorization"));
logger.info(ctx.user().principal().encodePrettily());
});
我看不到任何日志,在我的浏览器中响应是“未经授权”的 401 代码。
【问题讨论】:
-
你必须
end()处理程序中某处的 RequestContext。否则不会被退回 -
@injecteer,它没有进入“/api/getAuthentication”处理程序。我已经尝试过 end(),还是一样,这就是为什么我看不到任何日志
标签: java reactjs jwt keycloak vert.x