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。

相关推荐
Marst Code3 分钟前
(Django)初步使用
后端·python·django
代码之光_198010 分钟前
SpringBoot校园资料分享平台:设计与实现
java·spring boot·后端
编程老船长22 分钟前
第26章 Java操作Mongodb实现数据持久化
数据库·后端·mongodb
IT果果日记43 分钟前
DataX+Crontab实现多任务顺序定时同步
后端
姜学迁2 小时前
Rust-枚举
开发语言·后端·rust
爱学习的小健2 小时前
MQTT--Java整合EMQX
后端
北极小狐3 小时前
Java vs JavaScript:类型系统的艺术 - 从 Object 到 any,从静态到动态
后端
tangdou3690986553 小时前
两种方案手把手教你多种服务器使用tinyproxy搭建http代理
运维·后端·自动化运维
【D'accumulation】3 小时前
令牌主动失效机制范例(利用redis)注释分析
java·spring boot·redis·后端
2401_854391083 小时前
高效开发:SpringBoot网上租赁系统实现细节
java·spring boot·后端