return dcs.get();
} catch (Throwable th) {
if (th instanceof RequestNotPermitted) { response.setStatus(429);
response.getWriter().print("rate limited.");
LOGGER.warn("the request is rate limit by policy : {}", th.getMessage());
} else {
if (serverRecoverPolicy != null) { return serverRecoverPolicy.apply(th);
}
throw th;
}} finally {
SpringCloudInvocationContext.removeInvocationContext();
}
上面简单的介绍了自定义开发。对于更加深入的使用方式,也可以直接参考Java Chassis、Spring Cloud、Dubbo项目中的默认实现代码。
6.4 使用安全认证
开发指南 6 使用微服务引擎功能
6.4.1 安全认证概述
开启了“安全认证”的微服务引擎专享版,通过微服务控制台提供了基于RBAC
(Role-Based Access Control,基于角色的访问控制)的系统管理功能。权限与角色 相关联,您可以使用关联了admin角色权限的帐号创建新帐号,根据实际业务需求把 合适的角色同帐号关联。使用该帐号的用户则具有对该微服务引擎的相应的访问和操 作权限。
微服务引擎专享版开启了安全认证之后,所有调用的API都需要先获取token才能调 用,认证流程请参考服务中心RBAC说明。
开启了安全认证的微服务引擎专享版,在使用安全认证前需要完成以下工作:
1. 创建安全认证帐号名和密码
2. 配置微服务安全认证的帐号名和密码
说明
框架支持安全认证功能的版本要求:Spring Cloud需要集成Spring Cloud Huawei 1.6.1及以上版 本,Java Chassis需要2.3.5及以上版本。
6.4.2 创建安全认证帐号名和密码
为开启了安全认证的微服务引擎专享版创建帐号名和密码,请参考系统管理。
6.4.3 配置微服务安全认证的帐号名和密码
微服务引擎专享版开启安全认证后,需要对连接到该引擎的微服务组件开启安全认 证。开启安全认证是通过配置安全认证帐号名和密码的方式触发。目前支持通过配置 文件配置方式和环境变量注入的方式。
由于帐号和密码涉及安全问题,建议加密后使用。
Spring Cloud 微服务组件配置安全认证帐号名和密码
● 配置文件配置方式
为微服务的“bootstrap.yml”文件增加以下配置,若已配置请忽略。
spring:
cloud:
servicecomb:
credentials:
account:
name: test #结合用户实际值配置 password: mima #结合用户实际值配置 cipher: default
说明
用户密码password默认为明文存储,无法保证安全。建议您对密码进行加密存储,请参考 自定义实现password的加密存储算法。
● 环境变量注入方式
为微服务添加如表1 所示环境变量。
添加环境变量,请参考设置应用环境变量。
开发指南 6 使用微服务引擎功能
表6-8 环境变量
环境变量 说明
spring_cloud_servicecomb_credentials_account_na
me 结合用户实际值配置。
spring_cloud_servicecomb_credentials_account_pa
ssword 结合用户实际值配置。
说明用户密码password默认为 明文存储,无法保证安 全。建议您对密码进行加 密存储,请参考自定义实 现password的加密存储算 法。
Java Chassis 微服务组件配置安全认证帐号名和密码
● 配置文件配置方式
为微服务的“microservice.yml”文件增加以下配置,若已配置请忽略。
servicecomb:
credentials:
rbac.enabled: true #结合用户实际值配置 cipher: default
account:
name: test #结合用户实际配置 password: mima #结合用户实际配置 cipher: default
说明
用户密码password默认为明文存储,无法保证安全。建议您对密码进行加密存储,请参考 配置安全认证参数。
● 环境变量注入方式
为微服务添加如表2 所示环境变量。
添加环境变量,请参考设置应用环境变量。
表6-9 环境变量
环境变量 说明
servicecomb_credentials_rbac_enabled ● true:开启安 全认证。
● false:不开启 安全认证。
servicecomb_credentials_account_name 结合用户实际值 配置。
开发指南 6 使用微服务引擎功能
环境变量 说明
servicecomb_credentials_account_password 结合用户实际值 配置。
说明用户密码password 默认为明文存储,
无法保证安全。建 议您对密码进行加 密存储,请参考配 置安全认证参数。
开发指南 6 使用微服务引擎功能
7 附录
Java Chassis版本升级参考 本地开发工具说明
7.1 Java Chassis 版本升级参考
● 使用2.1.3版本之前的Java Chassis接入微服务引擎
a. 需要额外引入CSE SDK。 引入CSE SDK使用如下Maven Dependency Management:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.huawei.paas.cse</groupId>
<artifactId>cse-dependency</artifactId>
<version>版本号</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
b. 并引入依赖:
<dependency>
<groupId>com.huawei.paas.cse</groupId>
<artifactId>cse-solution-service-engine</artifactId>
</dependency>
引入CSE SDK,Maven Settings需要增加额外的仓库:
<repositories>
<repository>
<snapshots>
<enabled>false</enabled>
</snapshots>
<id>huaweicloudsdk-releases</id>
<name>huaweicloudsdk</name>
<url>https://repo.huaweicloud.com/repository/maven/huaweicloudsdk/</
url>
</repository>
</repositories>
● 升级到2.1.3及以上版本
开发指南 7 附录
a. 需要修改Maven Dependency Management:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.apache.servicecomb</groupId>
<artifactId>java-chassis-dependencies</artifactId>
<version>${java-chassis.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
b. 并引入依赖:
<dependency>
<groupId>org.apache.servicecomb</groupId>
<artifactId>solution-basic</artifactId>
</dependency>
<dependency>
<groupId>org.apache.servicecomb</groupId>
<artifactId>servicestage-environment</artifactId>
</dependency>
如果依赖了其他groupId为com.huawei.paas.cse的软件包,删除即可。2.1.3 之后,所有软件包可以从Maven中央库获取,不需要额外配置Maven仓库。
7.2 本地开发工具说明
本地开发工具包含了本地轻量化微服务引擎,用于本地开发的轻量服务中心、配置中 心,并提供简单的界面。
使用说明请参考README文件。
表7-1 本地轻量化微服务引擎版本说明
版本 发行时间 获取路径
2.1.3 2022.01.11 Local-CSE-2.1.3-windows-amd64.zip Local-CSE-2.1.3-linux-amd64.zip Local-CSE-2.1.3-linux-arm64.zip
说明
本地轻量化微服务引擎仅作为本地开发调测,请勿用于商业使用。
开发指南 7 附录