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。

相关推荐
陈随易3 小时前
pm2 替代品,nodejs&bun 线上部署必备工具
前端·后端·程序员
丘山一郎4 小时前
Spring 中的IOC控制反转 和DI依赖注入
java·后端·spring
码视野4 小时前
基于 Spring Boot + Vue3 的【大学英语四六级 (CET-4/6) 作文智能评分与句式润色系统】设计与实现(含PRD/三端高保真源码/大屏)
java·前端·人工智能·spring boot·后端·vue3
MetaLite4 小时前
Spring-AOP自调用为什么失效-AopContext真能解决吗
java·后端·spring
MC皮蛋侠客5 小时前
Tauri 2.x 系列(五):调用系统 API——官方插件、Rust crate 与原生能力
开发语言·后端·rust
Profile排查笔记6 小时前
指纹浏览器怎么设置 IP?代理配置、检测与排错流程
前端·人工智能·后端·自动化
IT_陈寒7 小时前
SpringBoot自动配置失效?你可能漏了这个小开关
前端·人工智能·后端
摇滚侠8 小时前
《SpringBoot 3:入门与应用实战》第 9 章 使用 WebMvc 开发应用 阅读笔记 1
spring boot·笔记·后端
用户8356290780518 小时前
使用 Python 在 Excel 中插入 OLE 对象
后端·python
程序员小八7778 小时前
Go 语言特性
开发语言·后端·golang