簡體   English   中英

oauth.getToken響應vert.x密鑰庫中的訪問角色

[英]Access roles in oauth.getToken response vert.x keycloak

我正在使用以下代碼執行以下操作:1)在密鑰斗篷上登錄用戶,2)驗證用戶是否具有訪問某些資源的特定角色。

JsonObject keycloakJson = new JsonObject()
        .put("realm", "OQM") // (1)
        .put("realm-public-key", "MIIBIwercerewrcewrc7BAij3P+Nz76opTVlhWijnIGefnBygViDrUdxS/nZSDTkXrFnKy2lpNZyecWrNVD6Zs6w65pBa60zDWODkuIqE6LbbfwHBs5RyvuzAFRtRFbieZub8x4suzN5pJOUPWdtgWqQasdawercwerewvrewrvewrcwxewrvbewvrxw9k+TPKGdf3e9QXL9FGG/9084+6Z8RSZ4JL4v5YqVtpDyohf9MPJwn/i46KcAYzgleJFFCqwuPry8CEzafqXVlzIEkSqwIDAQAB") // (2)
        .put("auth-server-url", "http://152.18.17.63:8080/auth")
        .put("ssl-required", "external")
        .put("resource", "oqm") // (3)
        .put("credentials", new JsonObject().put("secret", "2343253252-c8f1-42b2-866c-87a2a7ff95f6")); // (4)

OAuth2Auth oauth2 = KeycloakAuth.create(vertx, OAuth2FlowType.PASSWORD, keycloakJson);

JsonObject tokenConfig = new JsonObject().put("username", "dummyUser").put("password", "password").put("scope", "modify-account view-account");

oauth2.getToken(tokenConfig, res -> {
    if (res.failed()) {
        rc.response().setStatusCode(HttpResponseStatus.INTERNAL_SERVER_ERROR.code()).end();
    } else {
        AccessToken token = (AccessToken)res.result();
        token.isAuthorised("ReleaseOrders", handler -> {
            if(handler.result()) {
                HttpServerResponse response = VerticleUtils.buildOKHeaders(rc);
                response.end(Json.encodePrettily(token.principal()));
            }
            else {
                VerticleUtils.notAuthorized(rc);
            }
        });
    }
});

但是,我需要獲取用戶被授權的角色列表。 我可以在返回的AccessToken對象的屬性中看到角色,但是由於其訪問權限是私有的,因此無法訪問它們。

在此處輸入圖片說明

在此處輸入圖片說明

當前,您只能從principal()方法調用中獲取完整令牌。 對於3.5.1,我們正在努力從AcessToken對象公開令牌。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM