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

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

開發 前端
在 redis 里維護一套接口白名單列表,外部請求到達網關時,從 redis 獲取接口白名單,在白名單內的接口放行,反之拒絕掉。

在業務開發的時候,經常會遇到某一個接口不能對外暴露,只能內網服務間調用的實際需求。面對這樣的情況,我們該如何實現呢?今天,我們就來理一理這個問題,從幾個可行的方案中,挑選一個來實現。

1. 內外網接口微服務隔離

將對外暴露的接口和對內暴露的接口分別放到兩個微服務上,一個服務里所有的接口均對外暴露,另一個服務的接口只能內網服務間調用。

該方案需要額外編寫一個只對內部暴露接口的微服務,將所有只能對內暴露的業務接口聚合到這個微服務里,通過這個聚合的微服務,分別去各個業務側獲取資源。

該方案,新增一個微服務做請求轉發,增加了系統的復雜性,增大了調用耗時以及后期的維護成本。

2. 網關 + redis 實現白名單機制

在 redis 里維護一套接口白名單列表,外部請求到達網關時,從 redis 獲取接口白名單,在白名單內的接口放行,反之拒絕掉。

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

不足之處在于,白名單的維護是一個持續性投入的工作,在很多公司,業務開發無法直接觸及到 redis,只能提工單申請,增加了開發成本;另外,每次請求進來,都需要判斷白名單,增加了系統響應耗時,考慮到正常情況下外部進來的請求大部分都是在白名單內的,只有極少數惡意請求才會被白名單機制所攔截,所以該方案的性價比很低。

3. 方案三 網關 + AOP

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

我們知道,外部進來的請求一定會經過網關再被分發到具體的業務側,內部服務間的調用是不用走外部網關的(走 k8s 的 service)。

根據這個特點,我們可以對所有經過網關的請求的header里添加一個字段,業務側接口收到請求后,判斷header里是否有該字段,如果有,則說明該請求來自外部,沒有,則屬于內部服務的調用,再根據該接口是否屬于內部接口來決定是否放行該請求。

該方案將內外網訪問權限的處理分布到各個業務側進行,消除了由網關來處理的系統性瓶頸;同時,開發者可以在業務側直接確定接口的內外網訪問權限,提升開發效率的同時,增加了代碼的可讀性。

當然該方案會對業務代碼有一定的侵入性,不過可以通過注解的形式,最大限度的降低這種侵入性。

圖片圖片


具體實操

下面就方案三,進行具體的代碼演示。首先在網關側,需要對進來的請求header添加外網標識符: from=public。
@Component
public class AuthFilter implements GlobalFilter, Ordered {
    @Override
    public Mono < Void > filter ( ServerWebExchange exchange, GatewayFilterChain chain ) {
         return chain.filter(
         exchange.mutate().request(
         exchange.getRequest().mutate().header('id', '').header('from', 'public').build())
         .build()
         );
    }

    @Override
    public int getOrder () {
        return 0;
    }
 }

接著,編寫內外網訪問權限判斷的AOP和注解。

@Aspect
@Component
@Slf4j
public class OnlyIntranetAccessAspect {
 @Pointcut ( '@within(org.openmmlab.platform.common.annotation.OnlyIntranetAccess)' )
 public void onlyIntranetAccessOnClass () {}
 @Pointcut ( '@annotation(org.openmmlab.platform.common.annotation.OnlyIntranetAccess)' )
 public void onlyIntranetAccessOnMethed () {
 }

 @Before ( value = 'onlyIntranetAccessOnMethed() || onlyIntranetAccessOnClass()' )
 public void before () {
     HttpServletRequest hsr = (( ServletRequestAttributes ) RequestContextHolder.getRequestAttributes()) .getRequest ();
     String from = hsr.getHeader ( 'from' );
     if ( !StringUtils.isEmpty( from ) && 'public'.equals ( from )) {
        log.error ( 'This api is only allowed invoked by intranet source' );
        throw new MMException ( ReturnEnum.C_NETWORK_INTERNET_ACCESS_NOT_ALLOWED_ERROR);
            }
     }
 }

@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface OnlyIntranetAccess {
}

