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