我在Keycloak中遇到了以下问题:
我启用了2个用户联合模块:
一个是默认的 LDAP联盟(内部用户)
一个是为数据库用户(外部用户)自定义编写的联合模块
我还有#34;身份验证" - > "要求的行动" - > "电子邮件验证"选项已启用(我需要为新注册的用户启用电子邮件验证)。
问题在于我需要从LDAP (内部用户)获取的现有用户才能跳过电子邮件验证步骤,但无法找到方法解决这个问题。
有什么想法吗?
答案 0 :(得分:2)
我肯定会迟到,但以防万一有人在将来寻找这个。 您可以使用硬编码值在用户联盟中添加映射器。感谢@Kvaps 提供属性名称。
这些从 4.8(不确定)开始可用,并且肯定在 11.0.0(我当前的版本)上工作
答案 1 :(得分:0)
不幸的是,目前无法实现这一目标。
作为肮脏的解决方法,您可以使用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服务器设置中的“编辑模式”应设置为“未同步”或“可写”。
我也确实需要此功能,因此我已经为其准备了功能要求:
答案 2 :(得分:0)
作为一种选择,您还可以从客户端范围删除此信息。 该解决方案在某些应用程序(例如Kubernetes)上运行良好。
只需转到客户范围-> 映射器,然后从此处删除已验证的电子邮件。
现在所有新的不记名令牌将没有email_verified
字段