文档

公共DNS鸿蒙版SDK接入手册

更新时间:

本文档介绍了阿里云公共DNS 鸿蒙(HarmonyOS)版本SDK的接入和开发方式。在接入过程中遇到问题可以钉钉咨询:behladu

1.概述

阿里云公共DNS鸿蒙SDK是阿里云面向广大鸿蒙系统开发者提供的基于DOH安全加密协议的DNS域名解析防劫持服务开发工具包。

开发者利用本SDK,可以在自己的鸿蒙APP中轻松接入阿里云公共DNS,解决域名解析异常被劫持问题,同时还能提升域名解析调度精准性、加速域名解析变更在全网的生效速度、降低DNS解析时延。

2.如何使用SDK

2.1 引用本地HAR包方式集成SDK

在工程的oh-package.json5中设置三方包依赖。以HAR包在工程根目录下为例,配置示例如下(实际配置时请以HAR包实际目录为准):

"dependencies": {
    "library": "file:alidns_doh_harmony_sdk-0.0.1.har"
 }

依赖设置完成后,需要执行ohpm install命令安装依赖包,依赖包会存储在工程的oh_modules目录下。

ohpm install

2.2 如何使用SDK

  • 引入头文件

import { setAccessKey, setEnableSafeMode, getALIDoH } from 'alidohlibrary'
  • 设置鉴权模式

推荐开启鉴权模式,以保障用户身份安全,不被第三方未授权者盗用,该参数默认开启,用户在Alibity onCreate生命周期回调中执行以下代码配置SDK:

重要

鉴权模式下setAccessKey为必传项,用户请参考产品鉴权文档在控制台创建AccessKey ID AccessKey Secret

import { setAccessKey, setEnableSafeMode } from 'alidohlibrary'

const AccessKeID = '这里需要替换为您在控制台“接入配置”创建的密钥的 AccessKey ID';
const AccessKeySecret = '这里需要替换为您在控制台“接入配置”创建的密钥的 AccessKey Secret';

export default class EntryAbility extends UIAbility {
  onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
    // ************* 阿里DoH(鉴权)配置 begin *************
    setEnableSafeMode(true);
    setAccessKey(AccessKeID,AccessKeySecret);
    // ************* 阿里DoH(鉴权)配置 end *************
  }

  // 省略其它代码
}
  • 设置非鉴权模式

对于不需要严格身份验证的应用或测试环境,用户在Alibity onCreate生命周期回调中执行以下代码配置SDK:

重要

需要您在控制台“接入指引”中将方式三:DoT/DoH接入中的启用状态开关开启,如图所示:

截屏2024-06-07 12

import { setAccessKey, setEnableSafeMode } from 'alidohlibrary'

export default class EntryAbility extends UIAbility {
  onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
    // ************* 阿里DoH(非鉴权)配置 begin *************
    setEnableSafeMode(false);
    // ************* 阿里DoH(非鉴权)配置 end *************
  }

  // 省略其它代码
}
  • 网络请求中使用方式

通过getALIDoH()获取DOH服务URL,然后在HTTP请求配置中使用它作为dnsOverHttps参数。

let httpRequest = http.createHttp();
httpRequest.request(
  "https://www.aliyun.com",
  {
    dnsOverHttps: await getALIDoH(),
    method: http.RequestMethod.GET, 
    header: [{
      'Content-Type': 'application/json'
    }],
    expectDataType: http.HttpDataType.STRING, 
    usingCache: false,
    priority: 1, 
    connectTimeout: 3000, 
    readTimeout: 3000,
    usingProxy: false, 
  }, (err: BusinessError, data: http.HttpResponse) => {
 
  }
);
  • webview中的使用方式

通过web_webview.WebviewController.setHttpDns方法,设置Webview使用的安全DNS模式为自动,并传入通过getALIDoH()获取的DOH URL。

web_webview.WebviewController.setHttpDns(web_webview.SecureDnsMode.SECURE_ONLY, await getALIDoH())
说明

安全最佳实践:确保妥善保管AccessKey ID和AccessKey Secret,避免泄露。

控制台配置:无论是鉴权还是非鉴权模式,都需要根据指引在阿里云控制台完成相应的设置。

更新与维护:关注SDK的更新,及时集成新版本以获取安全性和性能上的改进。

通过遵循上述步骤,开发者可以有效提升其鸿蒙应用的网络安全性及DNS解析效率,为用户提供更可靠、快速的服务体验。