国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

微服務開發時,接口不能對外暴露怎么辦?

開發 前端
每次請求進來,都需要判斷白名單,增加了系統響應耗時,考慮到正常情況下外部進來的請求大部分都是在白名單內的,只有極少數惡意請求才會被白名單機制所攔截,所以該方案的性價比很低。

在業務開發的時候,經常會遇到某一個接口不能對外暴露,只能內網服務間調用的實際需求。面對這樣的情況,我們該如何實現呢?

今天,我就來說一下碼猿慢病云管理系統中是如何實現的?

常用方案

在介紹碼猿慢病云管理系統中的實現方式,先來介紹常用的兩種方案。

1. 網關+白名單

此方案需要在緩存中維護一套接口白名單,請求到達網關處,先判斷白名單緩存中是否存在,存在則放行,反之則攔截。

網關+白名單網關+白名單

該方案的好處是,對業務代碼零侵入,只需要維護好白名單列表即可;

不足之處在于,白名單的維護是一個持續性投入的工作,在很多公司,業務開發無法直接觸及到 redis,只能提工單申請,增加了開發成本;

另外,每次請求進來,都需要判斷白名單,增加了系統響應耗時,考慮到正常情況下外部進來的請求大部分都是在白名單內的,只有極少數惡意請求才會被白名單機制所攔截,所以該方案的性價比很低。

2. 網關+AOP

相比于方案一對接口進行白名單判斷而言,方案二是對請求來源進行判斷,并將該判斷下沉到業務側。避免了網關側的邏輯判斷,從而提升系統響應速度。

我們可以在所有內部的調用請求頭中增加一個header標志這是一個內部請求,比如加個請求頭:from=Y

只要在業務接口處通過AOP的方式判斷一下請求頭中是否含有from=Y,如果有,則是內部請求,反之則是外部請求

網關+AOP網關+AOP

實現

碼猿慢病云管理系統中采用的是第二種方案:網關+AOP ,下面來介紹一下具體的代碼實現。

1. 定義注解

這里AOP在碼猿慢病云管理系統中采用的是注解的方式,注解如下:

@Target({ ElementType.METHOD, ElementType.TYPE })
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Inner {
 /**
  * 是否AOP統一處理
  */
 boolean value() default true;
}

2. 網關處理

在網關處需要對請求頭中的from進行清洗,避免有意之人偽裝內部請求,這里需要做的就是對每個請求直接移除from這個請求頭,直接使用全局過濾器即可完成,代碼如下:

/**
 * {@link com.code.ape.codeape.gateway.filter.CodeapeRequestGlobalFilter#filter}
 * @author 公眾號:碼猿技術專欄
 * @url: www.java-family.cn
 */
public class CodeapeRequestGlobalFilter implements GlobalFilter, Ordered {

 @Override
 public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
  // 1. 清洗請求頭中from 參數
  ServerHttpRequest request = exchange.getRequest().mutate().headers(httpHeaders -> {
   httpHeaders.remove(SecurityConstants.FROM);
   // 設置請求時間
   httpHeaders.put(CommonConstants.REQUEST_START_TIME,
     Collections.singletonList(String.valueOf(System.currentTimeMillis())));
  }).build();
        .......
        .......
    }

3. feign接口處理

既然是內部調用,按照之前的約定是要在請求頭中添加一個from=Y,因此在feign接口中需要新增這個請求頭,方式很簡單,比如設備feign接口,如下:

/**
 * @author 公眾號:碼猿技術專欄
 * @url: www.java-family.cn
 * @description 設備的feign接口
 */
@FeignClient(contextId = "remoteDeviceService", value = ServiceNameConstants.DEVICE_SERVICE)
public interface RemoteDeviceService {

 /**
  * 通過Sn查詢
  * @param sn 設備SN號
  * @return 設備詳細信息
  */
 @GetMapping(value = "/device/sn/{sn}",headers = "from=Y")
 R<DeviceInfoVO> getBySn(@PathVariable("sn" ) String sn);
}

@GetMapping中的headers屬性即可完成新增請求頭,同樣的比如@RequestMapping、@PostMapping等也是支持的。

這樣的話在feign接口發出請求時則會自動在請求頭中新增from=Y了。

4. AOP處理

在第1步中定義了@Inner這個注解,標注在controller方法上表示這個接口只允許內部調用,代碼如下:

圖片圖片

@IngoreAuth這個注解是繞過鑒權的作用,前面文章中也有分享。

