摘自网上

一、API权限控制范围

1、首先验证web端请求参数:

(1)web请求参数:渠道、ServiceName、版本、Airline、时间戳(yyyyMMddhhmmssSSS)、reqXML、Language、签名

(2)请求不能为空,并且格式是否符合要求

2、验证渠道+IP是否在白名单中:

(1)API项目启动时,将API_CHANNEL_INFO表数据,缓存到内存中

(2)根据Airline+渠道,去内存中取出授权服务器IP列表,并验证请求IP是否在列表中

3、验证签名:

(1)Web请求签名规则:Airline+”|”+渠道+”|”+版本+”|”+ServiceName+”|”+Language+”|”+Token+”|”+时间戳+”|”+reqXML

(2)根据Airline+渠道,去缓存中取出Token,再将Token解密取出来的Token是加密的,需要解密)

(3)API根据签名规则拼字符串,并用SHA256算法加密,然后验证web传过来的签名和API生成的签名是否一致

4、验证并发:

(1)先验证单机总并发量(service级+version的并发)

(2)再验证(渠道+service+version)的并发

(3)只做单机并发限制,默认认为每个服务器分的总并发数都是相同的

5、验证service授权:

(1)API项目启动时,将service授权表数据,缓存到内存中

(3)根据Airline+渠道+ServiceName+版本,去内存里数据中取值,如果取到值,并且值中的STATUS状态是可用,才说明该ServiceName有访问权限

6、登录接口调整:

(1)判断用户名密码是否正确:密码在数据库里是加盐(盐:账号创建时间),再用sha256算法加密)

(2)验证成功后,redis里需要存数据(KEY是渠道+userid,对应的值有logintime+lasttime),并设置超时时间(不同的渠道有自己的redis超时时间,超时时间值在API_CHANNEL_INFO表里存放)

(3)[1]

7、其它接口调整:

(1)API入口需要校验请求的接口是否需要校验登录(在Service授权表中存放了每个接口是否需要校验的标识)

(2)如果接口需要校验登录:要判断userid在redis里是否存在。若不存在,要返回需要登录的提示;若存在,需要更新redis里的lasttime,并且重置超时时间

(3)如果接口不需要验证登录,但是是已经登录的情况下,也要去重置redis超时时间

8、备注:

(1)API需要一个刷缓存接口(刷新所有服务器上的缓存)

(2)需要RES底层提供API_CHANNEL_INFO、API_SERVICE_AUTH、API_SERVICE_INFO这3个表数据的接口

二、数据库

1、渠道信息表(API_CHANNEL_INFO)

AIRLINE

字符串

航空公司二字码,如:CA

CHANNEL

字符串

渠道

CHANNEL_TYPE

字符串

渠道类型

TOKEN

字符串

TOKEN

LOGIN_TIME_OUT

字符串

登录超时时间

REQUEST_SERVER_IP

字符串

授权服务器IP列表,多个以;分隔

注:联合主键是:AIRLINE+CHANNEL

2、Service授权表(API_SERVICE_AUTH)

AIRLINE

字符串

航空公司二字码,如:CA

CHANNEL

字符串

渠道

SERVICE_NAME

字符串

请求操作类型

MAX_ASSIGN_NUM

字符串

最大并发数

IS_NEED_LOGIN

字符串

请求操作是否需要登录:0或null需要,1不需要

VERSION

字符串

授权版本

STATUS

字符串

状态(0 可用;1 不可用)

注:联合主键是:AIRLINE+CHANNEL+SERVICE_NAME+VERSION

3、Service信息表(API_SERVICE_INFO)

AIRLINE

字符串

航空公司二字码,如:CA

SERVICE_NAME

字符串

请求操作类型

MAX_ASSIGN_NUM

字符串

单机最大总并发数

VERSION

字符串

授权版本

注:联合主键是:AIRLINE+SERVICE_NAME+VERSION


[1] 删除此条变更。因为:假设两个用户ua(用户名:user、密码:pwd)、ub(用户名:userb、密码:pwdb)。a正常登录系统。但b使用用户名user登录系统,则会登录失败。如果此时删除对应的redis缓存的话,将会把a从系统中删除,而不是b)

