首页 > 解决方案 > django-keycloak | 将用户名设置为 Keycloak 用户名(而不是 Keycloak ID)

问题描述

我正在将 Keycloak 与 Djnago 集成


这就是我的 keycloak 用户屏幕的样子 在此处输入图像描述

但是当我登录 django 时,

user.email是正确的(keycloak 中存在的内容) user.username被设置为 keycloak 的 ID。有没有办法将 djnago 用户名保留为 keycloak 用户名?


https://github.com/Peter-Slump/django-keycloak/issues/39

标签: django

解决方案


通常user.username,实际上是 keycloak 中的用户名,除非您使用的框架具有自定义映射来更改值(sub在您的情况下很可能使用来自令牌的值)。如果是这种情况,您可以在令牌中添加重复属性以获取用户名,如下所示:

  • 使用管理员凭据登录 Keycloak 服务器
  • 转到客户端部分并单击您正在处理的应用程序客户端
  • 在您的客户页面中选择Mappers子部分
  • 单击Add Bultin,选择用户名复选框并保存设置

添加令牌后,您可以使用它来获取用户名。如果名称冲突(当用户名的映射与从令牌获取属性用户名的语法相同时),请添加一个自定义映射器,您可以在其中重命名相同用户名值的属性名称。自定义映射器应类似于:

这个图片


推荐阅读