【问题标题】:LDAP federated users - automatic set Email Verified to trueLDAP 联合用户 - 自动将 Email Verified 设置为 true
【发布时间】:2016-07-11 12:32:57
【问题描述】:
我在使用 Keycloak 时遇到了以下问题:
我启用了 2 个用户联合模块:
我还启用了“身份验证”->“必需操作”->“电子邮件验证”选项(我需要为新注册的用户启用电子邮件验证)。
问题是 我需要从 LDAP 获得的现有用户(内部用户)跳过电子邮件验证步骤,但找不到工作方法这附近。
有什么想法吗?
【问题讨论】:
标签:
configuration
jboss
keycloak
【解决方案1】:
我肯定迟到了,但万一将来有人在寻找这个。
您可以使用硬编码值在用户联合中添加映射器。感谢@Kvaps 提供的属性名称。
这是我的例子:
这些从 4.8 开始可用(不确定)并且肯定适用于 11.0.0(我当前的版本)
【解决方案2】:
很遗憾,目前还没有办法做到这一点。
作为肮脏的解决方法,您可以使用 cron 调用的下一个 shell 脚本:
SERVER=http://localhost:8080/auth
USER=admin
PASSWORD=aiPh5ohngai1xoo0eeWa
REALM=master
KCADM=/opt/keycloak/bin/kcadm.sh
KEYS="--server $SERVER --realm $REALM --user $USER --password $PASSWORD"
USERS=$($KCADM get users $KEYS | jq -r '.[] | select(.emailVerified == false ) | .id')
for ID in $USERS; do
$KCADM update users/$ID $KEYS -s emailVerified=true
done
此脚本将查找所有具有emailVerified=false 的用户并将值更改为true。
您的 LDAP 服务器设置中的编辑模式应设置为 UNSYNCED 或 WRITABLE。
我也很需要这个功能,所以我已经为它准备了功能请求:
https://issues.jboss.org/browse/KEYCLOAK-8727
【解决方案3】:
作为一个选项,您还可以从客户端范围中删除此信息。
此解决方案适用于某些应用程序,例如 Kubernetes。
只需转到 Client Scopes --> Mappers,然后从此处删除 email protected。
现在所有新的不记名令牌都没有email_verified 字段