API权限控制与安全管理的更多相关文章

  1. 认证鉴权与API权限控制在微服务架构中的设计与实现(四)

    引言: 本文系<认证鉴权与API权限控制在微服务架构中的设计与实现>系列的完结篇,前面三篇已经将认证鉴权与API权限控制的流程和主要细节讲解完.本文比较长,对这个系列进行收尾,主要内容包括 ...

  2. Spring Boot 之 RESRful API 权限控制

    摘要: 原创出处:www.bysocket.com 泥瓦匠BYSocket 希望转载,保留摘要,谢谢! “简单,踏实~ 读书写字放屁” 一.为何用RESTful API 1.1 RESTful是什么? ...

  3. 【微服务】之七:轻松搞定SpringCloud微服务-API权限控制

    权限控制,是一个系统当中必须的重要功能.张三只能访问输入张三的特定功能,李四不能访问属于赵六的特定菜单.这就要求对整个体系做一个完善的权限控制体系.该体系应该具备针区分用户.权限.角色等各种必须的功能 ...

  4. MVC API 权限控制

    定义一个类:TestAuthorizeAttribute public class TestAuthorizeAttribute : AuthorizeAttribute { public strin ...

  5. Spring Boot+Spring Security+JWT 实现 RESTful Api 权限控制

    摘要:用spring-boot开发RESTful API非常的方便,在生产环境中,对发布的API增加授权保护是非常必要的.现在我们来看如何利用JWT技术为API增加授权保护,保证只有获得授权的用户才能 ...

  6. web api 权限控制

    https://www.cnblogs.com/landeanfen/p/5287064.html 我只是个搬运工, 我只想存个档

  7. gin-jwt对API进行权限控制

    前言 之前文章简单介绍了如何运行gin+vue的前后端分离开源项目,该项目是学习了Gin实践教程后结合vue-element-admin写的,该教程讲得很详细,适合入门Gin.本篇文章将介绍gin+v ...

  8. 【SpringSecurity系列3】基于Spring Webflux集成SpringSecurity实现前后端分离无状态Rest API的权限控制

    源码传送门: https://github.com/ningzuoxin/zxning-springsecurity-demos/tree/master/02-springsecurity-state ...

  9. 【SpringSecurity系列1】基于SpringSecurity实现前后端分离无状态Rest API的权限控制

    源码传送门: https://github.com/ningzuoxin/zxning-springsecurity-demos/tree/master/01-springsecurity-state ...

随机推荐

  1. android AlertDialog.Builder

    AlertDialog的构造方法全部是Protected的,所以不能直接通过new一个AlertDialog来创建出一个AlertDialog. 要创建一个AlertDialog,就要用到AlertD ...

  2. 百度echarts极速入门

    1.http://echarts.baidu.com/ 进入官网 2.打开官方示例 3.随便打开一个列子并打开f12浏览器调试模式,找到例子的iframe地址 4.打开地址 5.下载例子,so eas ...

  3. vi 新建文件后保存文件时遇到的问题:E212: 无法打开并写入文件

    问题描述 使用vi编辑器写好内容后保存并退出时遇到以下问题 解决方案 该问题的原因是用户权限不够,因为普通用户用 vi 不能保存文件,需要使用超级用户才可以. 先转换为超级用户:su 再用vi打开文件 ...

  4. 嵌入式开发之zynq驱动—— zynq ps pl ddr 内存地址空间映射

    http://www.wiki.xilinx.com/Zynq-7000+AP+SoC+-+32+Bit+DDR+Access+with+ECC+Tech+Tip http://patchwork.o ...

  5. MySQL库和表的管理

    MySQL数据库服务配置好后,系统会有4个默认的数据库. information_schema:虚拟对象,其对象都保存在内存中performance_schema:服务器性能指标库mysql:记录用户 ...

  6. phpmyadmin配置文件权限错误,不应任何用户都能修改

    访问phpmyadmin提示“配置文件权限错误,不应任何用户都能修改” 原因:phpmyadmin目录权限过高,设置了777访问权限 解决: $ phpmyadin 转自: http://www.it ...

  7. service citrix xcenserver health check service (xenserver healthcheck) failed to start verfy that you have sufficient privileges to srart system services

    citrix XcenServer版本:7.2 citrix Xcencenter版本:7.2 安装citrix Xcencenter的时候报错: service citrix xcenserver ...

  8. idea中mybatis generator自动生成代码配置 数据库是sqlserver

    好长时间没有写博客了,最近公司要用java语言,开始学习java,属于初学者,今天主要记录一下mybatis generator自动生成代码,首先在如下图的目录中新建两个文件,如下图 generato ...

  9. 75道阿里Java面试题,你能答上几道?

    整理了下阿里近几年的java面试题目,大家参考下吧,希望对大家有帮助,可以帮大家查漏补缺. 答对以下这些面试题,可以淘汰掉 80 % 的求职竞争者. 1.hashcode相等两个类一定相等吗?equa ...

  10. Window 10 :我的性能优化:那效果,杠杠的!

    微软的 windows 10,不错! 当全新安装后,性能总觉得别别扭扭,不那么干净利落. 下面就是我的个人优化措施,期间有很多技术性的操作,如果你没有动手能力,或者是技术小白,可以不用再看了! (1) ...