其实我使用的是Vertx Routher,我在标题中有授权的请求,想要查找有关令牌的更多信息,因此我尝试创建 KeycloakSecurityContext 使用以下代码形成Vert.x RoutingContext:
KeycloakSecurityContext securityContext = (KeycloakSecurityContext) routingContext.session().get(KeycloakSecurityContext.class.getName());
但它失败了。 (NPE,空的seeion.data)
任何人都可以提示我,我如何从Vertx路线创建Keycloak Context?将来我想终止那个令牌,所以欢迎额外的提示。
谢谢,
答案 0 :(得分:1)
Vert.x Web中没有Keycloak安全上下文。 Vert.x和Keycloak之间的所有互动都是通过OAuth2协议完成的,该协议独立于您使用的供应商,例如:Keycloak,Facebook,Google,Twitter,Linkedin等......
从版本3.3.0开始,您将能够使用OAuth2令牌中编码的keycloak授权作为Vert.x auth权限,因此您不仅可以进行身份验证,还可以进行授权。
这是一个例子:
// Initialize the OAuth2 Library
OAuth2Auth oauth2 = OAuth2Auth.createKeycloak(vertx, OAuth2FlowType.PASSWORD, keycloakJson);
// first get a token (authenticate)
oauth2.getToken(new JsonObject().put("username", "user").put("password", "secret"), res -> {
if (res.failed()) {
// error handling...
} else {
AccessToken token = res.result();
// now check for permissions
token.isAuthorised("account:manage-account", r -> {
if (r.result()) {
// this user is authorized to manage its account
}
});
}
});