本文档介绍了阿里云公共DNS 鸿蒙(HarmonyOS)版本SDK的接入和开发方式。在接入过程中遇到问题可以钉钉咨询:behladu
1.概述
阿里云公共DNS鸿蒙SDK是阿里云面向广大鸿蒙系统开发者提供的基于DOH安全加密协议的DNS域名解析防劫持服务开发工具包。
开发者利用本SDK,可以在自己的鸿蒙APP中轻松接入阿里云公共DNS,解决域名解析异常被劫持问题,同时还能提升域名解析调度精准性、加速域名解析变更在全网的生效速度、降低DNS解析时延。
2.如何使用SDK
进入控制台“接入配置”功能下载鸿蒙版SDK,并集成SDK在自己的App工程项目中
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接入中的启用状态开关开启,如图所示:
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解析效率,为用户提供更可靠、快速的服务体验。