从零开始精通Onvif之用户管理
💡 如果想阅读最新的文章,或者有技术问题需要交流和沟通,可搜索并关注微信公众号“希望睿智”。
概述
用户管理是Onvif协议的重要组成部分,它允许系统管理员通过网络接口创建、删除、修改用户账户,并分配不同的权限,以实现对设备的访问控制。在Onvif标准中,每个用户账户都关联着一组权限,这些权限决定了用户可以访问哪些服务和执行哪些操作。权限通常分为几种类型,比如:admin(管理员)、operator(操作员)、viewer(查看者)等,每种类型的权限集合由设备制造商定义。
用户管理主要通过User Management Service实现,包括GetUsers、CreateUsers、DeleteUsers、SetUser等方法,下面将分别进行介绍。
获取用户列表
GetUsers方法用于检索网络视频设备中所有用户的详细信息,包括:用户名、密码、用户级别(权限等级)、描述、有效期限等。为了安全起见,密码在某些实现中可能不可见,或进行了加密存储。
获取用户列表的请求比较简单,可以参考下面的SOAP报文。
<soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope"xmlns:wsa="http://www.w3.org/2005/08/addressing"xmlns:onv="http://www.onvif.org/ver10/device/wsdl"><soapenv:Header><!-- 安全认证信息 --></wsse:Security></soapenv:Header><soapenv:Body><onv:GetUsers/></soapenv:Body>
</soapenv:Envelope>
设备对GetUsers请求的响应通常会包含一个或多个用户的详细信息,每个用户数据通常被封装在User元素内。可以参考下面的示例报文来进行理解,其中的一些关键节点和属性描述如下。
<onv:UserList>:包含所有用户的容器元素。
<onv:User>:表示单个用户的信息条目。
<onv:Username>:用户的登录名。
<onv:UserLevel>:用户的权限等级,可能的值为"Admin"、"Operator"、"Viewer"等,具体取决于设备制造商的实现。
<soapenv:Envelope ...><soapenv:Body><onv:GetUsersResponse><onv:UserList><onv:User><onv:Username>admin</onv:Username><!-- 密码字段可能因安全原因被省略或加密 --><onv:UserLevel>Admin</onv:UserLevel><!-- 其他可能的字段,比如:UserDescription, UserPasswordExpiration等 --></onv:User><!-- 更多用户条目 --></onv:UserList></onv:GetUsersResponse></soapenv:Body>
</soapenv:Envelope>
创建用户
CreateUsers方法可以一次性创建一个或多个用户账户,每个用户账户可以配置用户名、密码、用户级别(权限等级)以及其他可能的用户属性,比如:用户描述、有效期限等。
创建用户时,客户端需要构造一个包含一个或多个User元素的SOAP请求,每个User元素定义了一个新用户的详细信息。可以参考下面的示例报文来进行理解,其中的一些关键节点和属性描述如下。
<onv:User>:表示一个待创建的用户账户的配置信息。
<onv:Username>:新用户的登录名。
<onv:Password>:用户的初始密码。
<onv:UserLevel>:用户的权限级别,具体选项由设备制造商定义。
<soapenv:Envelope ...><soapenv:Body><onv:CreateUsers><onv:User><onv:Username>NewUser1</onv:Username><onv:Password>SecureP@ssword1</onv:Password><onv:UserLevel>Operator</onv:UserLevel><!-- 可选的其他属性,比如:用户描述等 --></onv:User><!-- 如果需要同时创建多个用户,可在此添加更多的<onv:User>元素 --></onv:CreateUsers></soapenv:Body>
</soapenv:Envelope>
删除用户
DeleteUsers方法使客户端能够从支持Onvif的设备上删除一个或多个用户账户,此操作基于提供的用户标识(通常是用户Token),确保可以精确地定位和移除指定的账户。可以参考下面的示例报文来进行理解,其中的一些关键节点和属性描述如下。
<onv:UserReference>:指定要删除的用户的标识,其Token属性值是用户在设备上的唯一标识符,通常在使用GetUsers方法获取用户列表时可获得。
<soapenv:Envelope ...><soapenv:Body><onv:DeleteUsers><onv:UserReference Token="UserToken1"/><!-- 可以添加更多<onv:UserReference>元素,以删除多个用户 --></onv:DeleteUsers></soapenv:Body>
</soapenv:Envelope>
修改用户
SetUser方法用于更新一个已存在的用户账户的详细信息,可以通过它修改用户名、重置密码、变更用户权限等级,或更新用户描述等。可以参考下面的示例报文来进行理解,其中的一些关键节点和属性描述如下。
<onv:Username>:用户名,通常用于表示要修改的用户。
<onv:Password>:新的用户密码。
<onv:UserLevel>:更新后的用户权限级别。
<soapenv:Envelope ...><soapenv:Body><onv:SetUser><onv:User><onv:Username>ExistingUser</onv:Username><!-- 用户Token可能在某些实现中用于标识用户,但通常在请求中不是必需的 --><onv:Password>NewSecureP@ss</onv:Password><onv:UserLevel>Admin</onv:UserLevel><!-- 可能还包括其他可更新的用户属性 --></onv:User></onv:SetUser></soapenv:Body>
</soapenv:Envelope>
相关文章:
从零开始精通Onvif之用户管理
💡 如果想阅读最新的文章,或者有技术问题需要交流和沟通,可搜索并关注微信公众号“希望睿智”。 概述 用户管理是Onvif协议的重要组成部分,它允许系统管理员通过网络接口创建、删除、修改用户账户,并分配不同的权限&am…...
设计模式——设计模式原则
设计模式 设计模式示例代码库地址: https://gitee.com/Jasonpupil/designPatterns 设计模式原则 单一职责原则(SPS): 又称单一功能原则,面向对象五个基本原则(SOLID)之一 原则定义…...
链表中环的入口节点
链表中环的入口节点 描述 链表中环的入口节点 给一个长度为n链表,若其中包含环,请找出该链表的环的入口结点,否则,返回null。 数据范围: n≤10000, 1<结点值<10000 要求:空间复杂度 O(1)…...
STL——函数对象,谓词
一、函数对象 1.函数对象概念 概念: 重载函数调用操作符的类,其对象常称为函数对象。 函数对象使用重载的()时,行为类似函数调用,也叫仿函数。 本质: 函数对象(仿函数)是一个类,不是一个函数。 2.函数对象…...
【区分vue2和vue3下的element UI Descriptions 描述列表组件,分别详细介绍属性,事件,方法如何使用,并举例】
在 Element UI(为 Vue 2 设计)和 Element Plus(为 Vue 3 设计)中,Descriptions(描述列表)组件通常用于展示一系列的结构化信息。然而,需要明确的是,Element UI 官方库中并…...
atcoder abc 358
A welcome to AtCoder Land 题目: 思路:字符串比较 代码: #include <bits/stdc.h>using namespace std;int main() {string a, b;cin >> a >> b;if(a "AtCoder" && b "Land") cout <&…...
手写docker:你先玩转namespace再来吧
哈喽,我是子牙老师。今天咱们聊聊Linux namespace 瓦特?你没听过namespace?那有必要科普一下了:namespace是Linux内核提供的一种软件性质的资源隔离机制。容器化技术,比如docker,就是基于这样的机制实现的…...
注册安全分析报告:PingPong
前言 由于网站注册入口容易被黑客攻击,存在如下安全问题: 暴力破解密码,造成用户信息泄露短信盗刷的安全问题,影响业务及导致用户投诉带来经济损失,尤其是后付费客户,风险巨大,造成亏损无底洞 …...
mysqladmin——MySQL Server管理程序(二)
mysqladmin 是一个命令行工具,用于执行简单的 MySQL 服务器管理任务,如检查服务器的状态、创建和删除数据库、重载权限等。 1 reload 重新加载授权表(grant tables)。当修改了MySQL的权限系统(例如,修改了…...
Microsoft Edge无法启动搜索问题的解决
今天本来想清一下电脑,看到visual studio2022没怎么用了就打算卸载掉。然后看到网上有篇文章说进入C盘的ProgramFiles(x86)目录下的microsoft目录下的microsoft visual studio目录下的install目录中,双击InstallCleanup.exe&#…...
Appium Android 自动化测试 -- 元素定位
自动化测试元素定位是难点之一,编写脚本时会经常卡在元素定位这里,有时一个元素能捣鼓一天,到最后还是定位不到。 Appium 定位方式和 selenium 一脉相承,selenium 中的定位方式Appium 中都支持,而 Appium 还增加了自己…...
C#.net6.0+Vue+Ant-Design智慧医院手术麻醉系统源码 手术麻醉软件信息化管理系统 麻醉文书祥解
C#.net6.0VueAnt-Design智慧医院手术麻醉系统源码 手术麻醉软件信息化管理系统 麻醉文书祥解 医护人员通过手麻信息系统可以进行手术的预约申请、受理、安排,从门诊医生下医嘱到发起手术申请、护士长审核通过,均实现了全流程信息化管理,大大…...
6G时代,即将来临!
日前,由未来移动通信论坛、紫金山实验室主办的2024全球6G技术大会在南京召开。本次大会以“创新预见6G未来”为主题,在大会开幕式上发布了协力推进全球6G统一标准行动的倡议和紫金山科技城加速培育以6G技术引领未来产业行动计划。 在我国已开展第五代移动…...
进程、线程的区别
进程、线程的关系 开工厂生产手机,制作一条生产线,这个生产线上有很多的器件以及材料。一条生产线就是一个进程。 只有生产线是不够的,使用找五个工人来进行生产,这个工人能够利用这些材料最终一步步的将手机做出来,这…...
JWT详解、JWTUtil工具类的构建方法
一、前言 使用一些用户不友好的项目时,会发现,每一次进入网站,我们都要重新登录。 这是为什么呢? 现代多采用前后端分离的项目架构,这种架构,前后端使用不同的服务器,两个服务器上存储的信息不…...
江协科技51单片机学习- p11 静态数码管显示
前言: 本文是根据哔哩哔哩网站上“江协科技51单片机”视频的学习笔记,在这里会记录下江协科技51单片机开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了江协科技51单片机教学视频和链接中的内容。 引用: 51单片机入门教程-2…...
pandas.frame输出parquet
代码 import pandas as pd import pyarrow._parquet as pqdata pd.read_parquet("0000.parquet") total_rows len(data) half_row_num total_rows//2 print(half_row_num) first_half data.iloc[:20000] second_half data.iloc[20000:20000] # print(first_hal…...
【CT】LeetCode手撕—42. 接雨水
目录 题目1- 思路2- 实现⭐42. 接雨水——题解思路 3- ACM实现 题目 原题连接:42. 接雨水 1- 思路 模式识别:求雨水的面积 ——> 不仅是只求一个比当前元素大的元素,还要求面积 单调栈 应用场景,需要找到左边比当前元素大的…...
GPT-4o一夜被赶超,Claude 3.5一夜封王|快手可灵大模型推出图生视频功能|“纯血”鸿蒙大战苹果AI|智谱AI“钱途”黯淡|月之暗面被曝进军美国
快手可灵大模型推出图生视频功能“纯血”鸿蒙大战苹果AI,华为成败在此一举大模型低价火拼间,智谱AI“钱途”黯淡手握新“王者”,腾讯又跟渠道干上了“美食荒漠”杭州,走出一个餐饮IPOGPT-4o一夜被赶超,Anthropic推出Cl…...
C# + easyui 写的一个web项目
用C# easyui 来开发,其实就是为了开发速度,用easyui可以一天写很多页面,比一些低代码平台还快。 登陆页面 主界面 记录数统计 家庭信息采集表 新建家庭 家庭成员 低保、五保人员帮扶情况登记表 低保、五保人员帮扶情况登记表的新增和编辑 治…...
LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明
LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造,完美适配AGV和无人叉车。同时,集成以太网与语音合成技术,为各类高级系统(如MES、调度系统、库位管理、立库等)提供高效便捷的语音交互体验。 L…...
【网络】每天掌握一个Linux命令 - iftop
在Linux系统中,iftop是网络管理的得力助手,能实时监控网络流量、连接情况等,帮助排查网络异常。接下来从多方面详细介绍它。 目录 【网络】每天掌握一个Linux命令 - iftop工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景…...
使用VSCode开发Django指南
使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架,专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用,其中包含三个使用通用基本模板的页面。在此…...
Spark 之 入门讲解详细版(1)
1、简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室(Algorithms, Machines, and People Lab)开发通用内存并行计算框架。Spark在2013年6月进入Apache成为孵化项目,8个月后成为Apache顶级项目,速度之快足见过人之处&…...
Java 语言特性(面试系列1)
一、面向对象编程 1. 封装(Encapsulation) 定义:将数据(属性)和操作数据的方法绑定在一起,通过访问控制符(private、protected、public)隐藏内部实现细节。示例: public …...
VB.net复制Ntag213卡写入UID
本示例使用的发卡器:https://item.taobao.com/item.htm?ftt&id615391857885 一、读取旧Ntag卡的UID和数据 Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click轻松读卡技术支持:网站:Dim i, j As IntegerDim cardidhex, …...
CentOS下的分布式内存计算Spark环境部署
一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架,相比 MapReduce 具有以下核心优势: 内存计算:数据可常驻内存,迭代计算性能提升 10-100 倍(文档段落:3-79…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院挂号小程序
一、开发准备 环境搭建: 安装DevEco Studio 3.0或更高版本配置HarmonyOS SDK申请开发者账号 项目创建: File > New > Create Project > Application (选择"Empty Ability") 二、核心功能实现 1. 医院科室展示 /…...
2.Vue编写一个app
1.src中重要的组成 1.1main.ts // 引入createApp用于创建应用 import { createApp } from "vue"; // 引用App根组件 import App from ./App.vue;createApp(App).mount(#app)1.2 App.vue 其中要写三种标签 <template> <!--html--> </template>…...
Python实现prophet 理论及参数优化
文章目录 Prophet理论及模型参数介绍Python代码完整实现prophet 添加外部数据进行模型优化 之前初步学习prophet的时候,写过一篇简单实现,后期随着对该模型的深入研究,本次记录涉及到prophet 的公式以及参数调优,从公式可以更直观…...