最后,在只能內網訪問的接口上加上@OnlyIntranetAccess注解即可

@GetMapping ( '/role/add' )
@OnlyIntranetAccess
public String onlyIntranetAccess() {
    return '該接口只允許內部服務調用';
}
4. 網關路徑匹配
在DailyMart項目中我采用的是第四種:即在網關中進行路徑匹配。
該方案中我們將內網訪問的接口全部以前綴/pv開頭,然后在網關過濾器中根據路徑找到具體校驗器,如果是/pv訪問的路徑則直接提示禁止外部訪問。

使用網關路徑匹配方案不僅可以應對內網接口的問題,還可以擴展到其他校驗機制上。譬如,有的接口需要通過access_token進行校驗,有的接口需要校驗api_key 和 api_secret,為了應對這種不同的校驗場景,只需要再實現一個校驗類即可,由不同的子類實現不同的校驗邏輯,擴展非常方便。

圖片圖片


責任編輯:武曉燕 來源: JAVA日知錄
相關推薦

2023-07-11 08:55:26

系統白名單AO

2022-10-10 08:28:57

接口內網服務AOP

2024-07-01 09:55:13

2021-01-11 11:14:35

微服務架構調用

2024-02-22 08:12:41

接口微服務內網服務

2024-03-06 08:36:36

2024-08-06 08:08:14

2021-08-07 05:05:30

接口Redis項目

2016-11-24 14:44:49

云計算

2021-07-01 21:49:48

微服務Nacos服務

2020-05-13 10:36:06

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

2021-01-04 10:02:17

DockerLoaded plug操作系統

2021-06-27 17:03:33

黑客攻擊漏洞

2011-11-24 18:38:54

服務器負載

2023-11-12 21:58:41

Java“假死”

2013-01-29 13:22:24

系統服務

2010-03-04 09:06:35

Windows 7Apache安裝

2022-11-18 07:40:57

2010-09-01 15:54:17

無線LAN

2018-02-28 11:37:14

點贊
收藏

51CTO技術棧公眾號

