AG-Gate

所属分类:特征抽取
开发工具:JavaScript
文件大小:2052KB
下载次数:0
上传日期:2017-07-14 08:24:45
上 传 者sh-1993
说明:  AG-Gate 是一个基于spring cloud的用户资源授权、api管理授权的网关系统,以jwt交互的鉴权token来实施,支持基于Eureka注册中心下的服务鉴权和拦截,同时扩展Eureka下服务失效的通知扩展。
(AG Gate is a gateway system for user resource authorization and api management authorization based on spring cloud. It is implemented with the authentication token of jwt interaction, supports service authentication and interception based on the Eureka registry, and extends the notification extension of service failure under Eureka.)

文件列表:
ace-gate-agent (0, 2017-07-14)
ace-gate-agent\pom.xml (1991, 2017-07-14)
ace-gate-agent\src (0, 2017-07-14)
ace-gate-agent\src\main (0, 2017-07-14)
ace-gate-agent\src\main\java (0, 2017-07-14)
ace-gate-agent\src\main\java\com (0, 2017-07-14)
ace-gate-agent\src\main\java\com\github (0, 2017-07-14)
ace-gate-agent\src\main\java\com\github\wxiaoqi (0, 2017-07-14)
ace-gate-agent\src\main\java\com\github\wxiaoqi\gate (0, 2017-07-14)
ace-gate-agent\src\main\java\com\github\wxiaoqi\gate\agent (0, 2017-07-14)
ace-gate-agent\src\main\java\com\github\wxiaoqi\gate\agent\exception (0, 2017-07-14)
ace-gate-agent\src\main\java\com\github\wxiaoqi\gate\agent\exception\AuthenticationServerErrorException.java (260, 2017-07-14)
ace-gate-agent\src\main\java\com\github\wxiaoqi\gate\agent\exception\AuthenticationVerifyFailException.java (258, 2017-07-14)
ace-gate-agent\src\main\java\com\github\wxiaoqi\gate\agent\feign (0, 2017-07-14)
ace-gate-agent\src\main\java\com\github\wxiaoqi\gate\agent\feign\FeignInterceptor.java (4614, 2017-07-14)
ace-gate-agent\src\main\java\com\github\wxiaoqi\gate\agent\rest (0, 2017-07-14)
ace-gate-agent\src\main\java\com\github\wxiaoqi\gate\agent\rest\ApiGateSecurity.java (373, 2017-07-14)
ace-gate-agent\src\main\java\com\github\wxiaoqi\gate\agent\rest\ApiInterceptor.java (2602, 2017-07-14)
ace-gate-agent\src\main\java\com\github\wxiaoqi\gate\agent\vo (0, 2017-07-14)
ace-gate-agent\src\main\java\com\github\wxiaoqi\gate\agent\vo\authority (0, 2017-07-14)
ace-gate-agent\src\main\java\com\github\wxiaoqi\gate\agent\vo\authority\PermissionInfo.java (1224, 2017-07-14)
ace-gate-agent\src\main\java\com\github\wxiaoqi\gate\agent\vo\gate (0, 2017-07-14)
ace-gate-agent\src\main\java\com\github\wxiaoqi\gate\agent\vo\gate\ClientInfo.java (2800, 2017-07-14)
ace-gate-agent\src\main\java\com\github\wxiaoqi\gate\agent\vo\log (0, 2017-07-14)
ace-gate-agent\src\main\java\com\github\wxiaoqi\gate\agent\vo\log\LogInfo.java (1851, 2017-07-14)
ace-gate-agent\src\main\java\com\github\wxiaoqi\gate\agent\vo\user (0, 2017-07-14)
ace-gate-agent\src\main\java\com\github\wxiaoqi\gate\agent\vo\user\UserInfo.java (1124, 2017-07-14)
ace-gate-common (0, 2017-07-14)
ace-gate-common\pom.xml (2066, 2017-07-14)
ace-gate-common\src (0, 2017-07-14)
ace-gate-common\src\main (0, 2017-07-14)
ace-gate-common\src\main\java (0, 2017-07-14)
ace-gate-common\src\main\java\com (0, 2017-07-14)
ace-gate-common\src\main\java\com\github (0, 2017-07-14)
ace-gate-common\src\main\java\com\github\wxiaoqi (0, 2017-07-14)
ace-gate-common\src\main\java\com\github\wxiaoqi\gate (0, 2017-07-14)
ace-gate-common\src\main\java\com\github\wxiaoqi\gate\common (0, 2017-07-14)
... ...

