LDAP联合用户 - 自动设置Email验证为true

时间:2016-07-11 12:32:57

标签: configuration jboss keycloak

我在Keycloak中遇到了以下问题:

我启用了2个用户联合模块:

  • 一个是默认的 LDAP联盟(内部用户)

  • 一个是为数据库用户(外部用户)自定义编写的联合模块

我还有#34;身份验证" - > "要求的行动" - > "电子邮件验证"选项已启用(我需要为新注册的用户启用电子邮件验证)。

问题在于我需要从LDAP (内部用户)获取的现有用户才能跳过电子邮件验证步骤,但无法找到方法解决这个问题。

有什么想法吗?

3 个答案:

答案 0 :(得分:2)

我肯定会迟到,但以防万一有人在将来寻找这个。 您可以使用硬编码值在用户联盟中添加映射器。感谢@Kvaps 提供属性名称。

以我的为例: Screenshot

这些从 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服务器设置中的“编辑模式”应设置为“未同步”或“可写”。


我也确实需要此功能,因此我已经为其准备了功能要求:

https://issues.jboss.org/browse/KEYCLOAK-8727

答案 2 :(得分:0)

作为一种选择,您还可以从客户端范围删除此信息。 该解决方案在某些应用程序(例如Kubernetes)上运行良好。

只需转到客户范围-> 映射器,然后从此处删除已验证的电子邮件

现在所有新的不记名令牌将没有email_verified字段