本文來自于《精通Spring Cloud Alibaba》課程的整理,講師為餘勝軍,
點選檢視視訊内容。
本文系志願者整理,供配合學習中心課程使用,不做商業用途。
如何保證微服務接口的安全
接口分為内網和外網接口
外網接口 基于OATUH2.0建構開放平台 比如appid、appsocet擷取accesstoken調用接口。
内網接口:都是目前内網中實作通訊,相對于來說比較安全的。
1、需要保證接口幂等性問題(基于Token)
2、接口采用安全加密傳輸 https協定
3、防止資料被篡改 md5驗證簽名
4、使用微服務網關實作Api授權認證等、黑名單白名單。
5、對我們的接口實作服務的保護 隔離、熔斷、降級等等。
最後使用apiswagger管理我們的微服務接口。
GateWay如何保證高可用和叢集
使用Nginx或者lvs虛拟vip通路增加系統的高可用
環境配置:
網關1 127.0.0.1:81
網關2 127.0.0.1:82
Nginx伺服器 127.0.0.1:80
網關過濾器相關配置
private String serverPort;
@Override
public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
//如何擷取參數呢?
String token = exchange.getRequest().getQueryParams().getFirst("token");
if (StringUtils.isEmpty(token)) {
ServerHttpResponse response = exchange.getResponse();
response.setStatusCode(HttpStatus.INTERNAL_SERVER_ERROR);
String msg = "token not is null ";
DataBuffer buffer = response.bufferFactory().wrap(msg.getBytes());
return response.writeWith(Mono.just(buffer));
}
// 在請求頭中存放serverPort serverPort
ServerHttpRequest request = exchange.getRequest().mutate().header("serverPort", serverPort).build();
return chain.filter(exchange.mutate().request(request).build());
}
Nginx相關配置
upstream mayiktgwadds {
server 127.0.0.1:81;
server 127.0.0.1:82;
}
server {
listen 80;
server_name gw.mayikt.com;
location / {
proxy_pass http://mayiktgwadds/;
}
}
會員服務擷取端口号:
執行結果: