vertx 中的 JWT 身份验证抛出未授权
JWT authentication in vertx throwing unauthorized
在我的应用程序中,我正在使用 react with keycloak 身份验证。我正在尝试使用从 keycloak 接收到的令牌来保护我的后端 vertx API。
我关注了这个博客 http://paulbakker.io/java/jwt-keycloak-angular2/
我在 React 中这样调用
return await fetch('/api/getAuthentication',{
method: 'GET',
headers: {"Authorization" : `Bearer ${token}`}
})
}
在我的vertx端
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 代码。
首先,JWTAuthOptions
不会对您在键 "public-key"
下设置的内容执行任何操作,因为它没有映射到它的任何 属性(即使有可能在 Java 中有一个 -
在 属性 名称中)。因此,要么直接使用设置器在 JWTAuthOptions
上设置您的值,要么咨询 documentation 以获取正确的键。
其次,如果您的 Keycloak 设置了 OIDC,那么您可以简单地使用 OpenIDConnectAuth
class 自动从 Keycloak 中发现必要的参数。哪个更简单。
在我的应用程序中,我正在使用 react with keycloak 身份验证。我正在尝试使用从 keycloak 接收到的令牌来保护我的后端 vertx API。 我关注了这个博客 http://paulbakker.io/java/jwt-keycloak-angular2/
我在 React 中这样调用
return await fetch('/api/getAuthentication',{
method: 'GET',
headers: {"Authorization" : `Bearer ${token}`}
})
}
在我的vertx端
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 代码。
首先,JWTAuthOptions
不会对您在键 "public-key"
下设置的内容执行任何操作,因为它没有映射到它的任何 属性(即使有可能在 Java 中有一个 -
在 属性 名称中)。因此,要么直接使用设置器在 JWTAuthOptions
上设置您的值,要么咨询 documentation 以获取正确的键。
其次,如果您的 Keycloak 设置了 OIDC,那么您可以简单地使用 OpenIDConnectAuth
class 自动从 Keycloak 中发现必要的参数。哪个更简单。