那么這個注解內部的實現原理是什么呢?代碼如下:

//com.code.ape.codeape.common.security.component.CodeapeSecurityInnerAspect
@Slf4j
@Aspect
@RequiredArgsConstructor
public class CodeapeSecurityInnerAspect implements Ordered {

 private final HttpServletRequest request;

 @SneakyThrows
 @Around("@within(inner) || @annotation(inner)")
 public Object around(ProceedingJoinPoint point, Inner inner) {
        //取出請求頭中的from屬性
  String header = request.getHeader("from");
        //判斷from===Y
  if (inner.value() && !"Y".equals(header)) {
            //不符合規則,直接拋出異常,返回給客戶端無權限
   log.warn("訪問接口 {} 沒有權限", point.getSignature().getName());
   throw new AccessDeniedException("Access is denied");
  }
  return point.proceed();
 }
    .......
}

如果請求頭中的from屬性不匹配,則拋出AccessDeniedException異常,會被全局異常捕獲,返回403的狀態碼,代碼如下:

圖片圖片

總結

本節內容介紹了微服務中接口不對外暴露的兩種方案:

  1. 網關+白名單
  2. 網關+AOP

當然還有其他的實現方式,生產中根據項目需要選擇合適的方案為最佳。

責任編輯:武曉燕 來源: 碼猿技術專欄
相關推薦

2024-07-08 11:30:35

2022-10-10 08:28:57

接口內網服務AOP

2021-01-11 11:14:35

微服務架構調用

2024-07-01 09:55:13

2024-02-22 08:12:41

接口微服務內網服務

2024-03-06 08:36:36

2021-08-07 05:05:30

接口Redis項目

2024-08-06 08:08:14

2016-11-24 14:44:49

云計算

2021-07-01 21:49:48

微服務Nacos服務

2021-06-27 17:03:33

黑客攻擊漏洞

2020-05-13 10:36:06

勒索郵件郵件安全網絡攻擊

2021-01-04 10:02:17

DockerLoaded plug操作系統

2013-01-29 13:22:24

系統服務

2010-03-04 09:06:35

Windows 7Apache安裝

2022-11-18 07:40:57

2011-11-24 18:38:54

服務器負載

2023-11-12 21:58:41

Java“假死”

2018-02-28 11:37:14

2020-12-03 06:18:04

磁盤Docker容器
點贊
收藏

51CTO技術棧公眾號