# 简介 AG-Gate 是一个基于spring cloud的用户资源授权、api管理授权的网关系统,以jwt交互的鉴权token来实施,支持基于Eureka注册中心下的服务鉴权和拦截,同时扩展Eureka下服务失效的通知扩展。 ![img](http://ofsc32t59.bkt.clouddn.com/17-07-09/1499585459528.jpg) ![img](http://ofsc32t59.bkt.clouddn.com/17-07-09/1499587875093.jpg) # 网关架构 ![img](http://ofsc32t59.bkt.clouddn.com/17-07-14/1499***8679526.jpg) # 功能列表 - 用户管理 - 角色管理 - 菜单、动作管理 - 操作日志 - 客户端注册 - 服务管理和授权 - 网关黑白名单和IP限制(待完善) - 服务状态监控与提醒(待完善) - 服务追踪(待完善) # 快速运行 ## 部署指南 - 运行ace-gate-way下db脚本 - 启动一个redis - 修改ace-gate-way下的redis配置和数据库配置 - jdk1.8 - IDE插件一个,lombok插件,具体百度即可 ## 启动指南 - 依次启动ace-gate-eureka、ace-gate-way - 访问:http://localhost:8762/index,初始化密码:admin/admin - 启动鉴权例子ace-gate-demo-provider、ace-gate-demo-client - 访问:http://localhost:87***/test,即可看到效果 # 关于服务失效提醒 ![img](http://ofsc32t59.bkt.clouddn.com/17-07-09/1499586948877.jpg) 可以根据需要扩展不同的消息通知,也可以做钩子结合实效后自动重启服务。 # 用户指南 AG-Gate主要是给服务之间做JWT鉴权和对外api的鉴权。我们平时无状态的api访问方式分为服务之间的互相调用和提供给外部系统的调用。 # 原则 - 需要被保护的服务才需要进行注册。 # 初始化jwt token认证 ace-gate-way下application.yml,会影响认证的相关信息。 ![img](http://ofsc32t59.bkt.clouddn.com/17-07-14/1499***8024769.jpg) # 内部服务之间的鉴权 ![img](http://ofsc32t59.bkt.clouddn.com/17-07-14/1499***6858219.jpg) - 注册保护服务的地址和访问方式 - 访问客户端的授权(申请clientId和secret,同时授权可访问服务) ## 内部鉴权建议助手 **具体例子可以参考ace-gate-demo** ## 服务提供端如何开启权限拦截 ### maven依赖,如果没有自行打包 ``` com.github.wxiaoqi ace-gate-agent 1.0-SNAPSHOT ``` ### 配置引入 ``` gate: client: # 地址为ace-gate-way所在ip端口 authHost: http://localhost:8765/api/authen # 鉴权头部标志,与客户端一致 authHeader: access-token ``` ### 配置启用 ``` /** * Created by ace on 2017/7/6. */ @Configuration public 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) @ResponseBody public String getSystemsByUsername(@PathVariable("username") String username){ int userId = userBiz.getUserByUsername(username).getId(); return JSONObject.toJSONString(menuBiz.getUserAuthoritySystemByUserId(userId)); } ``` ## Feign客户端如何自动加上鉴权信息 ### maven依赖,如果没有自行打包 ``` com.github.wxiaoqi ace-gate-agent 1.0-SNAPSHOT ``` ### 配置引入 ``` 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 ``` ### 配置启用 ``` @Configuration public 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方式 - 凭借客户端和密钥申请有效token ![img](http://ofsc32t59.bkt.clouddn.com/17-07-14/1499***8134104.jpg) #### 请求json方式 ``` { "clientId":"gate-demo-client", "secret":"test" } ``` #### 请求地址,ace-gate-way所释放的地址 ``` http://[ace-gate-way部署服务器]:[配置端口]/api/authen/auth ``` - 凭借有效的token二次访问服务 ![img](http://ofsc32t59.bkt.clouddn.com/17-07-14/1499***8191461.jpg) #### 请求头 以下配置信息来自ace-gate-way的application.yml ![img](http://ofsc32t59.bkt.clouddn.com/17-07-14/1499***8024769.jpg) ``` [${gate.api.header}]:[${gate.api.tokenHead}][空格][神奇的token] 如默认格式: access-token:ApiGateToken eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJnYXRlLWRlbW8tY2xpZW50IiwiY3JlYXRlZCI6MTQ5OTk0NzAzNzE1NCwiZXhwIjoxNDk5OTU0MjM3fQ.eL3Ucd2Oh166PDcmHLsKK2A0uJZ6QPxLqRac6enQacBEgQwc2I0qJtkui1V0WjB70VWHpRbHgmzps_dM9jKg0A ``` ## 外部访问IP黑白名单方式 带实现 # 欢迎交流 ![img](http://ofsc32t59.bkt.clouddn.com/17-06-16/1497595760484.jpg)

近期下载者

相关文件


收藏者