当前位置: 首页 > 知识库问答 >
问题:

我如何通过ID获得其他用户信息(用户名,第一名)?[钥匙斗篷]

谈桐
2023-03-14

我在这里试图实现的是避免将keycloak用户数据库复制到另一个本地数据库,但似乎不可能访问任何其他用户信息,除了当前会话中的一个...

共有1个答案

顾单弓
2023-03-14

您可以使用Admin REST API。相关API的详细描述可以在这里获得。另外,您还可以使用JAVA包装器API。请找到以下几个例子。

示例1,REST:

获取访问令牌:

curl \
  -d "client_id=admin-cli" \
  -d "username=admin" \
  -d "password=secret" \
  -d "grant_type=password" \
  "http://localhost:8080/auth/realms/master/protocol/openid-connect/token"
curl \
  -H "Authorization: bearer eyJhbGciOiJSUzI...." \
  "http://localhost:8080/auth/admin/realms/master/users"
[
     {
        "id":"349f67de-36e6-4552-ac54-e52085109616",
        "username":"admin",
        "enabled":true,
        ...
     },
     {
        "id":"08afb701-fae5-40b4-8895-e387ba1902fb",
        "username":"lbalev",
        "enabled":true,
        ....
     }
  ]
curl \
  -H "Authorization: bearer eyJhbGciOiJSU...." \
  "http://localhost:8080/auth/admin/realms/master/users/349f67de-36e6-4552-ac54-e52085109616"
public class TestUserAccess {

  private static final String SERVER_URL = "http://localhost:8080/auth";
  private static final String REALM = "master";
  private static final String USERNAME = "admin";
  private static final String PASSWORD = "secret";
  private static final String CLIENT_ID = "admin-cli";

  public static void main(String[] args) {

    Keycloak keycloak = KeycloakBuilder
        .builder()
        .serverUrl(SERVER_URL)
        .realm(REALM)
        .username(USERNAME)
        .password(PASSWORD)
        .clientId(CLIENT_ID)
        .resteasyClient(new ResteasyClientBuilder().connectionPoolSize(10).build())
        .build();

    UsersResource usersResource = keycloak.realm(REALM).users();
    UserResource userResource = usersResource.get("08afb701-fae5-40b4-8895-e387ba1902fb");
    System.out.println(userResource.toRepresentation().getEmail());
  }
}
dependencies {
    compile group: 'org.keycloak', name: 'keycloak-admin-client', version: '3.3.0.CR2'
    compile group: 'org.jboss.resteasy', name: 'resteasy-jaxrs', version: '3.1.4.Final'
    compile group: 'org.jboss.resteasy', name: 'resteasy-client', version: '3.1.4.Final'
    compile group: 'org.jboss.resteasy', name: 'resteasy-jackson2-provider', version: '3.1.4.Final'
}
 类似资料:
  • 我有一个Web角前端,API网关受Cognito和Lambda保护,用于其他业务用例。登录和授权工作正常。我正在使用AWS Javascript SDK进行授权。像https://s3.amazonaws.com/solutions-reference/mobile-backend/latest/mobile-app-backend.pdf 在我的lambda中,我需要获得其他用户的信息,如名字、

  • 我正在构建一个应用程序,前端有Angular,背面有Laravel。我的问题是,如何通过在帖子表上使用他们的“author_id”来返回/检索用户的全名,而在用户表上使用“user_id”?我有一个用户表和帖子表看起来像这样: 我的用户模型看起来像这样: 我的Post Model看起来像这样: 假设我的路由是正确的(是的,如果需要,我可以提供),我的PostController有以下方法来检索帖子

  • 用户:用户名=>{密码:哈希,年龄:45} 用户:0=>{USERNAME:USERNAME,password:HASH,年龄:45} 请注意,我希望通过名称查找用户,因此需要第二组键值来将用户名与ID相关联。 考虑到每个用户名都是唯一的,并且必须是字母数字的,是否有任何特殊的原因来说明使用ID系统可能是有益的。 附言。由于Redis处理哈希的方式,我实际上不确定这两种方法之间的内存差异,所以关于

  • 标题试图解释该场景: 该客户具有登录功能,允许同名但在不同位置(商店)的用户。 在登录页面,用户通知用户名、密码和所需的存储。 使用Spring Security(使用JPA)我创建了一个UserDetailsService实现,但此接口始终接收一个用户名(并且存储对于与其他用户不同至关重要)。 鉴于这种情况,我有两个问题: > 如何通知spring security有关附加字段的信息?(门店)

  • 我正在尝试配置我的本地键盘斗篷8.0.1实例,以使用谷歌作为身份提供者。我正在按照我在这里找到的说明进行操作。我已经相应地配置了我的身份提供者、领域和客户端。当我点击登录页面时,我看到执行谷歌登录的按钮。然而,当我点击它并浏览谷歌同意页面时,我最终被带回键盘斗篷,看到一个错误,上面写着,在我的键盘斗篷日志中,我看到以下内容: 除了说明中的领域名称外,我没有更改任何内容。知道为什么我会看到此错误吗?