java - 使用 keycloak 管理客户端以编程方式为具有 access-type public 的客户端创建用户

标签 java keycloak

我刚刚开始使用 keycloak,似乎遇到了障碍。我无法使用 java 的 keycloak-admin-client 以编程方式创建用户。我的keycloak服务器版本是8.0.0,库/jar版本也相同。当我尝试创建用户时,我的程序只是坐在那里继续等待,就像在日志中我可以看到登录错误

2019-12-03 20:10:19,842 WARN  [org.keycloak.events] (default task-26) type=LOGIN_ERROR, realmId=root-admin, clientId=demo-app, userId=null, ipAddress=192.x.x.x, error=not_allowed, auth_method=oauth_credentials, grant_type=password, client_auth_method=client-secret


Keycloak keycloak = KeycloakBuilder.builder() //
                .serverUrl("http://192.x.x.x:8080/auth") //
                .realm("root-admin") //
                .grantType(OAuth2Constants.PASSWORD) //
                .clientId("demo-app")
                .clientSecret("")////
                .username("genghis khan") //
                .password("1234") //
                .build();
        CredentialRepresentation credential = new CredentialRepresentation();
        credential.setType(CredentialRepresentation.PASSWORD);
        credential.setValue("12345678");
        UserRepresentation user = new UserRepresentation();
        user.setEnabled(true);
        user.setUsername("michaeljackson");
        user.setFirstName("michael");
        user.setLastName("jackson");
        user.setCredentials(Arrays.asList(credential));

        Response resp=keycloak.realm("root-admin").users().create(user);
        System.out.println(resp.getStatus());

我的客户端是一个面向公众的应用程序,因此它的访问类型设置为公共(public),因此不会为其生成客户端 key ,而且 genghis khan 用户具有管理员角色,并且 root-admin 领域已由我创建。需要有关如何完成这项工作的帮助

最佳答案

尝试在管理控制台上启用 demo-app 客户端的“Direct Access Grants Enabled”。

.grantType(OAuth2Constants.PASSWORD) //

此行表示您正在使用“资源所有者密码凭据授予”,并且需要启用它。

另请参阅: https://www.keycloak.org/docs/8.0/server_admin/index.html#oidc-clients

关于java - 使用 keycloak 管理客户端以编程方式为具有 access-type public 的客户端创建用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59160385/

相关文章:

java - 使用 Counter 类递增和递减 : java

java - 在java中输入带分数

java - 将 Double 对象转换为 int

json - kubernetes 上的 Keycloak 和使用 log4j2 记录 json 布局格式

java - 从 JWT token 中删除角色信息

java - Firefox Selenium 驱动程序任意加载失败

java - 无法为 com.android.build.gradle.internal.api.DefaultAndroidSourceSet 类型的源集 main 设置未知属性 's'

Keycloak 映射多个用户属性

javascript - Keycloak - 如何禁用两个(Angular)客户端应用程序之间的共享 session ?

azure-active-directory - keycloak 与 Azure AD 集成以进行 webapp 身份验证