标签: keycloak

403 访问 keycloack 中的 ClientRepresentation 时出现禁止错误

我们在应用程序中使用 keycloak API。当我们尝试检索领域的客户端列表时,它会传递 403 禁止错误。非常感谢您的评论以避免此事。

    String authServer = UriUtils.getOrigin(httpRequest.getRequestURL().toString()) + AUTH_CONTEXT_PATH;
    String token = httpRequest.getHeader("Authorization").replaceAll("Bearer ", "");
    String realmClientsUrl = authServer+"/admin/realms/testrealm/clients/"+getClientRepresentationId(authServer,realm,token);
    ClientRequest request = getClientRequest(realmClientsUrl,token);
    ClientResponse<String> response;
    ClientRepresentation clientRepresentation = null;
    try{
        response = request.get(String.class);
        validateResponse(response,"CLIENT_REPRESENTATION");
        clientRepresentation = response.getEntity(ClientRepresentation.class);
        return clientRepresentation;
    } catch (Exception e) {

        e.printStackTrace();
    }
Run Code Online (Sandbox Code Playgroud)

通过的错误,

java.lang.Exception: ErrorStage:CLIENT_REPRESENTATION_ID,HTTP responseCode:403,StatusIno=Forbidden
Run Code Online (Sandbox Code Playgroud)

http-status-code-403 keycloak

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

从 Keycloak 访问令牌获取客户端会话 ID

参考 Keycloak 的帐户链接文档,我需要从访问令牌中获取用户会话 id客户端会话 id 。

然而,我只发现他们在令牌上调用的东西显然与查看他们的javascript 适配器源代码session_state相同。sessionId

我认为这是他们指的用户会话ID ?如果是这样,我在哪里可以找到这个所谓的客户端会话 id

javascript openid-connect keycloak

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

更改Keycloak登录的标题

我想知道如何通过 更改登录页面上的标题Keycloak

在此输入图像描述

html authentication keycloak

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

从 Keycloak 访问管理/组 OIDC API 时出现错误 403

仅使用 keycloak-authz-client (6.0.1)(无 Spring Security),我需要从服务提供商处读取用户信息和用户组。

获得正确的访问令牌后,借助 AuthzClient,我能够访问用户信息 API:

    UriBuilder target = UriBuilder.fromUri(kcURL);
    target.path("realms/{realm}/protocol/openid-connect/userinfo")
          .resolveTemplate("realm", this.realm);

    UserInfoOIDC info = new UserInfoOIDC();
    try {
        UserInfo response = this.buildBearerInvocation(target, accessToken).get(UserInfo.class);
        info.setName(response.getName());
        info.setUsername(response.getPreferredUsername());
        info.setCompleted(true);
        log.info("User info successfully retrieved from {}", this.realm);
    } catch (WebApplicationException e) {
        log.error("User info failure on {}: {}", this.realm, e.getMessage());
    }
...
    private Invocation.Builder buildBearerInvocation(UriBuilder target, String accessToken) {
        WebTarget webTarget = restClient.target(target);
        Invocation.Builder builder = webTarget.request(APPLICATION_JSON)
                .header(AUTHORIZATION, "Bearer " + accessToken);
        return builder;
    }
Run Code Online (Sandbox Code Playgroud)

但我无法访问“admin API”:

    UriBuilder target = …
Run Code Online (Sandbox Code Playgroud)

java security openid-connect keycloak

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

如何从 REST API(PUT 方法)更新 Keycloak 密码?

我使用 LDAP 用户设置了一个 keycloak 服务器,以便在我的应用程序上利用 SSO。我想通过 Keycloak API 更改应用程序中登录用户的密码。因此,将来我的 Angular 应用程序将能够向 keycloak API 发出请求来更改登录用户的密码。

因此,我尝试执行文档中指示的操作(方法 PUT,重置密码),但没有成功......我用邮递员进行了测试,我想知道我的令牌是否是要使用的令牌?问题是否来自其他地方?

我有这个网址: PUT {url}/auth/admin/realms/{realm}/users/{id user}/reset-password/

我有这个标题:

Content-type application/json

我有这个身体:

