最近更新时间:2024.04.15 11:36:59
首次发布时间:2023.12.28 21:21:51
阅读本文,您可以获取 Java SDK 安全管理的接口调用示例,实现快速开发。
说明
本文的调用示例包含接口的全部参数。由于参数间可能存在互斥关系,在调用时,请您参考注释,进行调整。
调用接口前,请先完成 Java SDK 的安装及初始化操作
本节为您介绍安全管理相关接口的功能和调用示例。
您可以调用 UpdateAuthKey 接口添加或更新推拉流鉴权。详细的参数说明可参见 UpdateAuthKey 接口文档。
接口调用示例如下所示。
package com.volcengine.live.demo; import com.volcengine.model.live.v20230101.UpdateAuthKeyBody; import com.volcengine.model.live.v20230101.UpdateAuthKeyBodyAuthDetailListItem; import com.volcengine.model.live.v20230101.UpdateAuthKeyRes; import com.volcengine.service.live.v20230101.LiveService; import java.util.ArrayList; import java.util.List; import java.util.LinkedHashMap; import java.util.Map; public class UpdateAuthKeyDemo { public static void main(String[] args) { // 强烈建议不要把 AccessKey ID 和 AccessKey Secret 保存到工程代码里,否则可能导致 AccessKey 泄露,威胁您账号下所有资源的安全。 // 本示例通过从环境变量中读取 AccessKey ID 和 AccessKey Secret,来实现 API 访问的身份验证。运行代码示例前,请配置环境变量 ACCESS_KEY_ID 和 ACCESS KEY_SECRET LiveService service = LiveService.getInstance(); service.setAccessKey(System.getenv("ACCESS_KEY_ID")); service.setSecretKey(System.getenv("ACCESS_KEY_SECRET")); UpdateAuthKeyBody body = new UpdateAuthKeyBody(); // 应用名称,取值与直播流地址中 AppName 字段取值相同,默认为空,表示所有应用名称。支持由大小写字母(A - Z、a - z)、数字(0 - 9)、下划线(_)、短横线(-)和句点(.)组成,长度为 1 到 30 个字符。 body.setApp("live"); // 鉴权配置参数,包括鉴权密钥、鉴权字段、加密字符串生成算法等。 List<UpdateAuthKeyBodyAuthDetailListItem> UpdateAuthKeyBodyAuthDetailList = new ArrayList<>(); UpdateAuthKeyBodyAuthDetailListItem UpdateAuthKeyBodyAuthDetailListItem = new UpdateAuthKeyBodyAuthDetailListItem(); // 自定义鉴权密钥,支持由大小写字母(A - Z、a - z)和数字(0 - 9)组成,长度为 1 到 100 个字符。 UpdateAuthKeyBodyAuthDetailListItem.setSecretKey("1*****1"); // 加密字符串生成算法,取值及含义如下所示。 // <li> `md5`:标准 MD5 算法; </li> // <li> `md5_custom`:自定义 MD5 算法。 </li> UpdateAuthKeyBodyAuthDetailListItem.setEncryptionAlgorithm("md5"); // 鉴权参数字段名称,当前开启域名 URL 地址鉴权时,会通过对地址中的加密字符串和过期时间校验实现 URL 鉴权。默认加密字符串信息的 key 值为 `volcSecret`,过期时间信息的 key 值为 `volcTime`。 // 默认情况下表示`{"volcSecret":"volcSecret","volcTime":"volcTime"}`,您可以自定义参数名,例如, // `{"volcSecret":"sign","volcTime":"expire"} // `。 Map<String, Object> UpdateAuthKeyBodyAuthDetailListItemAuthField = new LinkedHashMap<>(); UpdateAuthKeyBodyAuthDetailListItemAuthField.put("volcSecret","sign"); UpdateAuthKeyBodyAuthDetailListItemAuthField.put("volcTime","expire"); UpdateAuthKeyBodyAuthDetailListItem.setAuthField(UpdateAuthKeyBodyAuthDetailListItemAuthField); // 生成加密字符串所需字段。对称加密算法 `EncryptionAlgorithm`,加密字段存在差异。 // <li> 当加密算法使用 `md5` 时:默认加密字段为 `["AppName","StreamName","key","expireTime"]`,且不支持修改; </li> // <li> 当加密算法使用 `md5_custom` 时:默认无加密字段,但推荐至少包含 `key` 和 `volcTime`。同时您还可以自定义 `Domain`、`AppName`、`StreamName` 等字段。 例如,选择 key、volcTime 和 Domain 作为加密字段,则取值为 `["key","volcTime","Domain"]`。 </li> List<String> UpdateAuthKeyBodyAuthDetailListItemEncryptField = new ArrayList<>(); UpdateAuthKeyBodyAuthDetailListItemEncryptField.add("key"); UpdateAuthKeyBodyAuthDetailListItemEncryptField.add("volcTime"); UpdateAuthKeyBodyAuthDetailListItemEncryptField.add("Domain"); UpdateAuthKeyBodyAuthDetailListItem.setEncryptField(UpdateAuthKeyBodyAuthDetailListItemEncryptField); UpdateAuthKeyBodyAuthDetailList.add(UpdateAuthKeyBodyAuthDetailListItem); body.setAuthDetailList(UpdateAuthKeyBodyAuthDetailList); // 直播流使用的域名。您可以调用 [ListDomainDetail](https//www.volcengine.com/docs/6469/1126815) 接口或在视频直播控制台的[域名管理](https//console-stable.volcanicengine.com/live/main/domain/list)页面,查看直播流使用的域名。 // note: // 参数 `Domain` 和 `Vhost` 传且仅传一个。 body.setDomain("push.example.com"); // 是否开启 URL 地址鉴权,取值及含义如下所示。 // <li> `false`:关闭(默认值); </li> // <li> `true`:开启。 </li> body.setPushPullEnable(true); // 鉴权场景类型,取值及含义如下所示。 // <li> `push`:推流鉴权; </li> // <li> `pull`:拉流鉴权。 </li> body.setSceneType("push"); // 鉴权生效时长,单位为秒,默认值为 604800,取值范围为 [60,2592000],超出生效时长后 URL 无法使用。 body.setValidDuration(60); // 域名空间,即直播流地址的域名所属的域名空间。您可以调用 [ListDomainDetail](https//www.volcengine.com/docs/6469/1126815) 接口或在视频直播控制台的[域名管理](https//console-stable.volcanicengine.com/live/main/domain/list)页面,查看需要查询的直播流使用的域名所属的域名空间。 // note: // 参数 `Domain` 和 `Vhost` 传且仅传一个。 body.setVhost("push.example.com"); try { UpdateAuthKeyRes resp = service.updateAuthKey(body); System.out.println(resp); } catch (Exception e) { e.printStackTrace(); } } }
您可以调用 DescribeAuth 接口查询推拉流鉴权。详细的参数说明可参见 DescribeAuth 接口文档。
接口调用示例如下所示。
package com.volcengine.live.demo; import com.volcengine.model.live.v20230101.DescribeAuthBody; import com.volcengine.model.live.v20230101.DescribeAuthRes; import com.volcengine.service.live.v20230101.LiveService; public class DescribeAuthDemo { public static void main(String[] args) { // 强烈建议不要把 AccessKey ID 和 AccessKey Secret 保存到工程代码里,否则可能导致 AccessKey 泄露,威胁您账号下所有资源的安全。 // 本示例通过从环境变量中读取 AccessKey ID 和 AccessKey Secret,来实现 API 访问的身份验证。运行代码示例前,请配置环境变量 ACCESS_KEY_ID 和 ACCESS KEY_SECRET LiveService service = LiveService.getInstance(); service.setAccessKey(System.getenv("ACCESS_KEY_ID")); service.setSecretKey(System.getenv("ACCESS_KEY_SECRET")); DescribeAuthBody body = new DescribeAuthBody(); // 应用名称,取值与直播流地址中 AppName 字段取值相同,默认为空,表示所有应用名称。支持由大小写字母(A - Z、a - z)、数字(0 - 9)、下划线(_)、短横线(-)和句点(.)组成,长度为 1 到 30 个字符。 body.setApp("live"); // 直播流使用的域名。您可以调用 [ListDomainDetail](https//www.volcengine.com/docs/6469/1126815) 接口或在视频直播控制台的[域名管理](https//console-stable.volcanicengine.com/live/main/domain/list)页面,查看待配置鉴权的推拉流域名。 // note: // 参数 `Domain` 和 `Vhost` 传且仅传一个。 body.setDomain("push.example.com"); // 鉴权场景类型,取值及含义如下所示。 // <li> `push`:推流鉴权; </li> // <li> `pull`:拉流鉴权。 </li> body.setSceneType("push"); // 域名空间,即直播流地址的域名所属的域名空间。您可以调用 [ListDomainDetail](https//www.volcengine.com/docs/6469/1126815) 接口或在视频直播控制台的[域名管理](https//console-stable.volcanicengine.com/live/main/domain/list)页面,查看需要查询的直播流使用的域名所属的域名空间。 // note: // 参数 `Domain` 和 `Vhost` 传且仅传一个。 body.setVhost("push.example.com"); try { DescribeAuthRes resp = service.describeAuth(body); System.out.println(resp); } catch (Exception e) { e.printStackTrace(); } } }
您可以调用 UpdateReferer 接口添加或更新 Referer 黑白名单。详细的参数说明可参见 UpdateReferer 接口文档。
接口调用示例如下所示。
package com.volcengine.live.demo; import com.volcengine.model.live.v20230101.UpdateRefererBody; import com.volcengine.model.live.v20230101.UpdateRefererBodyRefererInfoListItem; import com.volcengine.model.live.v20230101.UpdateRefererRes; import com.volcengine.service.live.v20230101.LiveService; import java.util.ArrayList; import java.util.List; public class UpdateRefererDemo { public static void main(String[] args) { // 强烈建议不要把 AccessKey ID 和 AccessKey Secret 保存到工程代码里,否则可能导致 AccessKey 泄露,威胁您账号下所有资源的安全。 // 本示例通过从环境变量中读取 AccessKey ID 和 AccessKey Secret,来实现 API 访问的身份验证。运行代码示例前,请配置环境变量 ACCESS_KEY_ID 和 ACCESS KEY_SECRET LiveService service = LiveService.getInstance(); service.setAccessKey(System.getenv("ACCESS_KEY_ID")); service.setSecretKey(System.getenv("ACCESS_KEY_SECRET")); UpdateRefererBody body = new UpdateRefererBody(); // 应用名称,取值与直播流地址中 AppName 字段取值相同,默认为空,表示所有应用名称。支持由大小写字母(A - Z、a - z)、数字(0 - 9)、下划线(_)、短横线(-)和句点(.)组成,长度为 1 到 30 个字符。 // note: // 参数 `Domain` 和 `App` 传且仅传一个。 body.setApp("live"); // 拉流域名,您可以调用 [ListDomainDetail](https//www.volcengine.com/docs/6469/1126815) 接口或在视频直播控制台的[域名管理](https//console-stable.volcanicengine.com/live/main/domain/list)页面,查看直播流使用的拉流域名。 // note: // 参数 `Domain` 和 `App` 传且仅传一个。 body.setDomain("push.example.com"); // Referer 防盗链规则列表。 // note: // <li> 同一个 Vhost 下,默认支持配置不超过 100 个 Referer 规则,如需提升限额请[创建工单](https//console.volcengine.com/workorder/create?step=2&SubProductID=P00000076)获取技术支持; </li> // <li> 单次请求最多支持配置 100 个 Referer 规则。 </li> List<UpdateRefererBodyRefererInfoListItem> UpdateRefererBodyRefererInfoList = new ArrayList<>(); UpdateRefererBodyRefererInfoListItem UpdateRefererBodyRefererInfoListItem = new UpdateRefererBodyRefererInfoListItem(); // 用于标识 referer 防盗链的关键词默认取值为 `referer`。 UpdateRefererBodyRefererInfoListItem.setKey("referer"); // Referer 字段规则的匹配优先级,默认为 `0`,取值范围为 [0,100],数值越大,优先级越高。如果优先级相同,则越早加入列表的域名优先级越高。 UpdateRefererBodyRefererInfoListItem.setPriority(80); // Referer 字段规则类型,取值即含义如下所示。 // <li> `deny`:拒绝,即黑名单; </li> // <li> `allow`:通过,即白名单。 </li> UpdateRefererBodyRefererInfoListItem.setType("deny"); // Referer 字段规则,即设置的黑名单或白名单的域名,最大长度限制 300 个字符。 UpdateRefererBodyRefererInfoListItem.setValue("live.example1.net"); UpdateRefererBodyRefererInfoList.add(UpdateRefererBodyRefererInfoListItem); body.setRefererInfoList(UpdateRefererBodyRefererInfoList); // 域名空间,即直播流地址的域名所属的域名空间。您可以调用 [ListDomainDetail](https//www.volcengine.com/docs/6469/1126815) 接口或在视频直播控制台的[域名管理](https//console-stable.volcanicengine.com/live/main/domain/list)页面,查看需要查询的直播流使用的域名所属的域名空间。 body.setVhost("push.example.com"); try { UpdateRefererRes resp = service.updateReferer(body); System.out.println(resp); } catch (Exception e) { e.printStackTrace(); } } }
您可以调用 DescribeReferer 接口查询 Referer 黑白名单。详细的参数说明可参见 DescribeReferer 接口文档。
接口调用示例如下所示。
package com.volcengine.live.demo; import com.volcengine.model.live.v20230101.DescribeRefererBody; import com.volcengine.model.live.v20230101.DescribeRefererRes; import com.volcengine.service.live.v20230101.LiveService; public class DescribeRefererDemo { public static void main(String[] args) { // 强烈建议不要把 AccessKey ID 和 AccessKey Secret 保存到工程代码里,否则可能导致 AccessKey 泄露,威胁您账号下所有资源的安全。 // 本示例通过从环境变量中读取 AccessKey ID 和 AccessKey Secret,来实现 API 访问的身份验证。运行代码示例前,请配置环境变量 ACCESS_KEY_ID 和 ACCESS KEY_SECRET LiveService service = LiveService.getInstance(); service.setAccessKey(System.getenv("ACCESS_KEY_ID")); service.setSecretKey(System.getenv("ACCESS_KEY_SECRET")); DescribeRefererBody body = new DescribeRefererBody(); // 应用名称,取值与直播流地址中 AppName 字段取值相同,默认为空,表示所有应用名称。支持由大小写字母(A - Z、a - z)、数字(0 - 9)、下划线(_)、短横线(-)和句点(.)组成,长度为 1 到 30 个字符。 // note: // 参数 `Domain` 和 `App` 至少传一个。 body.setApp("live"); // 拉流域名,您可以调用 [ListDomainDetail](https//www.volcengine.com/docs/6469/1126815) 接口或在视频直播控制台的[域名管理](https//console-stable.volcanicengine.com/live/main/domain/list)页面,查看直播流使用的拉流域名。 // note: // <li> 参数 `Domain` 和 `Vhost` 传且仅传一个。 </li> // <li> 参数 `Domain` 和 `App` 至少传一个。 </li> body.setDomain("push.example.com"); // 域名空间,即直播流地址的域名(`Domain`)所属的域名空间(`Vhost`)。您可以调用 [ListDomainDetail](https//www.volcengine.com/docs/6469/1126815) 接口或在视频直播控制台的[域名管理](https//console-stable.volcanicengine.com/live/main/domain/list)页面,查看拉流域名所属的域名空间。 // note: // 参数 `Domain` 和 `Vhost` 传且仅传一个。 body.setVhost("push.example.com"); try { DescribeRefererRes resp = service.describeReferer(body); System.out.println(resp); } catch (Exception e) { e.printStackTrace(); } } }
您可以调用 DeleteReferer 接口删除 Referer 黑白名单。详细的参数说明可参见 DeleteReferer 接口文档。
接口调用示例如下所示。
package com.volcengine.live.demo; import com.volcengine.model.live.v20230101.DeleteRefererBody; import com.volcengine.model.live.v20230101.DeleteRefererRes; import com.volcengine.service.live.v20230101.LiveService; public class DeleteRefererDemo { public static void main(String[] args) { // 强烈建议不要把 AccessKey ID 和 AccessKey Secret 保存到工程代码里,否则可能导致 AccessKey 泄露,威胁您账号下所有资源的安全。 // 本示例通过从环境变量中读取 AccessKey ID 和 AccessKey Secret,来实现 API 访问的身份验证。运行代码示例前,请配置环境变量 ACCESS_KEY_ID 和 ACCESS KEY_SECRET LiveService service = LiveService.getInstance(); service.setAccessKey(System.getenv("ACCESS_KEY_ID")); service.setSecretKey(System.getenv("ACCESS_KEY_SECRET")); DeleteRefererBody body = new DeleteRefererBody(); // 域名空间名称。 body.setVhost("live.push.example.com"); // 拉流域名。 // <li> 如创建时传了 `Domain`,删除时需要传该参数; </li> // <li> 如创建时未传 `Domain`,删除时不传该参数。 </li> body.setDomain("live.push.example.com"); // 应用名称 // <li> 如创建时传了 `App`,删除时需要传该参数; </li> // <li> 如创建时未传 `App`,删除时不传该参数。 </li> body.setApp("live"); try { DeleteRefererRes resp = service.deleteReferer(body); System.out.println(resp); } catch (Exception e) { e.printStackTrace(); } } }
您可以调用 UpdateIPAccessRule 接口创建或更新 IP 访问限制。详细的参数说明可参见 UpdateIPAccessRule 接口文档。
接口调用示例如下所示。
package com.volcengine.live.demo; import com.volcengine.model.live.v20230101.UpdateIPAccessRuleBody; import com.volcengine.model.live.v20230101.UpdateIPAccessRuleBodyIPAccessRule; import com.volcengine.model.live.v20230101.UpdateIPAccessRuleRes; import com.volcengine.service.live.v20230101.LiveService; import java.util.ArrayList; import java.util.List; public class UpdateIPAccessRuleDemo { public static void main(String[] args) { // 强烈建议不要把 AccessKey ID 和 AccessKey Secret 保存到工程代码里,否则可能导致 AccessKey 泄露,威胁您账号下所有资源的安全。 // 本示例通过从环境变量中读取 AccessKey ID 和 AccessKey Secret,来实现 API 访问的身份验证。运行代码示例前,请配置环境变量 ACCESS_KEY_ID 和 ACCESS KEY_SECRET LiveService service = LiveService.getInstance(); service.setAccessKey(System.getenv("ACCESS_KEY_ID")); service.setSecretKey(System.getenv("ACCESS_KEY_SECRET")); UpdateIPAccessRuleBody body = new UpdateIPAccessRuleBody(); // 域名空间名称。 body.setVhost("push.example.com"); // 推/拉流域名。 body.setDomain("push.example.com"); // IP 访问限制规则。 UpdateIPAccessRuleBodyIPAccessRule UpdateIPAccessRuleBodyIPAccessRule = new UpdateIPAccessRuleBodyIPAccessRule(); // IP 访问限制的类型,取值及含义如下。 // <li> allow: 白名单; </li> // <li> deny: 黑名单。 </li> UpdateIPAccessRuleBodyIPAccessRule.setType("deny"); // 是否开启当前限制,取值及含义如下。 // <li> true: 开启; </li> // <li> false: 关闭。 </li> UpdateIPAccessRuleBodyIPAccessRule.setEnable(true); // 名单中的 IP 信息。 List<String> UpdateIPAccessRuleBodyIPAccessRuleIPList = new ArrayList<>(); UpdateIPAccessRuleBodyIPAccessRuleIPList.add("1.1.1.2"); UpdateIPAccessRuleBodyIPAccessRuleIPList.add("192.168.0.1/24"); UpdateIPAccessRuleBodyIPAccessRule.setIPList(UpdateIPAccessRuleBodyIPAccessRuleIPList); body.setIPAccessRule(UpdateIPAccessRuleBodyIPAccessRule); try { UpdateIPAccessRuleRes resp = service.updateIPAccessRule(body); System.out.println(resp); } catch (Exception e) { e.printStackTrace(); } } }
您可以调用 DescribeIPAccessRule 接口查询 IP 访问限制。详细的参数说明可参见 DescribeIPAccessRule 接口文档。
接口调用示例如下所示。
package com.volcengine.live.demo; import com.volcengine.model.live.v20230101.DescribeIPAccessRuleBody; import com.volcengine.model.live.v20230101.DescribeIPAccessRuleRes; import com.volcengine.service.live.v20230101.LiveService; public class DescribeIPAccessRuleDemo { public static void main(String[] args) { // 强烈建议不要把 AccessKey ID 和 AccessKey Secret 保存到工程代码里,否则可能导致 AccessKey 泄露,威胁您账号下所有资源的安全。 // 本示例通过从环境变量中读取 AccessKey ID 和 AccessKey Secret,来实现 API 访问的身份验证。运行代码示例前,请配置环境变量 ACCESS_KEY_ID 和 ACCESS KEY_SECRET LiveService service = LiveService.getInstance(); service.setAccessKey(System.getenv("ACCESS_KEY_ID")); service.setSecretKey(System.getenv("ACCESS_KEY_SECRET")); DescribeIPAccessRuleBody body = new DescribeIPAccessRuleBody(); // 域名空间名称。 body.setVhost("push.example.com"); // 推/拉流域名。 body.setDomain("push.example.com"); try { DescribeIPAccessRuleRes resp = service.describeIPAccessRule(body); System.out.println(resp); } catch (Exception e) { e.printStackTrace(); } } }
您可以调用 DeleteIPAccessRule 接口删除 IP 访问限制。详细的参数说明可参见 DeleteIPAccessRule 接口文档。
接口调用示例如下所示。
package com.volcengine.live.demo; import com.volcengine.model.live.v20230101.DeleteIPAccessRuleBody; import com.volcengine.model.live.v20230101.DeleteIPAccessRuleRes; import com.volcengine.service.live.v20230101.LiveService; public class DeleteIPAccessRuleDemo { public static void main(String[] args) { // 强烈建议不要把 AccessKey ID 和 AccessKey Secret 保存到工程代码里,否则可能导致 AccessKey 泄露,威胁您账号下所有资源的安全。 // 本示例通过从环境变量中读取 AccessKey ID 和 AccessKey Secret,来实现 API 访问的身份验证。运行代码示例前,请配置环境变量 ACCESS_KEY_ID 和 ACCESS KEY_SECRET LiveService service = LiveService.getInstance(); service.setAccessKey(System.getenv("ACCESS_KEY_ID")); service.setSecretKey(System.getenv("ACCESS_KEY_SECRET")); DeleteIPAccessRuleBody body = new DeleteIPAccessRuleBody(); // 域名空间名称。 body.setVhost("push.example.com"); // 推/拉流域名。 body.setDomain("push.example.com"); try { DeleteIPAccessRuleRes resp = service.deleteIPAccessRule(body); System.out.println(resp); } catch (Exception e) { e.printStackTrace(); } } }