我可以将用户名而不是名字 + 姓氏传递给闪亮的代理吗

问题描述

我正在使用带有 Keycloak 的 Shinyproxy 并读取用户名 userName <- Sys.getenv("SHINYPROXY_USERNAME")

不幸的是,我收到了 FirstName 和 LastName 的串联,这不是唯一的。

我想在 SHINYPROXY_USERNAME 中拥有用户名。这是 Keycloak 配置问题吗?

解决方法

来自documentation

proxy.keycloak.name-attribute: name of the attribute to use as the user's name; 
     one of name (default,current behaviour),preferred_username,nickname or email

在默认的 keycloak 令牌映射中,preferred_username 是 keycloak 用户的用户名。

因此在您的 application.yml

中设置
 keycloak:
    ...
    name-attribute: preferred_username

如果这不起作用,您始终可以删除 name 的现有令牌映射器(在 client_scopes 中预定义的一些令牌映射器)并使用以下配置创建令牌映射器

  • 类型:用户属性
  • 属性:用户名
  • 令牌声明名称:名称
  • ID/访问/用户信息:开启

现在 Keycloak 令牌将包含一个属性 name,其值为 users username