国产成人无码精品久久久性色| 国产福利不卡视频| 未来日记在线观看| 成人午夜视频免费观看| 成人免费在线视频网| 精品国产第一国产综合精品| 性高湖久久久久久久久| 91九色国产ts另类人妖| 亚洲午夜久久久久久久久电影院| 综合网中文字幕| 9999在线观看| 大菠萝精品导航| 欧美日韩一区二区国产| 亚洲第一av色| 国产精品视频公开费视频| 最近久乱中文字幕| 国产成人av毛片| 久久久蜜桃精品| 在线看福利67194| 亚洲欧美日韩精品在线| 日韩专区av| 青青青伊人色综合久久| 欧美日韩美女一区二区| 国产真实有声精品录音| 亚洲一区观看| 欧美激情视频在线观看| 久久精品免费一区二区| 亚洲资源在线| 99九九99九九九视频精品| 在线精品高清中文字幕| 理论片午午伦夜理片在线播放| 国产精品久久777777毛茸茸 | 91理论片午午论夜理片久久| 蜜臀一区二区三区| 日韩欧美精品| 色婷婷一区二区三区四区| 国产欧美日韩亚洲| www在线视频| 国产精品一区二区男女羞羞无遮挡| 日韩欧美视频在线| 国内成人在线| 亚洲一区二区三区无吗| 色综合久久久久| 中文字幕123| 亚洲人成毛片在线播放女女| 精品99999| 91.com在线| 中文字幕精品影院| 日韩一区二区三区精品视频| 国内自拍中文字幕| 欧洲亚洲视频| 欧美二区三区91| 老太脱裤子让老头玩xxxxx| 欧美成人午夜77777| 欧美大片网站在线观看| 中文字幕网在线| 免费高清成人在线| 久久久久久久av| 国产精品17p| 国产成人精品最新| **性色生活片久久毛片| 一本大道久久加勒比香蕉| 日韩久久一区二区三区| 国产精品国产三级国产普通话99 | 久久手机免费观看| 国产精品一区二区在线看| 日日摸日日碰夜夜爽av| 欧美电影在线免费观看| 日韩欧美在线不卡| 日本 国产 欧美色综合| 欧美特黄一区| 久久观看最新视频| 日韩欧美一区视频| 欧美成人女星排名| 欧美高清在线视频观看不卡| 欧美日韩大片| 三级在线看中文字幕完整版| wwww亚洲| 六九午夜精品视频| 午夜精品一区二区三区在线视| 欧美日韩精品一区二区在线播放 | 丝袜美腿诱惑一区二区三区| 中文字幕日韩综合av| 美女av免费在线观看| 在线免费观看色| 欧美日韩国产高清一区二区| 欧美黑人巨大xxxxx| 欧美一级视频一区二区| 日本在线观看大片免费视频| 亚洲精品一区二区在线| 亚洲成人基地| 日韩视频中午一区| 91九色鹿精品国产综合久久香蕉| 欧美一区二区在线免费观看| 91人人网站| 成人小视频免费观看| 国偷自产av一区二区三区小尤奈| 伊人成综合网伊人222| 成人av播放| 狠狠色狠狠色综合婷婷tag| 好吊妞www.84com只有这里才有精品| 国产91丝袜在线观看| 深夜福利成人| 窝窝社区一区二区| www.精品av.com| av免费在线免费| 欧美日韩国产精品专区 | 狠狠干婷婷色| 久久影院视频免费| 人妻激情另类乱人伦人妻| 一区二区三区中文在线观看| 在线观看免费成人av| 国产精品99久久久久久似苏梦涵| 三上悠亚一区二区三区| 亚洲欧美一区二区三区极速播放| 免费国产a级片| 色综合天天综合网天天狠天天| av电影一区| 亚洲精品美女在线观看| 色网站在线看| 激情久久av一区av二区av三区| 青青草国产成人99久久| 久久免费成人精品视频| 国产综合色激情| ts人妖另类在线| 国产精品久久久爽爽爽麻豆色哟哟| 免费黄色特级片| 久久久精品国产免费观看同学| av在线中文| 国产精品99蜜臀久久不卡二区| 狠狠色狠狠色综合系列| 日日噜噜夜夜狠狠久久丁香五月| 欧美日韩国产在线看| 久久的色偷偷| 欧洲精品视频在线| 8x8x8国产精品| 少妇视频在线观看| 国产日韩三区| 欧美视频中文字幕在线| 国产欧美自拍一区| 人妻少妇精品无码专区二区| 国产欧美日韩在线| 亚洲性视频在线| 欧美日韩日日摸| 精品日韩一区| av在线不卡一区| 亚洲欧洲99久久| 成人黄色av网址| 手机视频在线观看| 欧美大成色www永久网站婷| 老司机凹凸av亚洲导航| 国产精品男人爽免费视频1| 久久久国产一区二区三区四区小说 | 国产欧美精品在线| 亚洲福利一区| 一区二区三区不卡在线| 国产精品综合久久| segui88久久综合9999| 欧美日韩一区在线视频| 五月天欧美精品| 成人精品动漫一区二区三区| 一区二区在线播放视频| 欧美日韩免费观看中文| 奇米色欧美一区二区三区| 激情视频在线观看一区二区三区| 欧美性生活大片免费观看网址| 希岛爱理av一区二区三区| 一区二区视频国产| 欧美国产日韩一二三区| 欧美一区二区视频| 精品欧美一区二区久久| 一区二区三区福利| 欧美午夜小视频| 久久色在线播放| 欧美日韩亚洲一区三区| 欧美xxx.com| 欧美一区1区三区3区公司| 国产欧美一区二区三区网站 | 第一社区sis001原创亚洲| av成人观看| 91精品国产一区二区| 性色一区二区| 乡村艳史在线观看| 日韩免费不卡av| 久久er精品视频| 久久久久久五月天久久久久久久久| 欧洲亚洲在线视频| 久久av老司机精品网站导航| 亚洲精品国产精品国产| 欧美一级黄色片视频| 国产精品99导航| 欧美成人女星排行榜| 国产片一区二区三区| 亚洲一区色图| 日本不卡一二三| 色琪琪丁香婷婷综合久久| 日本一区二区三区四区高清视频| 欧美精品一区二区三区国产精品| 精品久久久久久中文字幕大豆网| 久久精品国产久精国产爱|