Wall——身份识别与访问管理系统,闪亮登场

1. Wall是什么?

Wall是由本人开源的一款基于6A(Account、Authentication、Authorization、Audit、Approve、Application) 体系所打造的身份识别与访问管理系统,其目的是为了解决传统接入方式的复杂与混乱; 我们提供了一种简单、统一的接入方式,定义了标准的接入协议,使得开发者可以快速的接入Wall,实现身份识别与访问管理的功能。 项目地址:点我直达

2. 整体架构

从架构图可以看出,Wall主要由以下几个部分组成:

  • wall-account:账号管理模块,提供账号的增删改查等功能;通常将人事专员在IM/人事系统中维护的账号信息同步到Wall中;
  • wall-identity:身份认证模块,基于wall-account提供的账号信息,进行身份认证,返回认证结果;
  • wall-auth:权限认证模块,基于用户提供的身份及需要访问的资源和行为,进行权限认证,返回授权结果;
  • wall-application:应用管理模块,外部应用、内部系统访问被wall保护的资源时,需要先在wall-application中注册应用,获取应用ID和应用密钥;
  • wall-approve:审批模块,对于一些敏感操作,需要进行审批,审批通过后才能执行;比如应用注册、账号删除、权限变更等;
  • wall-audit:审计模块,记录上述发生的所有操作,以便后续审计;
  • wall-event:事件模块,wall中的所有操作都会产生事件,事件会被发送到消息队列中,供其他系统订阅。

从数据流向可以看出

  • 用户通过Web、App访问时,对外网关会根据wall-identity和wall-auth的认证结果,返回给用户相应的资源;
  • 应用通过API访问时,需要先在wall-application中注册应用,获取应用ID和应用密钥,然后在请求头中带上应用ID和应用密钥,内部网关会根据wall-auth的认证结果,返回给应用相应的资源。
  • 下游系统通过消息队列订阅事件,对事件进行处理。比如风控系统检测到异常行为,可及时通知对应责任人,将风险扼杀在摇篮中。

3. Wall的优势

  • 标准协议:基于业内标准协议如OAuth2.0、OpenID Connect等,能够快速接入Wall;
  • 接口扩展:如果对应wall提供的接口不满足需求,可以自定义扩展接口,实现自定义逻辑;
  • 便于集成:Wall提供了丰富的SDK,可以快速集成到现有系统中;
  • 可视化操作:Wall提供了可视化的操作界面,方便人事专员、开发者等进行操作;
  • 更多优势等你发现...

4. 现状

目前Wall只完成wall-auth模块的开发,其他模块仍处于规划阶段,欢迎各位小伙伴一起参与开发,共同打造Wall。 接下来的计划是完成wall-account&wall-identity模块的开发,实现身份认证与访问管理的功能。

5. 如何使用

牛逼吹的再响,也不如一行代码来的实在,下面是Wall的使用示例(参考[wall-demo-auth]模块):

xml 复制代码
<!--引入wall-bootstrap-spring-boot模块-->
<dependency>
    <groupId>com.github.moruke</groupId>
    <artifactId>wall-bootstrap-spring-boot</artifactId>
    <version>1.0.0-SNAPSHOT</version>
 </dependency>

该模块集成了wall-auth模块,提供了Action、Object、Role的管理接口,以及通过使用注解的方式进行权限认证。 如果想自己基于wall-auth模块进行封装,建议直接引入:

xml 复制代码
<dependency>
    <groupId>com.github.moruke</groupId>
    <artifactId>wall-auth</artifactId>
    <version>1.0.0-SNAPSHOT</version>
</dependency>

另外,在Classpath中添加配置文件[application.yml]

yaml 复制代码
...
mybatis:
  mapper-locations: classpath:mapperxml/**/*.xml
wall:
  plugin:
    auth:
      component:
        type: casbin
        casbin:
          model-path: casbin/model.conf
...

这里我们关注一下wall.plugin.auth.component.type,目前只支持casbin作为鉴权组件,后续会集成更多的鉴权组件。 wall.plugin.auth.component.casbin.model-path是casbin的策略文件路径,可以参考casbin官方文档。 如果不想去了解casbin,可以直接使用demo中的model.conf文件。并且路径与配置文件中的路径一致。

接下来将[wall-auth/src/main/resources/v1.0.0/init_ddl.sql]中的SQL脚本导入到数据库中,初始化数据库表。

最后,启动你的Spring Boot应用,访问http://localhost:xxxx/swagger-ui.html,即可看到Wall的API文档。

6. 结语

有关Wall的第一篇博客就到这里,我们这一期主要介绍了Wall的整体架构,优势,现状,如何使用等内容。 下一期我们会重点介绍wall-auth是如何实现权限管控的,以及我们该如何真正的在项目中使用Wall。

相关推荐
用户6083089290471 分钟前
集合处理利器,Java中的Stream流API
java·后端
Doris_20231 分钟前
Python条件判断语句 if、elif 、else
前端·后端·python
9号达人5 分钟前
Java 14 新特性详解与实践
java·后端·面试
Doris_20236 分钟前
Python 模式匹配match case
前端·后端·python
ytadpole7 分钟前
揭秘XXL-JOB:Bean、GLUE 与脚本模式的底层奥秘
java·后端
shark_chili23 分钟前
计算机磁盘的奥秘:从硬件构造到操作系统管理
后端
这里有鱼汤32 分钟前
Python量化实盘踩坑指南:分钟K线没处理好,小心直接亏钱!
后端·python·程序员
这里有鱼汤1 小时前
分享一个实用的主力抄底的“三合一指标”:主力吸货 + 风险 + 趋势
后端
IT_陈寒1 小时前
React性能优化:这5个Hook技巧让我的组件渲染效率提升50%(附代码对比)
前端·人工智能·后端