keycloak 找出特定客户端权限的user 配置OTP
背景:项目组中有用到keycloak给两个应用进行登录认证使用。其中有一个应用放在公网,安全部门同事说 不能直接账号密码登录,容易破解,需要进行二次验证。
刚好查到keycloak支持OTP(one time password 一次性密码),刚好满足安全要求。
但是放在内网的应用是不用加这个的,需要筛选出配置了外网应用权限的用户。然后给用户加上OTP。
暂且将内网应用叫做应用N,外网应用叫做 gis-web 。只有用户规则中,gis-web这个客户端下,已分配权限包含edit或者view权限的用户,才需要加OTP。
冷静分析:
首先,用户数量上百个,一个个查看虽然可行,但是效率太低。
那有没有从数据库查的方法呢?
keycloak数据库总共92个表。由于不太清楚各个表结构,所以索性直接导出整个库,数据也不大,966KB。
然后我根据用户名查,发现整个库只有一个地方包含用户名:user_entity 表的字段 username 。
通过这个表的username字段,找到用户名对应的 ID :bda51819-b9e1-409f-a90d-b8e93c79cc**
再,在整个库范围检索 bda51819-b9e1-409f-a90d-b8e93c79cc** ,发现了蛛丝马迹:
看起来是user_rule_mapping 这个表。但是这个表信息也是加密的。
换个思虑。
整个库检索:gis-web 。
发现了这串加密字符:野蛮一点。再次整个库检索:
终于盲生发现了华点:edit 和view,对应的好像正好是gis-web的编辑和查询权限?
最终,根据 user_role_mapping 表的 role_id 和 user_id,查找 user_entity 表的username,得出的就是拥有gis-web权限的 用户名了!
最后,就是把这9个用户配置OTP即可。
《完》
-----------------------------------------------------------------
能力不高,水平有限,如有不妥还请指出,谢谢!
本文来自博客园,作者:Laijx,转载请注明原文链接:https://www.cnblogs.com/laijx/p/16249578.html
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 【.NET】调用本地 Deepseek 模型
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库