jboss LDAP联合用户-自动将“已验证电子邮件”设置为“真”

ifmq2ha2  于 2022-11-08  发布在  其他
关注(0)|答案(4)|浏览(158)

我遇到了以下问题:
我启用了2个用户联盟模块:

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

我还启用了“身份验证”-〉“所需操作”-〉“电子邮件验证”选项(我需要为新注册的用户启用电子邮件验证)。
问题是我需要从LDAP获得的现有用户(内部用户)以跳过电子邮件验证步骤,但找不到解决此问题的方法。
有什么想法吗?

7uzetpgm

7uzetpgm1#

我肯定是迟到了,但万一有人在未来搜索这个。你可以在你的用户联盟中添加一个带有硬编码值的Map器。感谢@Kvaps提供的属性名称。
下面是我的例子:

从4.8(不确定)开始就可以使用这些,并且可以在11.0.0(我的当前版本)上使用。

vhipe2zx

vhipe2zx2#

作为一个选项,你也可以从客户端范围中删除此信息。此解决方案在一些应用程序中运行良好,例如Kubernetes。
只需转到客户端作用域-〉Map器,并从此处删除已验证的电子邮件
现在,所有新的不记名令牌都将没有email_verified字段

nlejzf6q

nlejzf6q3#

不幸是,现在还没有办法做到这一点。
您可以使用cron调用的下一个shell-script来解决这个问题:

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

bfrts1fy

bfrts1fy4#

转到ldap配置页面,在高级设置中将信任电子邮件选项设置为true.查看此处〉〉ldap advanced settings
现在,所有导入的用户都将具有email-verified = true

相关问题