{
    "pass" : {
        "type": "password",
        "temporary": false,
        "value": "my-new-password"
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我没有尝试快速更新令牌,我会收到 401 错误(这让我说问题可能不是来自令牌),而当我通过 postman oAuth 2.0 获得新令牌时,我会收到 403 或 400 错误

我有时会收到这样的消息:

Unrecognized field "pass" (class org.keycloak.representations.idm.CredentialRepresentation), not marked as ignorable

请帮我 !

你可以在这里看到我在邮递员中的授权,我不知道什么是“状态”

api rest put postman keycloak

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

Spring Security 添加到 Spring Boot 应用程序导致异常

我正在尝试将 Spring Security 添加到 Spring Boot 应用程序中。除非存在依赖项版本问题,否则我的设置中是否还有其他内容可能会丢失,从而导致下面的异常跟踪。我还添加了一些来自 keycloak 的依赖项,我在下面复制了这些依赖项。

聚甲醛

    <dependency>
        <groupId>org.keycloak</groupId>
        <artifactId>keycloak-spring-boot-starter</artifactId>
        <version>7.0.1</version>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-security</artifactId>
        <version>1.5.3.RELEASE</version>
    </dependency>


    <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-web</artifactId>
        <version>5.2.1.RELEASE</version>
    </dependency>

    <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-config</artifactId>
        <version>5.2.1.RELEASE</version>
    </dependency>

<dependencyManagement>
    <dependencies>
        <dependency>
            <!--Import dependency management from Spring Boot -->
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-dependencies</artifactId>
            <version>1.5.5.RELEASE</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>

        <dependency>
            <groupId>org.keycloak.bom</groupId>
            <artifactId>keycloak-adapter-bom</artifactId>
            <version>3.3.0.Final</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>
Run Code Online (Sandbox Code Playgroud)

我添加了以下类作为 spring security 和 keycloak 设置的一部分:

import org.keycloak.adapters.springboot.KeycloakSpringBootConfigResolver;
import org.keycloak.adapters.springsecurity.KeycloakSecurityComponents;
import org.keycloak.adapters.springsecurity.authentication.KeycloakAuthenticationProvider;
import org.keycloak.adapters.springsecurity.config.KeycloakWebSecurityConfigurerAdapter;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import …
Run Code Online (Sandbox Code Playgroud)

java spring spring-security spring-boot keycloak

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

无法从最新的 (7.0.1) docker 映像调试 Keycloak

由于最新的 (7.0.1) docker 映像,无法将远程调试会话连接到容器内运行的 JVM。

我已经推出:

docker run \
  -p 9001:8080 \
  -p 9100:9100 \
  -e KEYCLOAK_USER=keycloak \
  -e KEYCLOAK_PASSWORD=password \
  jboss/keycloak:7.0.1 \
  -b 0.0.0.0 \
  --debug 9100
Run Code Online (Sandbox Code Playgroud)

然后尝试使用此 VSCode 配置连接调试会话:

{
"type": "java",
"name": "Debug (Attach) - Remote",
"request": "attach",
"hostName": "localhost",
"port": 9100
}
Run Code Online (Sandbox Code Playgroud)

并收到以下消息:

Failed to attach to remote debuggee VM
Reason:java.net.SocketException: Connection reset
Run Code Online (Sandbox Code Playgroud)

顺便说一句,同样适用于带有 6.0.1 和 7.0.0 docker 图像的 Keycloak。

我怀疑这是迁移到自 Keycloak 7.0.1 以来使用的新 ubi8-minimal 基础镜像的副作用

关于如何解决这个问题的任何线索?

问候,

java debugging docker keycloak

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

Keycloak 领域设置不再显示“重复电子邮件”开关

我们不久前设置了一个 Keycloak 服务器,添加了一些 Active Directory 联合,现在发现有些用户没有同步,因为他们使用与其他用户相同的电子邮件地址。在我们的例子中这是正确的,所以没有简单的方法来改变它。

我记得一个 REALM 设置,可以防止/允许使用重复的电子邮件,但在我们的 REALM 中再也找不到它了。因此,我创建了一个新的,并在 REALM-Settings/Login 下显示。

无论我尝试做什么,我都无法恢复此开关以更改设置以允许重复的电子邮件。我检查了数据库 ( select duplicate_emails_allowed from realm where id = 'companyrealm';) 并看到它被设置为 'f' (false)。还尝试将其设置为 't' (true) 但这没有区别。

当我们创建另一个 REALM 时,设置就在那里。很奇怪吧?难道这个设置的出现取决于什么?我们已经尝试删除所有导入的用户,禁用联合提供程序,甚至删除了他,但没有。

keycloak

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

使用以代码为中心的 Helm Charts 在 Kubernetes 高可用性集群(使用 ldap 作为用户联合)上的 Keycloak

我们想在 Kubernetes 上建立一个高可用的 Keycloak 集群(使用 ldap 作为用户联盟)。我们决定使用codecentrics helm charts,因为我们正在尝试将它们用于单个 Keycloak 实例设置并且效果很好。对于集群,我们在尝试正确设置所有内容时遇到了一些问题,但没有在广泛的互联网上找到最佳资源。因此,我决定写一个简短的总结,我们的主要问题在哪里以及我们如何解决这些问题。

本网站(除其他外)上描述的我们问题的解决方案,但描述的内容非常简短,感觉部分不完整。

我们在以下方面遇到的问题:

  1. 选择正确的 jgroups.discoveryProtocol
  2. 添加正确的 discoveryProperties
  3. 需要自己覆盖的部分 values.yaml

额外问题(我们已经面临单实例设置):

  1. 设置信任库以通过 ladps 作为用户联盟连接 ldap
  2. 为keycloak添加自定义主题

如果由于代码中心更新他们的掌舵图而发生变化,我将尝试更新它。

感谢 codecentrics 顺便提供了 helm charts!

high-availability kubernetes keycloak kubernetes-helm

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

Keycloak - 客户端角色 - 检索自定义属性

我创建了一个客户端角色 asspecial_agent并添加了两个属性 asapprove_leaveraise_leave

Keycloak - 客户端角色属性

我正在使用Javascript 适配器并且能够在我的网站上成功登录。我还可以接收分配给用户的客户端角色。但是,我想获取客户端角色中指定的自定义属性。下面是 keycloak.tokenParsed 的结果

Keycloak - tokenParsed

有没有办法检索客户端角色属性?我Mappers在客户端设置中查找了,但无法弄清楚详细信息。

keycloak keycloak-javascript

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