云服务器内容精选

  • OneAccess 中配置元数据文件 配置元数据文件,即在OneAccess中配置企业SP的Metadata文件。OneAccess支持“上传文件”和“手动编辑”两种配置,选择其中一种即可。如果后续元数据有更新,需要重新上传或者编辑元数据,否则会影响企业用户通过OneAccess登录企业应用。 单击在OneAccess中添加企业应用中添加的企业应用,在应用信息页面单击应用图标。 在通用信息模块,单击“认证集成”后的打开认证集成设置,此处选择SAML协议,单击“保存”。 应用认证集成协议一旦设置不可修改。 在通用信息模块,单击“认证集成”后的“配置”,进入“参数配置”页签配置元数据文件,可以选择上传文件和手动配置两种方式。 配置参数会明文展示所输入的信息,请防止信息泄露。 上传文件 单击“上传文件”,选择获取的企业SP的元数据文件。 图2 上传元数据文件 当显示“上传成功”时,即系统已提取元数据。 如果提示“文件格式错误,仅支持上传xml格式文件”,需要您确认元数据文件的正确性后,重新上传或者通过手动编辑提取元数据。 企业应用的元数据获取方法请参考SP提供商的帮助文档。 手动配置 在“参数配置”页签,单击“手动配置”。 在手动编辑元数据页面,输入从企业SP元数据文件中获取的“SP Entity ID”、“A CS URL”和“签名证书”等参数,单击“保存”。 图3 配置认证参数 表2 认证参数 参数 是否必选 说明 SP Entity ID 是 SP唯一标识,对应SP元数据文件中的“Entity ID”的值。 断言消费地址(ACS URL) 是 SP回调地址(断言消费服务地址),对应SP元数据文件中“AssertionConsumerService”的值,即当OneAccess认证成功后响应返回的地址。 Name ID 是 用户在应用系统中的账号名对应字段,可以选择用户的属性或者对应的账号属性,此字段的值将作为断言中的subject。 NameID Format 是 SP支持的用户名称标识格式。对应SP元数据文件中“NameIDFormat”的值。 Audience URI 否 允许使用SAML断言的资源,默认和SP Entity ID相同。 Single Logout URL 否 服务提供商提供会话注销功能,用户在OneAccess注销会话后返回该地址。 默认Relay State 否 使用在idp发起的认证中,作为默认的一个值。 支持ForceAuth 是 默认为否。如果SP要求重新认证,则强制用户再次认证。 Response签名 是 默认为否。是否对SAML Response使用IdP的证书签名。 断言签名 是 默认为是。断言需使用IdP的证书签名,对应SP元数据文件中“WantAssertionsSigned”值。 数字签名算法 是 默认为RSA_SHA256,是SAML Response或者断言签名的算法,可在下拉框选择。 数字摘要算法 是 默认为SHA256,是SAML Response或者断言的算法摘要算法,可在下拉框选择。 断言加密 是 默认为否。是否对断言进行加密。 验证请求签名 是 默认为是。用来对SAML Request签名进行验证,对应SP元数据文件中“AuthnRequestsSigned”值。 验证签名证书 是 SP公钥证书,用来验证SAML request的签名,对应SP元数据文件中use="signing"证书内容。
  • 概述 SAML即安全断言标记语言(Security Assertion Markup Language),是OASIS安全服务技术委员会的一个产品,是基于XML的开源标准数据格式。SAML可以解决Web端应用系统的单点登录(SSO)需求,在不同的安全域(security domain)之间交换认证和授权数据。 从抽象的角度来看,SAML主要包括:主要术语和授权流程。 主要术语 表1 主要术语 术语 说明 IdP 身份提供商(Identity Provider,简称IdP)。负责收集、存储用户身份信息,如用户名、密码等,在用户登录时负责认证用户的服务。 SP 服务提供商(Service Provider,简称SP)。与IdP建立信任关系,使用IdP提供的用户信息,为用户提供具体的服务。 SSO 单点登录(Single Sign-On,简称SSO)。用户在OneAccess系统登录后,就可以通过跳转链接访问已建立互信关系的SP系统。 授权流程 用户通过浏览器访问Web应用系统。 Web应用系统生成一个SAML身份验证请求。 Web应用系统将重定向网址发送到用户的浏览器,重定向网址包含应向SSO服务提交的编码SAML身份验证请求。 IdP对SAML请求进行解码。 IdP对用户进行身份验证。认证成功后,IdP生成一个SAML响应并编码返回到用户的浏览器,其中包括经过验证的用户的用户名。 浏览器将SAML响应转发到Web应用系统ACS URL。 Web应用系统使用IdP的公钥验证SAML响应,验证成功,ACS则会将用户重定向到目标网址。 用户将重定向到目标网址并登录到 Web 应用系统。
  • 产品规格差异 Astro企业应用当前提供了基础版、专业版和企业版三种规格套餐,供您选择。关于规格的详细介绍,请参见表1。 基础版:满足个人及创业团队的基础需求,用户能够低门槛入门使用该产品。 专业版/企业版:提供了更多的应用及实体功能,可满足中大型企业的复杂管理需求。 表1 Astro企业应用套餐规格清单 版本类型 基础版 专业版 企业版 开发人数 1人 50人 50人 实体个数 5个 200个 200个 应用数 1个 20个 20个 高低代码混合开发 支持 支持 支持 企业级云原生框架 支持 支持 支持 用户管理 支持 支持 支持 用户权限 支持 支持 支持 高可用中间件SDK 支持 支持 支持 安全 支持 支持 支持 三方依赖管理 支持 支持 支持 Astro企业应用套餐包含的功能,请参见表2。 表2 Astro企业应用套餐功能说明 功能名称 功能描述 实体个数 组织内创建的对象实体总数。 应用数 创建的应用数量。 高低代码混合开发 基于建模的框架代码与可扩展的业务自定义代码混合开发。 高可用中间件SDK 内置高可用能力,如多数据源、容灾切换子能力和流控降级等。 安全 支持安全加解密、认证对接等。 三方依赖管理 通用三方依赖库管理。 三个套餐功能存在差异,请参考表3选择适合您的套餐。 表3 套餐功能特性差异说明 模块 功能 基础版 专业版 企业版 全局功能 导入元数据 支持 支持 支持 架构模板 不支持 不支持 支持 业务对象模板 不支持 不支持 支持 业务模块 不支持 不支持 支持 参考架构 不支持 支持 支持 导入DDL 不支持 不支持 支持 导入swagger 不支持 不支持 支持 框架转换 不支持 支持 支持 技术建模 服务单元化策略 默认SINGLE 默认SINGLE ROOTED SHARDING SINGLE 客户端类型 不支持 OPEN_FEIGN OPEN_FEIGN 客户端依赖类型 不支持 SDK SDK METHOD 支持请求入口出口插件 不支持 支持 支持 生成策略 关闭API中根对象前缀 不支持 支持 支持 多租模型,对象支持多租 不支持 Tenant Tenant 租户验证方式 不支持 Header Token Header Token orm框架 不支持 支持 支持 archunit 不支持 支持 支持 业务建模 默认分表数量 不支持 支持 支持 分库逻辑 默认SINGLE BROADCASTING ROOTED SHARDING SINGLE BROADCASTING ROOTED SHARDING SINGLE 分库策略 不支持 MOD HASH_MOD RANGE CUSTOM INTERVAL MOD HASH_MOD RANGE CUSTOM INTERVAL 分表策略 不支持 DB_SHARDING MOD HASH_MOD INTERVAL DB_SHARDING MOD HASH_MOD INTERVAL 固定字段 支持 支持 支持 枚举字段 支持 支持 支持 自定义DTO 支持 支持 支持 脱敏规则(全局定义) 支持 支持 支持 BO类型 FINAL VALUE_OBJECT FINAL VALUE_OBJECT ABSTRACT FINAL VALUE_OBJECT ABSTRACT 软删除策略 不支持 不支持 支持 对象版本化 不支持 不支持 支持 字段校验 不支持 不支持 支持 维度告警 不支持 支持 支持 应用管理 应用 不支持 不支持 支持 子域 不支持 不支持 支持 应用服务 不支持 不支持 支持 服务SLA 不支持 不支持 支持 资产库 自定义字段类型 不支持 支持 支持 客户端流控策略 不支持 支持 支持 连接器 不支持 不支持 支持 前端开发 前端应用 支持 支持 支持 模板管理 不支持 支持 支持 物料中心 不支持 不支持 支持
  • 升级实例版本 Astro企业应用当前提供了基础版、专业版和企业版三种规格套餐。不同套餐支持的特性差异,请参见产品规格差异。如果您购买的实例无法满足您当前管理需求,则可升级实例版本。 当前仅支持从低规格套餐升级到高规格套餐,不支持降级。规格变更后,不支持回退。 在已购买的实例中,单击“操作”,选择“升级版本”。 图1 选择升级版本 在升级规格页面,选择目标规格,单击“去支付”。 若您购买的是基础版实例,可直接升级到专业版或企业版。若您购买的是专业版实例,仅支持升级到企业版。 图2 选择规格 进入支付页面,选择支付方式,确认付款,支付订单后即可完成规格升级。 父主题: 新手指引
  • AuthObject对象 AuthObject对象即鉴权客体,被鉴权对象。 表2 AuthObject对象参数说明 参数名称 数据类型 描述 projectId String 被鉴权资源所在的项目id,对于不属于项目的资源,允许为空。 对于非多项目应用(MetaService中tenantModel为null或者TENANT),允许为空。 如果为多项目应用(MetaService中tenantModel值为TENANT_PROJECT),则传入projectId。 resource String 被鉴权资源,不允许为空。 根据MetaBOAuthorizeType不同的值,传入对应值。 ROOT:传入BO对象所在的Root BO的id。 TYPE_LEVEL:传入BO name。 INSTANCE_LEVEL:传入BO对象id。
  • AuthSubject对象 AuthSubject对象即鉴权主体。 表1 AuthSubject对象参数说明 参数名称 数据类型 描述 tenantId String 根据用户所在的租户传值: 对于非多租应用(MetaService中tenantModel为空),允许为空。 如果为多租应用(MetaService中tenantModel值为TENANT或者TENANT_PROJECT),则传入tenantId。 uid String 鉴权主体的user id,不允许为空。
  • 实现TokenParser接口 import com.huawei.devspore.plugin.spi.authentication.UserInfo; import com.huaweicloud.devspore.auth.commons.spi.TokenParser; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import org.springframework.stereotype.Component; @Component public class CustomTokenParser implements TokenParser { /** * 若token定义在header中,可使用该接口,token获取根据配置由devspore-auth获取 * * @param token * @param response * @return UserInfo */ @Override public UserInfo parserToken(String token, HttpServletResponse response) { // 自定义token解析 ...... // 判断token是否过期 ...... UserInfo userInfo = new UserInfo(); // 根据解析后的token信息填充UserInfo对象 ...... return userInfo; } /** * 若token未定义在header中,使用该接口 * * @param request * @param response * @return UserInfo */ @Override public UserInfo parserToken(HttpServletRequest request, HttpServletResponse response) { // 从httpServletRequest获取token ...... // 自定义token解析 ...... // 判断token是否过期 ...... UserInfo userInfo = new UserInfo(); // 根据解析后的token信息填充UserInfo对象 ...... return userInfo; } }
  • 配置说明 表1 配置说明 参数名 是否必须 功能 devspore.auth.exclude-paths false 不需要认证的路径,多个规则用分号(;)分隔,优先级大于devspore.auth.auth-patterns。 devspore.auth.auth-patterns false 需要认证的路径,多个规则用分号(;)分隔。 devspore.auth.in-header false token是否在header中,默认true。 devspore.auth.token-name false token在header中的参数名,inHeader设置为true时生效,默认“X-Auth-Token”。
  • 认证配置 在配置文件中加入oauth2认证相关配置和devspore相关配置,如下: devspore: auth: exclude-paths: GET:/test # 不需要认证的路径,多个规则用;分隔 auth-patterns: /v1/** # 需要认证的路径,多个规则用;分隔 in-header: true # token是否在header中,默认true token-name: X-Auth-Token # token在header中的参数名,inHeader设置为true时生效,默认X-Auth-Token
  • 实现UserStore接口 import com.huawei.devspore.plugin.spi.authentication.UserInfo; import com.huawei.devspore.plugin.spi.authentication.UserStore; import org.springframework.stereotype.Component; @Component public class CustomUserStore implements UserStore { @Override public void setUserInfo(UserInfo userInfo) { // 自定义存储用户信息 ...... } @Override public UserInfo getUserInfo() { UserInfo userInfo = new UserInfo(); // 自定义用户信息获取 ...... return userInfo; } }
  • 实现示例 entry插件 继承抽象类Processor,实现doProcess接口,可定义多个插件。 插件均需注册为bean。 import com.huawei.devspore.horizon.DataEvent; import com.huawei.devspore.horizon.exception.PluginException; import com.huawei.devspore.horizon.processor.Processor; import org.springframework.stereotype.Component; /** * custom request plugin */ @Component public class CustomRequestPlugin extends Processor { @Override public boolean doProcess(DataEvent dataEvent) throws PluginException { // do your code ........ return true; } } 多个插件以","分隔,多个插件按配置顺序执行。 devspore: horizon: processors: defaultRequestPlugin,customRequestPlugin; exit插件 实现Observer接口中observer接口,可定义多个插件。 插件均需注册为bean。 import com.huawei.devspore.horizon.DataEvent; import com.huawei.devspore.horizon.exception.PluginException; import com.huawei.devspore.horizon.subscribe.Observer; import org.springframework.stereotype.Component; /** * custom response plugin */ @Component public class CustomResponsePlugin implements Observer { @Override public void observe(DataEvent dataEvent) throws PluginException { // do your code ...... } } 配置文件中多个插件以","分隔,多个插件按配置顺序执行。 devspore: horizon: observers: defaultResponsePlugin,customResponsePlugin
  • 整体架构 devspore-horizon是DevSpore开发框架提供的一种插件机制,您可以在请求被处理前(Entry)和应答发送前(Exit)调用DevSpore预置的,也可以使用自己开发的插件,可用于实现统一的操作前认证、鉴权,操作后消息发送、缓存更新、审计等功能。 devspore-horizon架构图如下: 图1 架构图 Entry类插件采用的是责任链模式(chain of resposibility),所有的插件按照被注册的顺序依次调用,其中有一个插件抛出异常则整个请求返回失败。 Exit类插件采用的是观察者模式(Observer),所有的插件作为观察者注册,DevSpore运行时库里的Publisher模块同时调用所有的观察者插件(插件可能被并发执行且执行的顺序随机),插件执行的结果不能影响请求返回。
  • 业务场景及设计流程说明 在AstroPro中,用户通过业务建模,可生成高可用、高可靠、以及安全稳定的企业级IT应用框架。本入门通过创建一个简单的订单系统,帮助您快速上手AstroPro。 本入门为创建一个简单的订单系统,订单系统中包括用户(User)、订单(Order)和订单详情(OrderDetail)三个业务对象,且三个对象之间存在聚合关系,即用户存在时,订单才会存在,订单存在时,订单详情才会存在。同时一个用户可以关联多个订单,订单通过单号进行标识,一个订单又可以关联多个商品,例如手机、耳机等,商品可以记录数量。在AstroPro中,构建上述一个订单系统的流程,如图图1所示。 图1 开发订单系统流程图
  • 购买扩容包 扩容包仅适用于在购买专业版或企业版的基础上使用,不可单独购买和退订。扩容包的使用截止时间与主资源的截止时间保持一致。 参考购买实例中操作,购买AstroPro企业版实例。 在已购买的实例中,单击“操作”,选择“扩容”。 图4 选择扩容 在购买扩容包页面,设置购买数量,单击“立即购买”。 一个资源扩容包,包含用户数50个、应用数20个、实体个数200个,请按需设置购买数量。 图5 购买扩容包 选择支付方式,单击“确认付款”,完成订单支付。
  • 购买实例 进入购买Astro企业应用实例页面。 “实例规格”选择“企业版”,其他参数按需进行设置,单击“立即购买”。 图1 选择购买规格 确认订单无误后,单击“去支付”。 以购买企业版一年为例,若为基础版,此处配置费用为“0”。 图2 确认订单 选择支付方式,单击“确认付款”,完成支付。 订单支付成功后,单击“返回Astro企业应用控制台”。 在Astro企业应用控制台中,可以查看到Astro企业应用的实例状态。当“实例状态”变为“运行中”时,说明实例已安装完成,可以正常使用Astro企业应用。 图3 查看实例状态