- 最新动态
- 功能总览
- 产品介绍
- 计费说明
- 快速入门
- 用户指南
- 最佳实践
- API参考
- SDK参考
-
常见问题
- 公共问题
-
DDoS原生基础防护常见问题
- 产品咨询类
-
基本功能类
- 当遭受超过500Mbps的攻击时如何处理?
- Anti-DDoS流量清洗服务能帮助缓解哪些类型的攻击?
- 当业务经常被DDoS攻击时如何处理?
- ELB防护和ECS防护有什么区别?
- 为什么同一个公网IP地址的清洗次数和攻击次数不一致?
- Anti-DDoS攻击防护是不是默认开启的?
- Anti-DDoS防护是一个区域,还是用户的单个IP?
- 用户注销账号是否需要清理Anti-DDoS流量清洗服务的资源?
- 如何查看Anti-DDoS流量清洗次数?
- 如何查看Anti-DDoS防护统计信息?
- Anti-DDoS如何查看公网IP监控详情?
- 如何查看Anti-DDoS拦截报告?
- 是否能彻底关闭流量清洗功能?
- 如何判断入网流量是否经过了Anti-DDoS流量清洗服务?
- 阈值及黑洞类
- 告警通知类
- 业务故障类
- DDoS原生高级防护常见问题
-
DDoS高防常见问题
- 功能规格
-
接入配置
- 部署在华为云外的业务系统能否接入DDoS高防?
- 接入防护域名后,如何测试防护域名是否配置正确?
- 如何解决上传HTTPS/WebSockets证书时出现“错误的请求”提示的问题?
- 如何将非PEM格式的证书转换为PEM格式?
- DDoS高防和WAF同时使用,怎么配置?
- 如何将业务系统接入高防服务?
- 如何实现CNAME接入?
- DDoS高防在配置多个源站时如何分发流量?
- 用户在完成高防防护配置后,如何检查是否完成源站白名单添加了高防回源IP的配置?
- 如何修改已暴露的源站IP?
- 如何查看高防回源IP段?
- 接入防护域名后,可以进行企业项目资源迁移吗?
- 能否在华为云服务器自行搭建DDoS防御?
- 高防配置黑白名单,如何设置保护客户的服务器?
- DDoS防护策略中配置黑白名单后,还需要在WAF防护策略里配置吗?
- 一个域名如何同时接入IPv4和IPv6?
- 域名接入失败,提示“域名已存在”等信息
- 故障反馈
-
产品咨询
- 什么是被防护的IP地址?
- DDoS高防支持权重回源吗?
- DDoS高防可以跨区域使用吗?
- 什么是CNAME?
- 什么是BGP?
- 什么是DDoS高防的源站端口?
- 什么是DDoS高防源站IP?
- 什么是需要防护的网站IP地址?
- 什么是业务带宽?
- 什么是转发协议?
- 接入DDoS高防时业务会中断吗?
- 同一个域名可以绑定多个高防吗?
- 客户端访问的IP为什么是华为的高防IP?
- 为什么接入DDoS高防后IP地址流量增长?
- IP流量增长是否会暴露源站IP?
- DDoS高防如何防护业务?
- DDoS高防是否支持SSL双向认证?
- 证书上传到DDoS高防后,可以编辑和删除吗?
- 超过DDoS高防业务带宽会有什么影响?
- DDoS高防是软件高防还是硬件高防?
- DDoS高防支持防护IPv6吗?
- 为什么DDoS高防和ELB的流量不一致?
- 计费问题
- 更多文档
- 通用参考
链接复制成功!
认证鉴权
- Token认证:通过Token认证调用请求。
- AK/SK认证:通过AK(Access Key ID)/SK(Secret Access Key)加密调用请求。推荐使用AK/SK认证,其安全性比Token认证要高。
Token认证
Token的有效期为24小时,需要使用一个Token鉴权时,可以先缓存起来,避免频繁调用。
Token在计算机系统中代表令牌(临时)的意思,拥有Token就代表拥有某种权限。Token认证就是在调用API的时候将Token加到请求消息头,从而通过身份认证,获得操作API的权限。
Token可通过调用获取用户Token接口获取,调用本服务API需要project级别的Token,即调用获取用户Token接口时,请求body中auth.scope的取值需要选择project,如下所示。
{ "auth": { "identity": { "methods": [ "password" ], "password": { "user": { "name": "username", "password": "********", "domain": { "name": "domainname" } } } }, "scope": { "project": { "name": "xxxxxxxx" } } } }
获取Token后,再调用其他接口时,您需要在请求消息头中添加“X-Auth-Token”,其值即为Token。例如Token值为“ABCDEFJ....”,则调用接口时将“X-Auth-Token: ABCDEFJ....”加到请求消息头即可,如下所示。
POST https://{{endpoint}}/v3/auth/projects Content-Type: application/json X-Auth-Token: ABCDEFJ....
AK/SK认证
通过使用Access Key ID(AK)/Secret Access Key(SK)加密的方法来验证某个请求发送者身份。当您使用AK/SK认证方式完成认证鉴权时,需要通过请求签名流程获取签名并增加到业务接口请求消息头。
AK(Access Key ID):访问密钥ID。与私有访问密钥关联的唯一标识符;访问密钥ID和私有访问密钥一起使用,对请求进行加密签名。
SK(Secret Access Key):与访问密钥ID结合使用的密钥,对请求进行加密签名,可标识发送方,并防止请求被修改。
以下结合一个Demo来介绍如何对一个请求进行签名,并通过HTTP Client发送一个HTTPS请求的过程。
Demo下载地址:https://github.com/api-gate-way/SdkDemo 。
如果您不使用Demo工程,也可以直接向企业管理员获取API网关签名工具在其他工程中引用。
解压下载的压缩包,得到一个jar文件。将解压出来的jar文件引用到依赖路径中。如下图所示:

