2016-04-14 87 views
0

其實我使用Vertx Routher,和我有頭有授權的請求,並希望找到有關令牌的詳細信息,所以我想盡量創造KeycloakSecurityContext形式Vert.x RoutingContext通過使用這樣的代碼:KeycloakSecurityContext從vertx RoutingContext

KeycloakSecurityContext securityContext = (KeycloakSecurityContext) routingContext.session().get(KeycloakSecurityContext.class.getName()); 

但它失敗了。 (NPE,empty seesion.data)

任何人都可以提示我,我如何從Vertx路由創建Keycloak上下文?將來我想終止令牌,所以額外的提示是值得歡迎的。

謝謝,

回答

1

Vert.x Web中沒有Keycloak安全上下文。 Vert.x和Keycloak之間的所有交互均通過OAuth2協議完成,該協議獨立於您正在使用的供應商,例如:Keycloak,Facebook,Google,Twitter,Linkedin等......

從版本3.3.0開始您將可以使用OAuth2令牌中編碼的keycloak授權作爲Vert.x授權中心,因此您不僅可以進行身份​​驗證,還可以進行授權。

下面的例子:

// 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 
      } 
     }); 
     } 
}); 
+0

感謝您的答覆! – zyxerdima