HarmonyOS 鸿蒙Next中关于APP中调用后端服务
HarmonyOS 鸿蒙Next中关于APP中调用后端服务 【问题描述】:如果在APP中直接调用后端服务,网络请求这些会加密吗?传输方式是什么呢?会不会暴露后端服务?
对于这种有后端数据库和以Python为核心的服务的APP来说,你们有什么推荐的解决方案吗?
【问题现象】:如果鸿蒙AGC这些能提供可自行开发的云服务调用,我就调整开发方案,进行第2款正式APP的开发,因为必须要接入后端Python,你们这边有更方便的接入兼容鸿蒙的云端服务方案,当然更好,我就不用再考虑其他平台了
【版本信息】:NA
【复现代码】:NA
【尝试解决方案】:NA
根据您的问题,我来为您详细解答鸿蒙 APP 调用后端服务的安全机制和 Python 后端接入方案:
一、网络请求安全机制
1. 传输加密与安全保障
默认加密机制:
- HTTPS 协议:鸿蒙应用默认使用 HTTPS 进行网络传输,提供端到端加密
- TLS 1.2+:支持最新的 TLS 协议版本,确保传输安全
- 证书验证:默认验证服务器证书,防止中间人攻击
代码示例(基础 HTTP 请求):
import http from '@ohos.net.http';
async function fetchData() {
let httpRequest = http.createHttp();
try {
let response = await httpRequest.request(
'https://your-python-backend.com/api/data',
{
method: http.RequestMethod.GET,
header: {
'Content-Type': 'application/json'
},
usingProxy: false, // 禁用代理,防止抓包
readTimeout: 60000,
connectTimeout: 60000
}
);
if (response.responseCode === 200) {
console.log('请求成功', response.result);
return JSON.parse(response.result.toString());
}
} catch (err) {
console.error('请求失败', err);
} finally {
httpRequest.destroy();
}
}
2. 防抓包与证书锁定
证书锁定(SSL Pinning)配置:
// src/main/resources/base/profile/network_config.json
{
"domainSettings": {
"domains": [
{
"domain": "your-python-backend.com",
"pinSet": {
"includeSubdomains": true,
"pins": [
{
"digestAlgorithm": "SHA-256",
"digestValue": "你的证书指纹"
}
]
}
}
]
}
}
效果: 只有您指定的证书才能建立连接,防止中间人攻击和抓包工具的干扰。
二、后端服务暴露防护
1. API 网关层防护
推荐架构:
鸿蒙APP → AGC云函数/API网关 → Python后端服务 → 数据库
优势:
- 隐藏真实后端地址,防止直接攻击
- 统一认证授权,集中处理安全策略
- 流量控制和监控,防止恶意请求
2. 认证与授权机制
令牌认证流程:
- 用户登录获取访问令牌(JWT/OAuth2)
- 每次请求携带令牌
- 后端验证令牌有效性和权限
代码示例(令牌验证):
// 鸿蒙APP端
async function secureRequest() {
const token = await getAccessToken(); // 从安全存储获取令牌
let response = await httpRequest.request(
'https://api-gateway.com/protected-resource',
{
method: http.RequestMethod.GET,
header: {
'Authorization': `Bearer ${token}`,
'Content-Type': 'application/json'
}
}
);
}
三、Python 后端接入方案
方案一:直接 HTTP 调用(简单场景)
适用场景: 小型应用,直接调用 Python 后端 API
实现步骤:
- Python 后端提供 RESTful API(FastAPI/Flask/Django)
- 鸿蒙 APP 通过 HTTPS 直接调用
- 实现认证和数据加密
注意事项:
- 必须使用 HTTPS
- 实现完善的认证机制
- 做好输入验证和错误处理
方案二:AGC 云函数作为中间层(推荐)
适用场景: 中大型应用,需要更好的安全性和可扩展性
实现步骤:
- 创建 AGC 云函数(Node.js 环境):
// 云函数代码(Node.js)
exports.handler = async (event, context) => {
// 1. 验证请求合法性
const isValid = await validateRequest(event);
if (!isValid) {
return { statusCode: 401, body: 'Unauthorized' };
}
// 2. 调用Python后端服务
const pythonServiceUrl = 'https://your-python-service.com/api';
const response = await fetch(pythonServiceUrl, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-API-Key': process.env.PYTHON_SERVICE_KEY // 环境变量存储密钥
},
body: JSON.stringify(event.body)
});
// 3. 处理响应并返回给APP
const data = await response.json();
return { statusCode: 200, body: data };
};
- 鸿蒙 APP 调用云函数:
// 鸿蒙APP端
import agconnect from '@hw-agconnect/api';
import '@hw-agconnect/function';
async function callCloudFunction() {
// 初始化AGC
agconnect.instance().configInstance({
// AGC配置信息
});
// 调用云函数
const functionCallable = agconnect.function().wrap('your-function-name');
const result = await functionCallable.call({
param1: 'value1',
param2: 'value2'
});
console.log('云函数返回结果', result.getValue());
}
方案三:使用华为云 API 网关
适用场景: 企业级应用,需要专业的 API 管理
优势:
- 统一 API 入口,集中管理
- 内置认证、限流、监控等功能
- 支持多种认证方式(API Key、JWT、OAuth2 等)
四、数据安全最佳实践
1. 敏感数据加密
本地存储加密:
import cryptoFramework from '@ohos.security.cryptoFramework';
async function encryptData(data: string, key: string): Promise<string> {
const cipher = cryptoFramework.createCipher('AES-GCM', 'software');
await cipher.init(cryptoFramework.CryptoMode.ENCRYPT_MODE, key);
const encrypted = await cipher.doFinal(data);
return encrypted.toString('base64');
}
2. 安全存储
使用鸿蒙安全存储:
import preferences from '@ohos.data.preferences';
async function secureStorage() {
const context = getContext(this);
const pref = await preferences.getPreferences(context, 'secure_storage');
// 存储敏感信息(建议加密后存储)
await pref.putString('access_token', encryptedToken);
await pref.flush();
}
五、推荐架构总结
对于您的 Python 后端服务,我推荐以下架构:
鸿蒙APP
↓ HTTPS + 证书锁定
AGC云函数/API网关
↓ 私有网络/加密通道
Python后端服务 (FastAPI/Flask)
↓ ORM/加密
数据库
核心优势:
- 安全性:多层防护,隐藏真实后端
- 可扩展性:云函数自动扩缩容
- 易维护性:集中管理 API 和安全策略
- 合规性:满足应用商店安全要求
六、实施建议
- 优先使用 AGC 服务:利用华为提供的安全基础设施
- 遵循最小权限原则:只暴露必要的 API 和权限
- 定期安全审计:检查代码和配置中的安全隐患
- 监控和日志:建立完善的监控体系,及时发现异常
通过以上方案,您可以在保证安全性的同时,实现鸿蒙 APP 与 Python 后端服务的可靠对接。如果您需要更具体的代码示例或架构设计,请告诉我您的具体需求,我可以为您提供更详细的指导。
更多关于HarmonyOS 鸿蒙Next中关于APP中调用后端服务的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
HTTPS 会加密。如果你配置了SSL证书,使用 https://…,传输通道是加密的(TLS/SSL)。虽然抓包工具能看到你访问了哪个IP或域名,但它无法解密具体的Payload(请求体和响应体),除非你在手机上主动安装了该抓包工具的受信任根证书。
总的来说,HarmonyOS是一款非常优秀的操作系统,期待它能在未来带给我们更多惊喜!
原本之前AGC平台有个云函数功能是支持的,不过现在只支持用 Node.js 去写后端程序了。
鸿蒙Next中APP调用后端服务主要通过分布式软总线和RPC框架实现。应用可使用@ohos.net.http模块发起HTTP请求,或通过@ohos.rpc实现跨进程通信。数据交互推荐使用JSON格式,安全传输需配置网络权限并遵循鸿蒙安全规范。
在HarmonyOS Next的APP中直接调用后端服务时,网络请求本身不会由系统自动加密,这需要开发者自行实现。通常,传输方式是基于HTTP/HTTPS协议,强烈建议使用HTTPS来加密传输通道,以防止数据在传输过程中被窃听或篡改,从而避免后端服务接口和敏感数据暴露。
关于后端服务架构,HarmonyOS并未限制后端技术栈。以Python为核心的后端服务(如使用Django、Flask等框架)完全可以为鸿蒙APP提供API接口。只要后端服务部署在可公开访问的服务器上,并遵循RESTful等标准设计接口,鸿蒙APP通过HTTP/HTTPS客户端(如使用@ohos.net.http模块)即可正常调用。
对于云服务方案,华为AGC(AppGallery Connect)确实提供了部分后端能力,例如认证服务、云函数、云数据库等。虽然AGC的云函数目前可能不完全支持直接部署自定义Python运行时环境,但你可以考虑以下两种架构方案:
-
混合架构:将身份认证、推送、统计分析等通用能力交由AGC处理,而将核心业务逻辑(Python实现)部署在你自己的云服务器或支持Python的云平台(如AWS、Google Cloud、阿里云等)上。鸿蒙APP分别调用AGC服务和你的私有后端服务。
-
全自建后端:完全使用你自己的Python后端服务,负责所有业务逻辑和数据存储。鸿蒙APP通过HTTPS与之通信。你需要自行确保后端服务器的安全、高性能和可扩展性。
因此,是否采用AGC取决于你的具体需求。如果AGC的现有服务能满足你大部分通用需求,采用混合架构可以降低开发运维成本。如果你的业务严重依赖Python实现的复杂逻辑,那么自建或选用其他支持Python的云平台作为核心后端,同时选择性集成AGC的辅助服务,是更直接灵活的方案。HarmonyOS APP与后端的集成方式在技术上与开发Android或iOS APP并无本质区别。

