背景:项目组中有用到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即可。

《完》

最新文章

  1. python 3 学习笔记(一)
  2. Python体验(08)-图形界面之工具栏和状态栏
  3. C# 事件编程在游戏开发的应用
  4. 统计项目的java代码总行数
  5. Activity的成员变量
  6. 设计模式之装饰模式(Decorator)
  7. SPOJ MULTQ3 7299 Multiples of 3 (区间更新)
  8. 驱动:中断【2】中断处理程序、中断上下文中处理延时及一些函数的调用规则(调IIC中断驱动有感)
  9. Java虚拟机15:再谈四种引用状态
  10. Python面试题之copy/deepcopy详解
  11. [HNOI 2009]梦幻布丁
  12. 【CF768G】The Winds of Winter 可持久化线段树 DFS序
  13. Angular、React.js 和Node.js到底选谁?
  14. 华为AR配置内部服务器示例(只有1个公网IP)
  15. 从navicat中导入sql文件过大:Got a packet bigger than 'max_allowed_packet' bytes
  16. oralce 批量更新
  17. FBX SDK在vs 2010下面的配置
  18. socket之基础
  19. led 的 platform驱动实现
  20. Microsoft® SQL Server® 2008 Express with Tools

热门文章

  1. Diffusers库的初识及使用
  2. JZOJ 3242. Spacing
  3. 我用ChatGPT做直播技术选型,卷死了同事
  4. 代码随想录算法训练营day07 | leetcode 454.四数相加II 383. 赎金信 15. 三数之和 18. 四数之和
  5. vulnhub靶场之WORST WESTERN HOTEL: 1
  6. Python连接hadoop-hive连接方法
  7. Java语言输出菱形图型
  8. 疑问:如何替代dtb文件
  9. maven打包找不到本地jar包的解决方法
  10. CSS主要整理