欧美一级黄色片| 欧美黑人性视频| 性一交一乱一伧国产女士spa| 你微笑时很美电视剧整集高清不卡| 欧美一区二区日韩| 邪恶网站在线观看| 久久久久久一区二区| 欧美激情视频在线观看| 在线h片观看| 亚洲欧美日本在线| 成人在线免费观看网址| 亚洲久久久久| 97色在线观看免费视频| 国产免费拔擦拔擦8x高清在线人| 午夜欧美一区二区三区在线播放| 亚洲美免无码中文字幕在线| 免费一区视频| 国产精品亚洲一区二区三区| 欧一区二区三区| 亚洲精品丝袜日韩| 成年人在线看| 精品色蜜蜜精品视频在线观看| 波多野结衣av一区二区全免费观看| 亚洲成人在线| 成人激情视频在线| 在线看成人短视频| 久久成年人视频| 欧美人与性动交xxⅹxx| 精品国产三级电影在线观看| 午夜精品一区| 欧美三级在线看| 瑟瑟在线观看| 无码av免费一区二区三区试看 | 亚洲男人的天堂一区二区| 亚洲人精品午夜射精日韩| 韩国欧美一区二区| 一区二区视频在线免费| 人禽交欧美网站| 亚洲电影一二三区| 视频一区国产视频| 日韩福利二区| 久久精品国产99| 亚洲不卡一卡2卡三卡4卡5卡精品| 免费欧美在线| 亚洲欧美日韩国产yyy| 免费观看一级特黄欧美大片| 欧美日韩一区二区三区电影| 成人福利视频在线| 国产特级淫片高清视频| 国产欧美一区二区三区鸳鸯浴| 91精品无人成人www| 亚洲欧洲日韩女同| 国产对白在线正在播放| 欧美日韩综合视频| 中文字幕日本在线| 日韩一卡二卡三卡四卡| 色综合亚洲图丝熟| 日韩在线小视频| 国产精品流白浆在线观看| 26uuu另类亚洲欧美日本老年| av中文一区| 国产尤物91| 日韩电影免费在线| 欧美成人精品免费| 日本一区二区三区在线不卡| 500福利第一精品导航| 一本色道亚洲精品aⅴ| 国产成人l区| 一区二区三区久久精品| 久久大胆人体视频| 91色在线观看| 午夜在线一区| 日本三级免费观看| 午夜激情久久久| 久久久123| 欧美大秀在线观看| 国产精品久久久久久麻豆一区软件| 国产精品免费观看高清| 国产精品66部| 老司机很黄的视频免费| 91精品国产色综合久久不卡蜜臀| 日韩成人亚洲| 国产日韩欧美影视| 日韩av一区二| 国产91白丝在线播放| 欧美日产国产精品| 国产精品亚洲四区在线观看| 国产精品小说在线| 国产在线观看一区二区| 毛片毛片毛片毛片毛片毛片| 欧美xxx久久| 婷婷成人综合| 亚洲砖区区免费| 综合色天天鬼久久鬼色| 黄色精品在线观看| 久久久久久久久久久网站| 激情综合网址| 在线观看av网页| 精品福利在线导航| 北条麻妃国产九九九精品小说| 国产精品夜夜夜爽张柏芝| 一区二区三区四区高清精品免费观看| 香蕉久久aⅴ一区二区三区| 7m精品福利视频导航| 麻豆91小视频| 日韩大胆视频| 欧美国产日本高清在线| 国产精品日韩久久久| 成人观看免费完整观看| 日韩免费观看高清完整版在线观看| 9l亚洲国产成人精品一区二三 | 久久福利资源站| 日本aⅴ中文| 在线电影av不卡网址| 欧美色123| 免费成人黄色网址| 精品偷拍一区二区三区在线看| 综合久久综合| 男人j桶女人的网站| 国产视频在线一区二区| 欧美激情视频一区二区三区在线播放| 欧美 国产 日本| 亚洲国产精品热久久| 欧美精品一级| av成人动漫| 欧美激情免费在线| 国产精品18久久久久久久网站| 18视频免费网址在线观看| 国产精品日韩欧美大师| 国产欧美日产一区| 成人黄色在线| 亚洲欧美国产一区二区| 91成人网在线| 日韩欧美视频在线播放| 亚洲国产高清av| 久久成人18免费网站| 国产成人在线视频免费播放| 性欧美videos高清hd4k| 国产亚洲一区二区三区在线播放 | 久久综合偷偷噜噜噜色| 亚欧精品在线| 欧美日韩的一区二区| 成人系列视频| 黄色免费影视| 久久免费成人精品视频| 2021久久国产精品不只是精品| 大胆人体一区| 最新中文字幕久久| 亚洲国产成人在线视频| 日韩制服丝袜先锋影音| 国精产品一区| 欧美精品久久| 亚洲国产成人精品女人久久久 | 亚洲美洲欧洲综合国产一区| 亚洲人成电影| 成人av色在线观看| 婷婷亚洲久悠悠色悠在线播放| 国产精品一在线观看| 国产福利图片| 成人精品网站在线观看| 精品久久中文字幕久久av| 免费一区二区| 天堂影院在线| 91久久国产综合久久蜜月精品| 色综合久久久久综合体| 国内精品久久久久久久97牛牛 | 亚洲视频一区二区三区| 国产一区久久久| 日韩成人亚洲| 欧美 激情 在线| 久久久免费观看| 亚洲视频一二区| 国产日产一区 | 一区二区三区网站 | 国产男女爽爽爽| 国产精品视频久久久| 色综合久久天天综合网| 99热免费精品在线观看| 女子免费在线观看视频www| 在线电影看在线一区二区三区| 亚洲欧美日韩天堂| 久久久久久久久久久久久女国产乱| 成人看片爽爽爽| 在线视频毛片| 欧美日韩电影一区二区| 亚洲欧洲午夜一线一品| 亚洲都市激情| 国产91视觉| 制服丝袜一区二区三区| 日韩精品免费专区| av免费在线一区| mm131亚洲精品| 国产日产欧美a一级在线| 欧美色成人综合| 久久激五月天综合精品| 国产精久久久| 在线观看国产福利视频| 少妇免费毛片久久久久久久久| 在线电影中文日韩| 亚洲精品国产品国语在线app|