• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

AG-Gate: AG-Gate 是一个基于spring cloud的用户资源授权、api管理授权的网关系统,以 ...

原作者: [db:作者] 来自: 网络 收藏 邀请

开源软件名称:

AG-Gate

开源软件地址:

https://gitee.com/geek_qi/ace-gate

开源软件介绍:

简介

AG-Gate 是一个基于spring cloud的用户资源授权、api管理授权的网关系统,以jwt交互的鉴权token来实施,支持基于Eureka注册中心下的服务鉴权和拦截,同时扩展Eureka下服务失效的通知扩展。imgimg

网关架构

img

功能列表

  • 用户管理
  • 角色管理
  • 菜单、动作管理
  • 操作日志
  • 客户端注册
  • 服务管理和授权
  • 网关黑白名单和IP限制(待完善)
  • 服务状态监控与提醒(待完善)
  • 服务追踪(待完善)

快速运行

部署指南

  • 运行ace-gate-way下db脚本
  • 启动一个redis
  • 修改ace-gate-way下的redis配置和数据库配置
  • jdk1.8
  • IDE插件一个,lombok插件,具体百度即可

启动指南

关于服务失效提醒

img可以根据需要扩展不同的消息通知,也可以做钩子结合实效后自动重启服务。

用户指南

AG-Gate主要是给服务之间做JWT鉴权和对外api的鉴权。我们平时无状态的api访问方式分为服务之间的互相调用和提供给外部系统的调用。

原则

  • 需要被保护的服务才需要进行注册。

初始化jwt token认证

ace-gate-way下application.yml,会影响认证的相关信息。img

内部服务之间的鉴权

img

  • 注册保护服务的地址和访问方式
  • 访问客户端的授权(申请clientId和secret,同时授权可访问服务)

内部鉴权建议助手

具体例子可以参考ace-gate-demo

服务提供端如何开启权限拦截

maven依赖,如果没有自行打包

<dependency>    <groupId>com.github.wxiaoqi</groupId>    <artifactId>ace-gate-agent</artifactId>    <version>1.0-SNAPSHOT</version></dependency>

配置引入

gate:  client:    # 地址为ace-gate-way所在ip端口    authHost: http://localhost:8765/api/authen    # 鉴权头部标志,与客户端一致    authHeader: access-token

配置启用

/** * Created by ace on 2017/7/6. */@Configurationpublic class ApiWebAppConfig extends WebMvcConfigurerAdapter {    @Value("${gate.client.authHost}")    private String authHost;    @Override    public void addInterceptors(InterceptorRegistry registry) {        registry.addInterceptor(new ApiInterceptor(authHost)).addPathPatterns("/**");        super.addInterceptors(registry);    }}

服务拦截启用,rest方法加上@ApiGateSecurity即可

@ApiGateSecurity@RequestMapping(value = "/user/un/{username}/system", method = RequestMethod.GET)@ResponseBodypublic String getSystemsByUsername(@PathVariable("username") String username){    int userId = userBiz.getUserByUsername(username).getId();    return JSONObject.toJSONString(menuBiz.getUserAuthoritySystemByUserId(userId));}

Feign客户端如何自动加上鉴权信息

maven依赖,如果没有自行打包

<dependency>    <groupId>com.github.wxiaoqi</groupId>    <artifactId>ace-gate-agent</artifactId>    <version>1.0-SNAPSHOT</version></dependency>

配置引入

gate:  client:  # 页面注册的客户信息    clientId: admin-ui    secret: test    # 与服务端authHeader保持一致    authHeader: access-token    authHost: http://localhost:8765/api/authen    # 与ace-gate-way gate.api.tokenHead保持一致    tokenHead: ApiGateToken

配置启用

@Configurationpublic class FeignApiConfig {    @Value("${gate.client.clientId}")    private String clientId;    @Value("${gate.client.secret}")    private String secret;    @Value("${gate.client.authHeader}")    private String authHeader;    @Value("${gate.client.authHost}")    private String authHost;    @Value("${gate.client.tokenHead}")    private String tokenHead;    @Bean    public FeignInterceptor authenticationInterceptor() {        return new FeignInterceptor(clientId, secret, authHeader, authHost, tokenHead);    }}

对外api鉴权

  • 注册保护服务的地址和访问方式
  • 访问客户端的授权(申请clientId和secret,同时授权可访问服务)

外部客户端访问token方式

  • 凭借客户端和密钥申请有效tokenimg

请求json方式

{"clientId":"gate-demo-client","secret":"test"}

请求地址,ace-gate-way所释放的地址

http://[ace-gate-way部署服务器]:[配置端口]/api/authen/auth
  • 凭借有效的token二次访问服务

img

请求头

以下配置信息来自ace-gate-way的application.ymlimg

[${gate.api.header}]:[${gate.api.tokenHead}][空格][神奇的token]如默认格式:access-token:ApiGateToken eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJnYXRlLWRlbW8tY2xpZW50IiwiY3JlYXRlZCI6MTQ5OTk0NzAzNzE1NCwiZXhwIjoxNDk5OTU0MjM3fQ.eL3Ucd2Oh166PDcmHLsKK2A0uJZ6QPxLqRac6enQacBEgQwc2I0qJtkui1V0WjB70VWHpRbHgmzps_dM9jKg0A

外部访问IP黑白名单方式

带实现

欢迎交流

img


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap