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]模块):

<!--引入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模块进行封装,建议直接引入:

<dependency>
    <groupId>com.github.moruke</groupId>
    <artifactId>wall-auth</artifactId>
    <version>1.0.0-SNAPSHOT</version>
</dependency>

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

...
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。

  • 30
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值