雲原生網關支援為路由配置認證,並對指定的消費者進行鑒權,以允許對應消費者訪問路由。本文介紹如何配置消費者鑒權。
背景資訊
相比全域認證鑒權適用於統一登入認證等ToC情境,路由認證和消費者鑒權模式適用於授權API給夥伴等ToB情境。
對比項 | 全域認證鑒權 | 路由認證+消費者鑒權 |
適用情境 | 統一登入認證等ToC情境。 | 授權API給夥伴等ToB情境。 |
核心差異 | 開啟認證的同時也開啟鑒權。 | 開啟認證後,需要額外做鑒權配置。 |
配置入口 | 安全管理 > 全局认证鉴权。 |
|
認證方式配置(以JWT認證為例) |
|
|
鑒權方式配置 | 建立配置時填寫黑名單或白名單的域名和路径(Path)列表。
|
|
建立消費者
登入MSE網關管理主控台,並在頂部功能表列選擇地區。
在左側導覽列選擇云原生网关 > 网关列表。
在网关列表頁面,單擊目標網關名稱。
在左側導覽列,單擊安全管理 > 消费者鉴权。
單擊创建消费者按鈕。
配置相關參數,然後單擊确定。
配置參數說明如下。
配置項
描述
消费者名称
自訂消費者的名稱。
消费者说明
對消費者進行描述。
认证方式
當前消費者支援的認證方式。
密钥类型
对称密钥:產生一份預設的JWKS配置(每個消費者不同),包含加密或者解密Token時使用的密鑰。
非对称密钥:需要您自己填寫完整的JWKS配置,使用私密金鑰加密Token。網關根據JWKS中配置的公開金鑰進行解密。
JWKS
設定JWKS配置,JWKS規範說明請參考JSON Web Key (JWK)。
JWT Token配置
設定JWT Token配置資訊。
类型:Token參數類型。預設Header。
Key:Token參數名稱。
前缀:Token參數名的首碼。設定需要校正的Token參數資訊,預設是以Bearer為首碼放在Authorization Header中,例如:Authorization: Bearer token。
是否透传:選中Token參數透傳,表示透傳此Token參數到後端服務。
JWT Payload 内消费者标识
指定從JWT Payload中的Key以及對應Value來識別為當前消費者。預設提供一對標識,Key為uid,Value為隨機字串,可以自行修改。
以上圖配置為例,JWT Token中的Payload應為如下所示:
{ "uid": "11215ac069234abcb8944232b79ae711" }
Token產生方式
本文應用Java樣本說明,其他語言使用者也可以找到相關的工具產生金鑰組。
建立一個Maven專案,注入如下依賴:
<dependency>
<groupId>org.bitbucket.b_c</groupId>
<artifactId>jose4j</artifactId>
<version>0.7.0</version>
</dependency>使用預設對稱金鑰樣本產生Token
代碼相關設定說明。
privateKeyJson:即在建立消費者時使用的JWKS,可以在建立消費者時記錄下自己使用的JWKS,也可以在建立消費者後,在消費者基礎配置頁擷取JWKS。
設定消費者標識。即
claims.setClaim("uid", "11215ac069234abcb8944232b79ae711"),該消費者標識為建立消費者時控制台預設產生,也可以根據自身邏輯進行修改。
您也可以在建立消費者後,在消費者基礎配置頁擷取消費者標識。

設定密碼編譯演算法。即
jws.setAlgorithmHeaderValue(AlgorithmIdentifiers.HMAC_SHA256),該密碼編譯演算法要和JWKS保持一致。說明目前支援的密碼編譯演算法有ES256、ES384、ES512、RS256、RS384、RS512、PS256、PS384、PS512、HS256、HS384、HS512和EdDSA。

使用對稱式加密的時候,需要對"k"進行解碼。
jws.setKey(new HmacKey(Base64.decode(JsonUtil.parseJson(privateKeyJson).get("k").toString())));設定到期時間。到期時間需要小於7天,超出到期時間後,請重建Token,以保證Token的安全性。
... NumericDate date = NumericDate.now(); date.addSeconds(120*60); claims.setExpirationTime(date); claims.setNotBeforeMinutesInThePast(1); ...根據自身業務需要,可以在JWKS的
PAYLOAD中添加自訂參數。
使用非對稱金鑰樣本產生Token
代碼相關設定說明。
設定
privateKeyJson、消費者標識、到期時間,同對稱式加密演算法。設定密碼編譯演算法,即
jws.setAlgorithmHeaderValue(AlgorithmIdentifiers.RSA_USING_SHA256)。該密碼編譯演算法和JWKS保持一致。對於非對稱式加密演算法,要用其私密金鑰進行加密。
... jws.setAlgorithmHeaderValue(AlgorithmIdentifiers.RSA_USING_SHA256); PrivateKey privateKey = new RsaJsonWebKey(JsonUtil.parseJson(privateKeyJson)).getPrivateKey(); jws.setKey(privateKey); ...
根據自身業務需要,可以在JWKS的
PAYLOAD中添加自訂參數。
開啟路由認證
登入MSE網關管理主控台,並在頂部功能表列選擇地區。
在左側導覽列選擇云原生网关 > 网关列表。
在网关列表頁面,單擊目標網關名稱。
在左側導覽列,單擊路由管理,然後選擇路由頁簽。
在需要變更的路由規則操作列,單擊策略配置。
在策略配置頁簽,單擊认证。配置完成後,單擊儲存。
參數
描述
認證方式
當前路由認證消費者時使用的認證方式。
開啟狀態
開啟後,認證鑒權生效。
授權給消費者
登入MSE網關管理主控台,並在頂部功能表列選擇地區。
在左側導覽列選擇云原生网关 > 网关列表。
在网关列表頁面,單擊目標網關名稱。
在左側導覽列,單擊安全管理 > 消费者鉴权。
在需要變更的消費者規則操作列單擊授权。
在消费者授权頁簽,單擊关联路由,選擇要授權給當前消費者的路由,然後單擊确定。