Sentinel授權規則-實現網關授權


授權規則可以對調用方的來源做控制,有白名單和黑名單兩種方式。
1.白名單:來源(origin)在白名單內的調用者允許訪問
2.黑名單:來源(origin)在黑名單內的調用者不允許訪問

例如,我們限定只允許從網關來的請求訪問order-service,那么流控應用中就填寫網關的名稱

 

 

Sentinel是通過RequestOriginParser這個接口的parseOrigin來獲取請求的來源的。

public interface RequestOriginParser { /** * 從請求request對象中獲取origin,獲取方式自定義 */ String parseOrigin(HttpServletRequest request); }


例如,在order-service服務中我們嘗試從request中獲取一個名為origin的請求頭,作為origin的值:

@Component public class HeaderOriginParser implements RequestOriginParser { @Override public String parseOrigin(HttpServletRequest request) { // 1.獲取請求頭
        String origin = request.getHeader("origin"); // 2.非空判斷
        if (StringUtils.isEmpty(origin)) { origin = "blank"; } return origin; } }

 

我們還需要在gateway服務中,利用網關的過濾器添加名為gateway的origin頭:

spring: application: name: gateway cloud: gateway: default-filters: - AddRequestHeader=Truth,Itcast is freaking awesome!
        - AddRequestHeader=origin,gateway

 

給/order/{orderId} 配置授權規則:

 

效果實例

http://localhost:8088/order/103 ##服務直接訪問拒絕
{"msg": 沒有權限訪問, "status": 401} http://localhost:10010/order/103 ##網關訪問直接通過
{"id":103,"price":43900,"name":"駱駝(CAMEL)休閑運動鞋女","num":1,"userId":3,"user":{"id":null,"username":null,"address":null}}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM