‘壹’ 民科微服务登入入口 民科微服务入口
民科微服务登录入口的获取方式如下:
通过民科微服务小程序登录:
通过官方网站登录(如适用):
注意事项:
民科微服务的功能:
综上所述,民科微服务的登录入口主要通过民科微服务小程序获取,用户也可以尝试通过官方网站进行登录(如适用)。在使用过程中,请确保个人信息的准确性和安全性。
‘贰’ 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资源的安全访问。