『壹』 民科微服務登入入口 民科微服務入口
民科微服務登錄入口的獲取方式如下:
通過民科微服務小程序登錄:
通過官方網站登錄(如適用):
注意事項:
民科微服務的功能:
綜上所述,民科微服務的登錄入口主要通過民科微服務小程序獲取,用戶也可以嘗試通過官方網站進行登錄(如適用)。在使用過程中,請確保個人信息的准確性和安全性。
『貳』 ASP.NET Core 搭載 Envoy 實現微服務身份認證(JWT)
構建微服務架構時,藉助Envoy對gRPC的「一等公民」支持,可以實現gRPC服務的對外暴露。然而,gRPC服務從內部通信轉變為對外通信後,安全性和規范性需求顯著提升。本文將探討如何利用Envoy作為網關提供身份認證功能,具體採用JWT(Json Web Token)對介面調用方進行身份驗證。
在面對集群環境時,無狀態、輕量級的認證方案如JWT越來越受歡迎。ASP.NET Core中整合JWT非常簡單,藉助第三方庫,只需配置授權/認證中間件即可完成令牌校驗。更高級的選擇如Identity Server 4提供了完整的身份認證解決方案,而博主選擇使用Keycloak,一個類似Identity Server 4的產品,具備友好的用戶界面,便於管理用戶、角色等信息。
搭建Keycloak時,博主使用了服務編排文件和.env文件來管理環境變數。運行docker compose up命令後,Keycloak作為微服務的認證中心啟動,負責用戶、角色、許可權、客戶端的管理。介面消費方通過Keycloak獲取令牌和JWKS,Envoy利用JWKS進行令牌校驗。JWKS的作用將在下節揭示。
在Keycloak中,博主首先創建了一個用戶「慕容龍城」,並分配了一個Developer角色,隨後創建了一個客戶端envoy-client並分配客戶端角色。Keycloak支持四種認證方式,博主以客戶端模式為例,了解了如何通過POST請求獲取令牌,並提供了獲取令牌所需參數的示例。獲取令牌後,可刷新令牌以延長有效期。
Keycloak提供了一個用於服務發現的介面地址,通過此地址可獲得API列表,包括獲取令牌的介面和提供JWKS的介面。JWKS對於Envoy驗證令牌至關重要。至此,Keycloak搭建工作完成。
接下來,博主解釋了JWT的結構,由header、payload和signature三部分組成,其中header和payload使用Base64URL演算法轉換為普通字元串。JWT使用HMAC、RSA或ECDSA演算法進行加密,簽名確保數據未被篡改。JWKS本質上是JSON Web Key Set,包含一組用於驗證JWT的公鑰,Envoy利用JWKS中的公鑰進行令牌驗證。
Envoy中集成JWT認證,通過配置envoy.filters.http.jwt_authn過濾器並指定認證提供者,設置issuer、audiences以及remote_jwks屬性以獲取JWKS地址。規則定義了哪些路由需要認證,Envoy可將讀取遠程JWKS的請求正確轉發。至此,認證服務基礎設施建立完成。
接下來,博主創建了兩個服務:CityService和WeatherService,分別實現了容器化和反向代理。通過docker-compose對服務進行編排,博主展示了一個docker-compose.yaml文件,並驗證了Envoy代理的API介面,確保了介面在攜帶令牌後能正常訪問。
Keycloak獨立於應用,開發者無需在應用或Envoy中進行任何調整,僅需設置令牌過期時間、分配角色及資源范圍。這體現了基礎設施即服務的理念。本文總結了如何利用Envoy實現容器級別的JWT認證服務,從JWT和JWKS的概念、實現過程到環境編排與API編寫,最終實現了一個通用的、容器級別的認證網關,確保API資源的安全訪問。