繁体   English   中英

Keycloak HTTP 401 使用 spring 引导服务创建新用户时未授权

Keycloak HTTP 401 Unauthorized while creating new user using spring boot service

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

尝试使用 spring 引导服务在 keycloak 中创建新用户时出现 javax.ws.rs.NotAuthorizedException: HTTP 401 未经授权。

在 KeycloakConfig class 中。 它在使用 HTTP 401 Unauthorized 创建 keycloak 实例时中断。 “消息”:“ javax.ws.rs.NotAuthorizedException:HTTP 401 未经授权”,

我错过了什么吗? 我在 keycloak 客户端或 realm 角色中没有任何额外的角色配置。
我正在考虑在 KeycloakBuilder.builder 中添加“.authorization(...) 但我不确定要指定什么。

public static Keycloak getInstance(User user) {
        if (keycloak == null) {
            keycloak = KeycloakBuilder.builder()
                    .serverUrl("http://localhost:8080/auth")
                    .realm("myrealm")
                    .username(user.getUsername()).password(user.getPassword())
                    .grantType(OAuth2Constants.PASSWORD)
                    .clientId("myclient")
                    .clientSecret("0a53569564d2a748a0a5482699")
                    .resteasyClient(new ResteasyClientBuilder().connectionPoolSize(10).build()).build();
        }
        return keycloak;
    }

在役 class

UsersResource usersResource = KeycloakConfig.getInstance(user).realm("myrealm").users();
        CredentialRepresentation credentialRepresentation = createPasswordCredentials(user.getPassword());

        UserRepresentation kcUser = new UserRepresentation();
        kcUser.setUsername(user.getEmail());
        kcUser.setCredentials(Collections.singletonList(credentialRepresentation));
        kcUser.setFirstName(user.getFirstName());
        kcUser.setLastName(user.getLastName());
        kcUser.setEmail(user.getEmail());
        kcUser.setEnabled(true);
        kcUser.setEmailVerified(false);
        
        javax.ws.rs.core.Response response = usersResource.create(kcUser);
        System.out.println("kcUser: " + kcUser.toString());
        System.out.printf("Repsonse: %s %s%n", response.getStatus(), response.getStatusInfo());

在属性文件中

keycloak.realm=myrealm
keycloak.auth-server-url=http://localhost:8080/auth
keycloak.resource=myclient
keycloak.credentials.secret=0a5356444d26a748a0a5482699
keycloak.ssl-required= external
keycloak.use-resource-role-mappings= true
keycloak.bearer-only=true
keycloak.principal-attribute=preferred_username
3 个回复

由于缺少导入,我假设KeycloakBuilder来自 package org.keycloak.admin.client.KeycloakBuilder

根据您提供的代码示例,您正在尝试使用您只想创建的用户实例化Keycloak实例。 该用户没有创建新用户的权限。

也就是说,您需要使用具有管理员权限/角色的用户创建一个 Keycloak 实例。 至少“ manage-users, view-clients, view-realm, view-users

 keycloak = KeycloakBuilder.builder()
            .serverUrl(KEYCLOAK_SERVER_URL)
            .realm("master")
            .clientId("admin-cli")
            .username("admin")
            .password("admin")
            .build();

通过管理员访问权限,您可以为多个领域创建用户。

// Create a new user
    final UserRepresentation newUser = new UserRepresentation();
    
    newUser.setUsername("username");
    newUser.setFirstName("fristname");
    newUser.setLastName("lastname");
    newUser.setEmail("username@example.com");
    newUser.setEnabled(true);

    // Now you need to get the realm you want the user to add to and the user ressource
    final UserResource realm = keycloak.realm("nameOfTheRealm").users();
    
   // Create the user for the realm
   final Response createUserResponse = userRessource.create(newUser);

 // check response if everything worked as expected

确保在“myrealm”下创建了管理员帐户。 您不能使用默认管理员帐户(主领域)为“myrealm”创建用户

并且请检查您在 Keycloak 实例中生成的客户端密码是否与您在应用程序中使用的相同。 如果您使用的是客户端密码。

2 未经授权的401-Spring Boot服务

我有一个Spring Boot服务,调用了另一个Spring Boot服务。 两项服务均已部署到Docker容器中。 当第一服务调用第二服务时,第二服务得到401响应。 当我使用PostMan执行相同的请求时,我得到了一个有效的响应。 鉴于我正在通过邮递员和服务本身使用凭据。 知道为什么会发 ...

3 在Active Directory中更新用户时,未经授权的访问异常

我正在创建一个项目,该项目将更新Active Directory服务器中所有人的某些属性。 当我提交更改时,即使输入服务帐户的凭据登录以进行更改,我也会收到未授权的访问异常。 注意,ROOT是开始搜索的顶级目录条目,其中服务帐户用户名和密码已传递到构造函数中。 当person.Com ...

4 SOAP服务创建引发401未经授权

由于wsdl已通过基本身份验证进行了身份验证,因此在最后一行给出了401未经授权的错误。 如何解决这个问题呢? javax.xml.ws.WebServiceException:无法访问位于以下位置的WSDL: http:// example:1211 / MACSSWS / MCSK ...

5 401未经授权的spring boot测试

我写了一个测试,我希望得到 401,但我得到了一个例外。 当我在调试模式下运行测试时,我看到在 HttpUrlConnection.class 中处理了 401 状态(请在下面找到它)并且我收到一个带有响应的异常我想知道如何解决这个问题并通过测试? HttpUrlConnection.clas ...

6 授权新用户-keycloak

我想用 keycloak 保护我的用户注册页面,但在阅读文档时想不出任何方法。 对我来说最好的选择: 新用户注册,但他的帐户不可用。 当 ADMIN 接受这个新帐户时,用户可以登录。 可以在keycloak中做到吗? 或任何类似的解决方案? ...

9 创建新用户时出现AttributeError

我收到此错误: 尝试渲染此视图时: 错误消息的描述性不是很高,但是电子邮件正确地发送了链接,因此,对于为什么出现错误,我感到非常困惑。 如何防止此错误并正确渲染下一个视图? ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM