相关疑难解决方法(0)

如何在javascript中解码jwt令牌

如何使用JavaScript解码JWT的有效负载?没有图书馆.因此令牌只返回我的前端应用程序可以使用的有效负载对象.

示例令牌: xxxxxxxxx.XXXXXXXX.xxxxxxxx

结果就是有效载荷:

{exp: 10012016 name: john doe, scope:['admin']}
Run Code Online (Sandbox Code Playgroud)

javascript jwt

167
推荐指数
14
解决办法
13万
查看次数

Keycloak/OIDC:检索用户组属性

我已经从 Keycloak 的 OIDC 端点中提取了用户的组信息,但它们没有随我定义的组 ATTRIBUTES 一起提供(请参阅组表单中的“属性”选项卡,靠近“设置”)。是否有权利要求添加到我的请求中?

我正在使用 RESTeasy 客户端访问 Keycloak 的管理 API(结果比使用提供的管理客户端好得多):

@Path("/admin/realms/{realm}")
public interface KeycloakAdminService {
    @GET
    @Path("/users/{id}/groups")
    @Consumes(MediaType.APPLICATION_JSON)
    @Produces(MediaType.APPLICATION_JSON)
    List<GroupRepresentation> getUserGroups(@PathParam("realm") String realm, @PathParam("id") String userId,
                                            @HeaderParam(AUTHORIZATION) String accessToken);
    //DEBUG the access token must always be prefixed by "Bearer "
}
Run Code Online (Sandbox Code Playgroud)

所以我可以获取用户的组:

private void fetchUserGroups(UserInfoOIDC infos, String userId) {
    log.info("Fetching user groups from {}...", getRealm());
    try {
        KeycloakAdminService proxy = kcTarget.proxy(KeycloakAdminService.class);
        AccessTokenResponse response = authzClient.obtainAccessToken(getAdminUsername(), getAdminPassword());
        List<GroupRepresentation> groups = proxy.getUserGroups(getRealm(), userId,
                "Bearer " + response.getToken());
        infos.importUserGroups(groups); //DEBUG …
Run Code Online (Sandbox Code Playgroud)

resteasy openid-connect keycloak-services

10
推荐指数
3
解决办法
2万
查看次数

Python Keycloak 获取用户的角色和组

使用Key Cloak创建组并为组分配角色。然后创建用户并将用户分配到特定组。

为了在我的应用程序中访问所有这些,我使用Python-Keycloak

github doc 中所述,使用以下代码访问用户信息。

from keycloak import KeycloakOpenID

keycloak_openid = KeycloakOpenID(server_url="http://localhost:8080/auth/",
                    client_id="account",
                    realm_name="demo",
                    client_secret_key="my_secret_key")

config_well_know = keycloak_openid.well_know()

token = keycloak_openid.token("username", "password")
userinfo = keycloak_openid.userinfo(token['access_token'])
Run Code Online (Sandbox Code Playgroud)

获取以下用户信息

{
    'family_name': 'Lastname', 
    'preferred_username': 'user_name', 
    'sub': 'some_key', 
    'given_name': 'Fistname', 
    'name': 'Firstname Lastname', 
    'email': 'email@example.com'
}
Run Code Online (Sandbox Code Playgroud)

如何访问用户的组和角色信息。

python keycloak

1
推荐指数
2
解决办法
6550
查看次数