如何给 Keycloak 用户加上“部门”、“电话”等自定义属性

24 篇文章 1 订阅
13 篇文章 0 订阅

Keycloak 是一款开源的用户认证和授权软件。在默认安装情况下,它只给新创建的用户提供了 email 属性,但是在许多应用场景中,客户都会要求给新创建的用户增加诸如“部门”、“电话”等自定义属性。

本文会介绍如何给 keycloak 中新创建的用户添加自定义属性,以及如何在前端中访问到这些属性。

给新用户添加自定义属性

首先通过类似下面的网址访问 keycloak

  • https://your_keycloak_ip/auth

如下图所示,点击 users 菜单

在这里插入图片描述
系统会呈现用户列表。选择某个用户,点击 edit
在这里插入图片描述
下图中是点击了 admin 用户的 edit 后,系统呈现的画面。然后选择 attributes,增加自定义属性。
在这里插入图片描述
如下图所示,添加了自定义属性后,选择 add,然后点击 save 完成自定义属性的添加。
在这里插入图片描述

在 client 里做 mapper

给用户添加了自定义属性以后,默认情况下这些属性不会包含在用户的 access token 里。我们需要给 keycloak 的 client 增加自定义属性和 token 中的 claim 之间的映射,让 keycloak 的 token 中包含我们定义好的自定义属性。

如下图所示,选择指定的 client 然后点击 edit 进行编辑。在本例中,我们的 client 的名称是 emsclient。
在这里插入图片描述
系统会呈现 emsclient 的详情。点击 mapper。
在这里插入图片描述
系统展示映射列表,点击 create 添加映射。
在这里插入图片描述
如下图所示,在选择映射类型 (mapper type) 时选择 user attribute来添加我们定义好了的用户属性。
在这里插入图片描述
按照下图推荐的流程把我们的自定义属性映射到 JWT token 里。
在这里插入图片描述
添加成功后,我们就可以检验。JWT token 里是否有我们需要的字段了。

下面是一个keycloak返回的 JWT token 的示例。可以看到最后的部分包含了我们自定义的“姓名”、“角色”、“电话”等属性 (attributes)。现在前端就可以通过 JWT 显示我们想要的用户信息了。

{
    "exp": 1692109592,
    "iat": 1692091592,
    "auth_time": 1692091570,
    "jti": "98c603b8-638f-49bd-9756-4a087c31fdc6",
    "iss": "https://your_keycloak_ip:port/auth/realms/ems",
    "sub": "4a1d2352-5d42-45e1-843b-5ab31545aa94",
    "typ": "Bearer",
    "azp": "emsclient",
    "nonce": "2bb75e79-cd90-4fc0-8235-1425e69b6fa4",
    "session_state": "9397e3b2-f700-4eb1-8465-5c6dade0acd0",
    "acr": "0",
    
    "realm_access": {
      "roles": [
        "default-roles-ems",
        "offline_access",
        "admin",
        "energyManager",
        "uma_authorization"
      ]
    },
      "emsclient": {
        "roles": [
          "ems-admin",
          "ems-energy-manager",
          "ems-dashboard"
        ]
      },
      "broker": {
        "roles": [
          "read-token"
        ]
      },
      "account": {
        "roles": [
          "manage-account",
          "view-applications",
          "view-consent",
          "manage-account-links",
          "delete-account",
          "manage-consent",
          "view-profile"
        ]
      }
    },
    "scope": "openid profile email",
    "姓名": "能效管理员",
    "角色": "管理员角色",
    "email_verified": false,
    "电话": "13800138000",
    "preferred_username": "admin",
    "locale": "zh-CN"
  }

结论

本文详细介绍了如何通过 keycloak 的 user attribute 特性给 JWT token 增加自定义属性的功能。通过这个功能,我们就可以给 keycloak 用户添加我们想要的属性了。

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Kubernetes(简称k8s)是一个开源的容器编排引擎,可以用于自动化部署、扩展和管理容器化应用程序。Keycloak是一个开源的身份和访问管理解决方案,它提供了诸如单点登录(SSO)、多因素身份验证、授权等功能。在k8s环境中部署和自定义Keycloak可以帮助我们更好地管理和保护我们的应用程序。 首先,在k8s集群中部署Keycloak的步骤包括创建一个Deployment来运行Keycloak容器、创建一个Service将Keycloak容器暴露出来、配置Ingress来管理Keycloak的访问。可以通过编写YAML文件来定义Deployment、Service和Ingress资源,然后使用kubectl命令将其部署到k8s集群中。 其次,自定义Keycloak可以包括配置主题、引入自定义的身份提供者、定义客户端等。通过在Keycloak管理后台进行相应的配置,我们可以定制化Keycloak的外观和行为,以满足具体的业务需求。 最后,在部署和自定义Keycloak时需要注意的问题包括配置数据库、管理用户、设置安全策略等。我们需要选择合适的数据库作为Keycloak的持久化存储,并根据实际情况管理用户的访问权限。此外,为了保证应用程序的安全性,我们还需要设置适当的安全策略和监控机制。 总之,通过在k8s集群中部署和自定义Keycloak,我们可以实现统一的身份和访问管理,并且能够满足不同应用程序的特定需求。这不仅可以提高系统的安全性和可靠性,还可以简化用户的身份管理和访问控制流程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

surfirst

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值