标签: keycloak

什么是Keycloak的OAuth2/OpenID Connect端点?

我们正在尝试将Keycloak评估为SSO解决方案,并且它在许多方面看起来都很好,但是文档在基础知识方面却很缺乏.

对于一个给定Keycloak安装http://localhost:8080/的境界test,有什么的OAuth2授权端点,OAuth2用户令牌端点ID连接的UserInfo终点

我们对使用Keycloak自己的客户端库不感兴趣,我们希望使用标准的OAuth2/OpenID Connect客户端库,因为使用keycloak服务器的客户端应用程序将使用多种语言编写(PHP,Ruby,Node,Java,C# ,Angular).因此,使用Keycloak客户端的示例对我们来说并不适用.

keycloak

70
推荐指数
10
解决办法
7万
查看次数

keycloak参数无效:redirect_uri

当我试图从我的api命中来从keycloak验证用户,但它给我错误无效参数:keycloak页面上的redirect_uri.除了大师,我创造了自己的境界.keycloak正在http上运行.请帮我.

keycloak

45
推荐指数
15
解决办法
5万
查看次数

Spring Boot 2.6 回归:如何修复适配器中的 Keycloak 循环依赖?

Spring Boot 2.6.x 似乎引入了一些更改,导致之前与 Keycloak 的集成出现循环引用,从而阻止应用程序启动;它可以在当前的 2.5.x 版本中正常工作并启动。

\n

明确地说,通过在spring-boot-starter-parent中将<version> 标记值从 2.5.7 更改为 2.6.1 之外的任何内容,都会出现下面详细说明的错误/消息。

\n

当然,预期的行为是应用程序正常启动,并且像以前一样使用 Keycloak 进行保护。

\n

实际的消息是:

\n
***************************\nAPPLICATION FAILED TO START\n***************************\n\nDescription:\n\nThe dependencies of some of the beans in the application context form a cycle:\n\n\xe2\x94\x8c\xe2\x94\x80\xe2\x94\x80->\xe2\x94\x80\xe2\x94\x80\xe2\x94\x90\n|  keycloakSecurityConfig (field private org.keycloak.adapters.KeycloakConfigResolver org.keycloak.adapters.springsecurity.config.KeycloakWebSecurityConfigurerAdapter.keycloakConfigResolver)\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80<-\xe2\x94\x80\xe2\x94\x80\xe2\x94\x98\n
Run Code Online (Sandbox Code Playgroud)\n

完整的堆栈跟踪:

\n
2021-11-30 12:49:07.308 DEBUG 7 --- [           main] o.s.b.d.LoggingFailureAnalysisReporter   : Application failed to start due to an exception\n\norg.springframework.beans.factory.BeanCurrentlyInCreationException: Error creating bean with name \'keycloakSecurityConfig\': Requested bean is currently in creation: Is …
Run Code Online (Sandbox Code Playgroud)

java spring spring-security spring-boot keycloak

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

keycloak中的资源,范围,权限和策略

我想使用Keycloak的授权系统创建一个相当简单的基于角色的访问控制系统.系统Keycloak正在替换允许我们创建一个"用户",他是一个或多个"组"的成员.在该遗留系统中,通过组成员资格(其中组被分配了权限)或直接向用户授予许可,给予用户"许可"以访问大约250个"能力"中的每一个.

我想将遗留系统映射到keycloak授权.

我应该很容易将现有系统中的每个"功能"映射到一个keycloak资源和一组keycloak范围.例如,"viewAccount"功能显然会映射到"帐户"资源和"视图"范围; 并且"viewTransaction"映射到"事务"资源......但最佳做法是创建一个"视图"范围,并在多个资源(帐户,事务等)中使用它?或者我应该创建"viewAccount"范围,"viewTransaction"范围等?

同样,我对权限有点困惑.对于资源和范围的每个实际组合,通常的做法是创建权限吗?如果有多个权限与给定的资源/范围匹配,Keycloak会做什么?我猜测Keycloak的意图是允许我配置针对资源和范围的权限矩阵,所以例如我可以获得访问"帐户"的权限和"查看"范围的权限,因此我有权限查看帐户?

我问,因为所有这些的结果似乎是我的旧"viewAccount"功能最终创建了一个"帐户"资源,具有"查看"范围和"viewAccount"权限,这似乎让我回到原来的位置.哪个好,如果是正确的.

最后,显然我需要一组策略来确定是否应该应用viewAccount.但我是对的,这意味着我需要一个用户可能属于的每个遗留组的策略吗?例如,如果我有"帮助台"角色,那么我需要一个"帮助台会员"政策,然后我可以将其添加到"viewAccount"权限中.它是否正确?

谢谢,

标记

permissions keycloak

43
推荐指数
3
解决办法
5380
查看次数

keycloak 不记名客户端:它们为什么存在?

我试图围绕bearer-onlyKeycloak中客户的概念。

我了解公共与机密的概念以及服务帐户和其他grant_type=client_credentials东西的概念。但是bearer-only,我被卡住了。

谷歌搜索只显示讨论的片段说:

您无法通过bearer-only客户端从 keycloak 获取令牌。

文档也不清楚。他们只说:

不记名访问类型意味着应用程序只允许不记名令牌请求。

好的,如果我的应用程序只允许不记名令牌请求,如果我无法使用客户端 ID/客户端密码从 Keycloak 获取该令牌,我该如何获取它?

如果你不能获得令牌,你能得到什么?为什么会有这些客户?有人可以提供一个使用这种类型客户端的例子吗?

keycloak

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

Swagger中的Keycloak集成

我有一个Keycloak受保护的后端,我想通过swagger-ui访问.Keycloak本身提供了oauth2隐式和accessCode流程,但我都没有工作.目前Keycloak的文档缺乏这一点,哪些url应该用于swagger.json中的authorizationUrltokenUrl.

Keycloak中的每个领域都通过访问http://keycloak.local/auth/realms/REALM/.well-known/openid-configuration提供了大量的配置URL列表.

此外,我试图通过添加以下行直接在swagger-ui index.html中集成keycloak js-client:

<script src="keycloak/keycloak.js"></script>
<script>
  var keycloak = Keycloak('keycloak.json');
    keycloak.init({ onLoad: 'login-required' })
      .success(function (authenticated) {
        console.log('Login Successful');
        window.authorizations.add("oauth2", new ApiKeyAuthorization("Authorization", "Bearer " + keycloak.token, "header"));
      }).error(function () {
        console.error('Login Failed');
        window.location.reload();
      }
    );
 </script>
Run Code Online (Sandbox Code Playgroud)

"登录成功"后我也尝试了类似的东西

swaggerUi.api.clientAuthorizations.add("key", new SwaggerClient.ApiKeyAuthorization("Authorization", "Bearer " + keycloak.token, "header"));
Run Code Online (Sandbox Code Playgroud)

但它也行不通.

有什么建议我如何能够在swagger中集成keycloak auth?

oauth jboss-tools swagger swagger-ui keycloak

36
推荐指数
3
解决办法
6672
查看次数

Keycloak 8:已添加用户名为“admin”的用户

我无法使用 ansible 和 docker-compose 启动 keycloak 容器。我收到错误:用户名“admin”的用户已添加到“/opt/jboss/keycloak/standalone/configuration/keycloak-add-user.json”

我有 3 个可靠的工作:

创建网络:

- name: Create a internal network
  docker_network:
    name: internal
Run Code Online (Sandbox Code Playgroud)

设置 postgres:

- name: "Install Postgres"
  docker_compose:
    project_name: posgressdb
    restarted: true
    pull: yes
    definition:
      version: '2'
      services:
        postgres:
          image: postgres:12.1
          container_name: postgres
          restart: always
          env_file:
            - /etc/app/db.env
          networks:
            - internal
          volumes:
            - postgres-data:/var/lib/postgresql/data
            - /etc/app/createdb.sh:/docker-entrypoint-initdb.d/init-app-db.sh
          ports:
            - "5432:5432"
      volumes:
        postgres-data:
      networks:
        internal:
          external:
            name: internal
Run Code Online (Sandbox Code Playgroud)

创建密钥斗篷容器:

- name: Install keycloak
  docker_compose:
    project_name: appauth
    restarted: true
    pull: yes
    definition:
      version: '2' …
Run Code Online (Sandbox Code Playgroud)

jboss docker keycloak docker-compose

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

避免使用keycloak默认登录页面并使用项目登录页面

我正在创建一个angular.js Web应用程序,并寻找如何集成keycloak到项目中.我已阅读并观看了许多教程,我发现其中大多数都有用户通过默认登录页面登录/注册keycloak,然后重定向到应用程序.

我已经设计了自己的登录和注册页面,我想使用它.我如何使用它们而不是keycloak默认值.有没有我可以调用的API,或者我的后端可能会这样做?我还看到有可用于keycloak的弹簧适配器,我可以使用它们吗?任何示例的任何链接都是好的.

我的第二个问题是在注册时我可以添加更多用户详细信息,例如地址,dob,性别keycloak吗?因为我的注册页面需要这些信息.

java angularjs keycloak keycloak-services

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

Keycloak将自定义属性检索到KeycloakPrincipal

在我的休息服务中,我可以在认证后使用获取主要信息

KeycloakPrincipal kcPrincipal = (KeycloakPrincipal) servletRequest.getUserPrincipal();
Run Code Online (Sandbox Code Playgroud)

声明.

Keycloak校长并不知道我需要有关经过身份验证的用户的所有信息.是否可以自定义我自己的主体类型?在keycloak-server-end上我开发了一个用户联合提供程序.我看到UserModel可以为我的用户添加一组自定义属性.

是否可以在该代码中插入我的自定义主体?

是否可以从keycloak principal检索此属性?

这是什么方式?

authentication customization jboss principal keycloak

31
推荐指数
3
解决办法
4万
查看次数

Keycloak:找不到完整路径的资源

我正在尝试让 keycloak 的 REST API 正常工作。

感谢这篇文章,我能够获得令牌。但是,当尝试第一个答案中的用户列表示例时,我收到错误:

"error": "RESTEASY003210: Could not find resource for full path: http://PATHTOCEAKLOAK:81/auth/user/realms/master/users"
Run Code Online (Sandbox Code Playgroud)

这是我对邮差的要求:

在此输入图像描述

由于我使用的是 Bitnami 容器,管理员称为用户,这就是为什么我使用/auth/user/而不是/auth/admin /

keycloak keycloak-rest-api

31
推荐指数
3
解决办法
4万
查看次数