- 生成AK/SK。如果已生成过AK/SK,则可跳过本步骤,找到原来已下载的AK/SK文件,文件名一般为:credentials.csv,直接执行2。
- 登录管理控制台。
- 单击用户名,在下拉列表中单击“我的凭证”。
- 单击“访问密钥”。
- 单击“新增访问密钥”,进入“新增访问密钥”页面。
说明:
在统一身份服务中创建的用户,如果创建时未填写邮箱或者手机号,则只需校验登录密码。
- 单击“确定”,创建访问密钥成功后,单击“立即下载”,下载访问密钥。
说明:
为防止访问密钥泄露,建议您将其保存到安全的位置。
- 获取示例代码,解压缩。
- 通过import方式将示例工程导入到Eclipse。
图2 选择已存在的工程图3 选择解压后的示例代码图4 导入成功后工程结构示例
- 对请求进行签名。
签名方法集成在3引入的jar文件中。发送请求前,需要对请求内容进行签名,得到的签名结果将作为http头部信息一起发送。
Demo代码分成三个类进行演示:
- AccessService:抽象类,将GET/POST/PUT/DELETE归一成access方法。
- Demo:运行入口,模拟用户进行GET/POST/PUT/DELETE请求。
- AccessServiceImpl:实现access方法,具体与API网关通信的代码都在access方法中。
- 编辑“Demo.java”文件中的main方法,将以下内容替换为实际获取到的值。
如下所示,红色加粗部分需要替换成实际值,如果调用其他方法,如POST,PUT,DELETE等,请参考对应注释方法。
注意替换region、serviceName、AK/SK和URL,Demo中使用了获取VPC的URL,请替换为您需要的URL,
URL中project_id获取请参见获取项目ID,Endpoint请向企业管理员获取。
//TODO: Replace region with the name of the region in which the service to be accessed is located. private static final String region = ""; //TODO: Replace vpc with the name of the service you want to access. For example, ecs, vpc, iam, and elb. private static final String serviceName = ""; public static void main(String[] args) throws UnsupportedEncodingException { //TODO: Replace the AK and SK with those obtained on the My Credential page. String ak = System.getenv("CLOUD_SDK_AK") String sk = System.getenv("CLOUD_SDK_SK") //TODO: To specify a project ID (multi-project scenarios), add the X-Project-Id header. //TODO: To access a global service, such as IAM, DNS, CDN, and TMS, add the X-Domain-Id header to specify an account ID. //TODO: To add a header, find "Add special headers" in the AccessServiceImple.java file. //TODO: Test the API String url = "https://{Endpoint}/v1/{project_id}/vpcs"; get(ak, sk, url); //TODO: When creating a VPC, replace {project_id} in postUrl with the actual value. //String postUrl = "https://serviceEndpoint/v1/{project_id}/cloudservers"; //String postbody ="{\"vpc\": {\"name\": \"vpc\",\"cidr\": \"192.168.0.0/16\"}}"; //post(ak, sk, postUrl, postbody); //TODO: When querying a VPC, replace {project_id} in url with the actual value. //String url = "https://serviceEndpoint/v1/{project_id}/vpcs/{vpc_id}"; //get(ak, sk, url); //TODO: When updating a VPC, replace {project_id} and {vpc_id} in putUrl with the actual values. //String putUrl = "https://serviceEndpoint/v1/{project_id}/vpcs/{vpc_id}"; //String putbody ="{\"vpc\":{\"name\": \"vpc1\",\"cidr\": \"192.168.0.0/16\"}}"; //put(ak, sk, putUrl, putbody); //TODO: When deleting a VPC, replace {project_id} and {vpc_id} in deleteUrl with the actual values. //String deleteUrl = "https://serviceEndpoint/v1/{project_id}/vpcs/{vpc_id}"; //delete(ak, sk, deleteUrl); }
- 编译与运行接口调用。
在左侧“Package Explorer”中找到“Demo.java”,右键选择“Run AS >Java Application”并单击运行。
可在控制台查看调用日志。