HarmonyOS 鸿蒙Next中关于APP中调用后端服务

HarmonyOS 鸿蒙Next中关于APP中调用后端服务 【问题描述】:如果在APP中直接调用后端服务,网络请求这些会加密吗?传输方式是什么呢?会不会暴露后端服务?

对于这种有后端数据库和以Python为核心的服务的APP来说,你们有什么推荐的解决方案吗?

【问题现象】:如果鸿蒙AGC这些能提供可自行开发的云服务调用,我就调整开发方案,进行第2款正式APP的开发,因为必须要接入后端Python,你们这边有更方便的接入兼容鸿蒙的云端服务方案,当然更好,我就不用再考虑其他平台了

【版本信息】:NA

【复现代码】:NA

【尝试解决方案】:NA

6 回复

根据您的问题,我来为您详细解答鸿蒙 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. 认证与授权机制

令牌认证流程:

  1. 用户登录获取访问令牌(JWT/OAuth2)
  2. 每次请求携带令牌
  3. 后端验证令牌有效性和权限

代码示例(令牌验证):

// 鸿蒙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

实现步骤:

  1. Python 后端提供 RESTful API(FastAPI/Flask/Django)
  2. 鸿蒙 APP 通过 HTTPS 直接调用
  3. 实现认证和数据加密

注意事项:

  • 必须使用 HTTPS
  • 实现完善的认证机制
  • 做好输入验证和错误处理

方案二:AGC 云函数作为中间层(推荐)

适用场景: 中大型应用,需要更好的安全性和可扩展性

实现步骤:

  1. 创建 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 };
};
  1. 鸿蒙 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/加密
数据库

核心优势:

  1. 安全性:多层防护,隐藏真实后端
  2. 可扩展性:云函数自动扩缩容
  3. 易维护性:集中管理 API 和安全策略
  4. 合规性:满足应用商店安全要求

六、实施建议

  1. 优先使用 AGC 服务:利用华为提供的安全基础设施
  2. 遵循最小权限原则:只暴露必要的 API 和权限
  3. 定期安全审计:检查代码和配置中的安全隐患
  4. 监控和日志:建立完善的监控体系,及时发现异常

通过以上方案,您可以在保证安全性的同时,实现鸿蒙 APP 与 Python 后端服务的可靠对接。如果您需要更具体的代码示例或架构设计,请告诉我您的具体需求,我可以为您提供更详细的指导。

更多关于HarmonyOS 鸿蒙Next中关于APP中调用后端服务的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


HTTPS 会加密。如果你配置了SSL证书,使用 https://…,传输通道是加密的(TLS/SSL)。虽然抓包工具能看到你访问了哪个IP或域名,但它无法解密具体的Payload(请求体和响应体),除非你在手机上主动安装了该抓包工具的受信任根证书。

总的来说,HarmonyOS是一款非常优秀的操作系统,期待它能在未来带给我们更多惊喜!

原本之前AGC平台有个云函数功能是支持的,不过现在只支持用 Node.js 去写后端程序了。

https://developer.huawei.com/consumer/cn/doc/AppGallery-connect-Guides/agc-cloud-function-introduction-0000001059279544

鸿蒙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运行时环境,但你可以考虑以下两种架构方案:

  1. 混合架构:将身份认证、推送、统计分析等通用能力交由AGC处理,而将核心业务逻辑(Python实现)部署在你自己的云服务器或支持Python的云平台(如AWS、Google Cloud、阿里云等)上。鸿蒙APP分别调用AGC服务和你的私有后端服务。

  2. 全自建后端:完全使用你自己的Python后端服务,负责所有业务逻辑和数据存储。鸿蒙APP通过HTTPS与之通信。你需要自行确保后端服务器的安全、高性能和可扩展性。

因此,是否采用AGC取决于你的具体需求。如果AGC的现有服务能满足你大部分通用需求,采用混合架构可以降低开发运维成本。如果你的业务严重依赖Python实现的复杂逻辑,那么自建或选用其他支持Python的云平台作为核心后端,同时选择性集成AGC的辅助服务,是更直接灵活的方案。HarmonyOS APP与后端的集成方式在技术上与开发Android或iOS APP并无本质区别。

回到顶部