华为云用户手册

  • 请求消息头 可选的附加请求头字段,如指定的URI和HTTP方法所要求的字段。详细的公共请求消息头字段请参见表3。 表3 公共请求消息头 消息头名称 描述 是否必选 Authorization 请求消息中可带的签名信息。 类型:字符串。 默认值:无。 条件:匿名请求不需要带,其他请求必选。 有条件必选 Content-Length RFC 2616中定义的消息(不包含消息头)长度。 类型:字符串。 默认值:无。 条件:PUT操作和加载XML的操作必须带。 有条件必选 Content-Type 资源内容的类型,例如: text/plain。 类型:字符串。 默认值:无。 否 Date 请求发起端的日期和时间,例如:Wed, 27 Jun 2018 13:39:15 +0000。 类型:字符串。 默认值:无。 条件:如果是匿名请求或者消息头中带了x-obs-date字段,则可以不带该字段,其他情况下必选。 有条件必选 Host 表明主机地址。如filesystem.sfs.cn-north-4.myhuaweicloud.com。 类型:字符串。 默认值:无。 是
  • 发起请求 共有两种方式可以基于已构建好的请求消息发起请求,分别为: cURL cURL是一个命令行工具,用来执行各种URL操作和信息传输。cURL充当的是HTTP客户端,可以发送HTTP请求给服务端,并接收响应消息。cURL适用于接口调试。关于cURL详细信息请参见https://curl.haxx.se/。由于cURL无法计算签名,使用cURL时仅支持访问匿名的公共SFS资源。 编码 通过编码调用接口,组装请求消息,并发送处理请求消息。可以自行编码实现。
  • 请求参数 表2 请求Header参数 参数 是否必选 参数类型 描述 X-Auth-Token 是 String 账号的token Content-Type 是 String MIME类型 表3 请求Body参数 参数 是否必选 参数类型 描述 change_security_group 是 ChangeSecurityGroup object change_security_group对象 表4 ChangeSecurityGroup 参数 是否必选 参数类型 描述 security_group_id 是 String 需要修改的目标安全组ID。
  • 请求示例 { "rules" : [ { "ip_cidr" : "192.168.0.0/16", "rw_type" : "rw", "user_type" : "no_root_squash" }, { "ip_cidr" : "192.32.0.0/16", "rw_type" : "rw", "user_type" : "no_root_squash" } ] }
  • 请求参数 表2 请求Header参数 参数 是否必选 参数类型 描述 X-Auth-Token 是 String 账号的token Content-Type 是 String MIME类型 表3 请求Body参数 参数 是否必选 参数类型 描述 rules 是 Array of OnePermRuleRequestInfo objects 权限信息,一次最多允许添加5条规则 表4 OnePermRuleRequestInfo 参数 是否必选 参数类型 描述 ip_cidr 否 String 授权对象的IP地址或网段,设置后不支持修改 rw_type 否 String 授权对象的读写权限 rw:默认选项,以读写的方式共享 ro:以只读的方式共享 none: 没有权限 user_type 否 String 授权对象的系统用户对文件系统的访问权限。取值如下: no_root_squash:默认选项。客户端使用包括root用户在内的任何用户,NFS服务器都保持客户端使用的用户,不做映射。 root_squash:客户端使用的是root用户时,映射到NFS服务器的用户为NFS的匿名用户(nfsnobody)。客户端使用非root用户时,NFS服务器保持客户端使用的用户,不做映射。 all_squash:所有访问NFS服务器的客户端的用户都映射为匿名用户。
  • 响应参数 状态码: 200 表5 响应Body参数 参数 参数类型 描述 rules Array of OnePermRuleResponseInfo objects 权限规格信息 表6 OnePermRuleResponseInfo 参数 参数类型 描述 id String 权限规格的id ip_cidr String 授权对象的IP地址或网段 rw_type String 授权对象的读写权限 rw:默认选项,以读写的方式共享 ro:以只读的方式共享 none: 没有权限 user_type String 授权对象的系统用户对文件系统的访问权限。取值如下: no_root_squash:客户端使用的是root用户时,映射到NFS服务器的用户依然为root用户。 root_squash:客户端使用的是root用户时,映射到NFS服务器的用户为NFS的匿名用户(nfsnobody)。 all_squash:默认选项。所有访问NFS服务器的客户端的用户都映射为匿名用户。' 状态码: 400 表7 响应Body参数 参数 参数类型 描述 errCode String 错误码 最小长度:8 最大长度:36 errMsg String 错误描述 最小长度:2 最大长度:512 状态码: 500 表8 响应Body参数 参数 参数类型 描述 errCode String 错误码 最小长度:8 最大长度:36 errMsg String 错误描述 最小长度:2 最大长度:512
  • 响应示例 状态码: 200 创建成功 { "rules" : [ { "id" : "1131ed520xxxxxxebedb6e57xxxxxxxx", "ip_cidr" : "192.32.0.0/16", "rw_type" : "rw", "user_type" : "no_root_squash" }, { "id" : "1131ed520xxxxxxebedb6e57xxxxxxxx", "ip_cidr" : "192.32.0.1", "rw_type" : "rw", "user_type" : "no_root_squash" } ] } 状态码: 400 错误响应 { "errCode" : "SFS.TURBO.0001", "errMsg" : "Rules not allowed empty" } 状态码: 500 错误响应 { "errCode" : "SFS.TURBO.0005", "errMsg" : "Internal server error" }
  • 请求示例 文件系统ID为"77ba6f4b-6365-4895-8dda-bc7142af4dde",规则rule_id为"11abef677ac40f46644d1d5cfc2424a4", 删除该权限规则 DELETE HTTPS://{endpoint}/v1/{project_id}/sfs-turbo/shares/77ba6f4b-6365-4895-8dda-bc7142af4dde/fs/perm-rules/11abef677ac40f46644d1d5cfc2424a4
  • 响应参数 状态码: 400 表3 响应Body参数 参数 参数类型 描述 errCode String 错误码 最小长度:8 最大长度:36 errMsg String 错误描述 最小长度:2 最大长度:512 状态码: 500 表4 响应Body参数 参数 参数类型 描述 errCode String 错误码 最小长度:8 最大长度:36 errMsg String 错误描述 最小长度:2 最大长度:512
  • 请求示例 SFS Turbo上一代文件系统规格类型: 创建一个名称为“sfs-turbo-test”的SFS Turbo标准型文件系统,共享协议为NFS,容量为500GB,文件系统所在的可用区编码是cn-north-4a。安全组ID为“8c4ebbd0-6edf-4aae-8353-xxx”,子网的网络ID为“b8884abe-f47b-4917-9f6c-xxx”,VPC ID为“d651ea2b-2b20-4c6d-8bbf-xxx”。 POST HTTPS://{endpoint}/v1/{project_id}/sfs-turbo/shares { "share" : { "name" : "sfs-turbo-test", "availability_zone" : "cn-north-4a", "security_group_id" : "8c4ebbd0-6edf-4aae-8353-xxx", "share_proto" : "NFS", "share_type" : "STANDARD", "size" : 500, "subnet_id" : "b8884abe-f47b-4917-9f6c-xxx", "vpc_id" : "d651ea2b-2b20-4c6d-8bbf-xxx" } } SFS Turbo上一代文件系统规格类型+专属场景: 创建一个名称为“sfs-turbo-dedicated-test”的SFS Turbo标准型文件系统,共享协议为NFS,容量为500GB,文件系统所在的可用区编码是cn-north-4a。指定专属的存储池id为“198f0704-xxx-4d85-xxx-c25caa4d3264”,专属的ecs规格为"c6.xlarge.2", 安全组ID为“8c4ebbd0-6edf-4aae-8353-xxx”,子网的网络ID为“b8884abe-f47b-4917-9f6c-xxx”,VPC ID为“d651ea2b-2b20-4c6d-8bbf-xxx”。 POST HTTPS://{endpoint}/v1/{project_id}/sfs-turbo/shares { "share" : { "name" : "sfs-turbo-dedicated-test", "availability_zone" : "cn-north-4a", "security_group_id" : "8c4ebbd0-6edf-4aae-8353-xxx", "share_proto" : "NFS", "share_type" : "STANDARD", "size" : 500, "subnet_id" : "b8884abe-f47b-4917-9f6c-xxx", "vpc_id" : "d651ea2b-2b20-4c6d-8bbf-xxx", "metadata" : { "dedicated_flavor" : "c6.xlarge.2", "dedicated_storage_id" : "198f0704-xxx-4d85-xxx-c25caa4d3264" } } } 125MB/s/TiB: 创建一个名称为“sfs-turbo-test”的SFS Turbo 125MB/s/TiB 文件系统,共享协议为NFS,容量为3686GB,规格类型为125MB/s/TiB, 文件系统所在的可用区编码是cn-north-4a。安全组ID为“8c4ebbd0-6edf-4aae-8353-xxx”,子网的网络ID为“b8884abe-f47b-4917-9f6c-xxx”,VPC ID为“d651ea2b-2b20-4c6d-8bbf-xxx”。 POST HTTPS://{endpoint}/v1/{project_id}/sfs-turbo/shares { "share" : { "name" : "sfs-turbo-test", "availability_zone" : "cn-north-4a", "security_group_id" : "8c4ebbd0-6edf-4aae-8353-xxx", "share_proto" : "NFS", "share_type" : "STANDARD", "size" : 3686, "subnet_id" : "b8884abe-f47b-4917-9f6c-xxx", "vpc_id" : "d651ea2b-2b20-4c6d-8bbf-xxx", "metadata" : { "expand_type" : "hpc", "hpc_bw" : "125M" } } }
  • 请求参数 表2 请求Header参数 参数 是否必选 参数类型 描述 X-Auth-Token 是 String 账号的token Content-Type 是 String MIME类型 表3 请求Body参数 参数 是否必选 参数类型 描述 change_name 是 ShareName object 需要修改的SFS Turbo文件系统 表4 ShareName 参数 是否必选 参数类型 描述 name 是 String 需要修改的SFS Turbo文件系统的名字
  • 接口约束 在2023年8月1号之后创建的文件系统支持该API操作。该接口仅适用于SFS Turbo上一代文件系统规格类型(标准型、标准型-增强版、性能型、性能型-增强版)。20MB/s/TiB、40MB/s/TiB、125MB/s/TiB、250MB/s/TiB、500MB/s/TiB、1000MB/s/TiB、HPC缓存型的SFS Turbo文件系统,请使用“创建文件系统异步任务”接口。该接口并发请求数过大可能会影响文件系统性能,建议同时提交的查询请求不要超过 4 个。查询超大目录耗时较久,请不要重复提交。
  • 响应示例 状态码: 200 目录资源使用情况 { "dir_usage" : { "used_capacity" : 1024000 } } 状态码: 400 错误响应 { "errCode" : "SFS.TURBO.0102", "errMsg" : "Path is not directory" } 状态码: 500 错误响应 { "errCode" : "SFS.TURBO.0005", "errMsg" : "Internal server error" }
  • 响应参数 状态码: 200 表4 响应Header参数 参数 参数类型 描述 X-request-id String 请求ID 表5 响应Body参数 参数 参数类型 描述 dir_usage FsDirUasge object 消息描述 表6 FsDirUasge 参数 参数类型 描述 used_capacity Long 占用容量,单位:byte 最小值:0 状态码: 400 表7 响应Header参数 参数 参数类型 描述 X-request-id String 请求ID 表8 响应Body参数 参数 参数类型 描述 errCode String 错误码 最小长度:8 最大长度:36 errMsg String 错误描述 最小长度:2 最大长度:512 状态码: 500 表9 响应Header参数 参数 参数类型 描述 X-request-id String 请求ID 表10 响应Body参数 参数 参数类型 描述 errCode String 错误码 最小长度:8 最大长度:36 errMsg String 错误描述 最小长度:2 最大长度:512
  • 请求示例 文件系统ID为"77ba6f4b-6365-4895-8dda-bc7142af4dde",后端target_id为"11abef677ac40f46644d1d5cfc2424a4",删除后端 DELETE HTTPS://{endpoint}/v1/{project_id}/sfs-turbo/shares/77ba6f4b-6365-4895-8dda-bc7142af4dde/targets/11abef677ac40f46644d1d5cfc2424a4
  • URI DELETE /v1/{project_id}/sfs-turbo/shares/{share_id}/targets/{target_id} 表1 路径参数 参数 是否必选 参数类型 描述 project_id 是 String 项目id share_id 是 String 文件系统id target_id 是 String 绑定关系id 表2 Query参数 参数 是否必选 参数类型 描述 delete_data_in_file_system 否 Boolean 删除后端存储时是否同时删除文件系统内的联动目录及其数据文件,默认为 false。数据删除后无法恢复,请谨慎操作。
  • 响应参数 状态码: 202 表4 响应Header参数 参数 参数类型 描述 X-request-id String 请求ID 表5 响应Body参数 参数 参数类型 描述 target_id String 绑定关系id delete_data_in_file_system Boolean 删除后端存储时是否同时删除文件系统内的联动目录及其数据文件 lifecycle String 绑定状态。只支持DELETING和FAILED 枚举值: DELETING AVAILABLE MISCONFIGURED CREATING FAILED 状态码: 404 表6 响应Body参数 参数 参数类型 描述 errCode String 错误码 最小长度:8 最大长度:36 errMsg String 错误描述 最小长度:2 最大长度:512 状态码: 500 表7 响应Body参数 参数 参数类型 描述 errCode String 错误码 最小长度:8 最大长度:36 errMsg String 错误描述 最小长度:2 最大长度:512
  • 响应示例 状态码: 202 任务下发成功 { "target_id" : "00000334-xxxx-402d-a5d4-bxxxxx87b939", "delete_data_in_file_system" : false, "life_cycle" : "DELETING" } 状态码: 404 错误响应 { "errCode" : "SFS.TURBO.0126", "errMsg" : "target not found, not bound yet" } 状态码: 500 错误响应 { "errCode" : "SFS.TURBO.0005", "errMsg" : "internal server error" }
  • 响应参数 状态码: 200 表4 响应Body参数 参数 参数类型 描述 jobId String ldap异步任务的id。可通过查询job的状态详情接口查询job的执行状态。 状态码: 400 表5 响应Body参数 参数 参数类型 描述 errCode String 错误码 最小长度:8 最大长度:36 errMsg String 错误描述 最小长度:2 最大长度:512 状态码: 500 表6 响应Body参数 参数 参数类型 描述 errCode String 错误码 最小长度:8 最大长度:36 errMsg String 错误描述 最小长度:2 最大长度:512
  • 功能介绍 修改ldap配置。LDAP(Lightweight Directory Access Protocol),中文名称轻量级目录访问协议,是对目录服务器(Directory Server)进行访问、控制的一种标准协议。LDAP服务器可以集中式地管理用户和群组的归属关系,通过绑定LDAP服务器,当一个用户访问您的文件系统的文件时,SFS Turbo将会访问您的LDAP服务器以进行用户身份验证,并且获取用户和群组的归属关系,从而进行Linux标准的文件UGO权限的检查。要使用此功能,首先您需要搭建好LDAP服务器(当前SFS Turbo仅支持LDAP v3协议),常见提供LDAP协议访问的目录服务器实现有OpenLdap(Linux),Active Directory(Windows)等,不同目录服务器的实现细节有所差别,绑定时需要指定对应的Schema(Schema配置错误将会导致SFS Turbo无法正确获取用户以及群组信息,可能导致无权限访问文件系统内文件),当前SFS Turbo支持的Schema有: RFC2307(Openldap通常选择此Schema) MS-AD-BIS(Active Directory通常选择此Schema,支持RFC2307bis,支持嵌套的群组) SFS Turbo还支持配置主备LDAP服务器,当您的一台LDAP服务器故障无法访问后,SFS Turbo将会自动切换到备LDAP服务器访问,以免影响您的业务。同时,若您还选择将allow_local_user配置为Yes(默认为No),那么当您的LDAP服务器全部故障无法访问时,SFS Turbo将会使用您的本地用户以及群组信息,而非LDAP服务器中配置的信息进行身份验证和UGO权限检查,以最大程度减少故障影响面。
  • 响应示例 状态码: 200 更新中 { "jobId" : "72362dxxxxa04d419dbd5e6d9fe5xxxx" } 状态码: 400 错误响应 { "errCode" : "SFS.TURBO.0001", "errMsg" : "Invalid rule id" } 状态码: 500 错误响应 { "errCode" : "SFS.TURBO.0005", "errMsg" : "Internal server error" }
  • 请求参数 表2 请求Header参数 参数 是否必选 参数类型 描述 X-Auth-Token 是 String 账号的token Content-Type 是 String MIME类型 表3 请求Body参数 参数 是否必选 参数类型 描述 url 否 String ldap服务器的url,固定格式为 ldap://{ip_address}:{port_number} 或 ldaps://{ip_address}:{port_number},例如ldap://192.168.1.1:60000 base_dn 否 String 数据库中的域 user_dn 否 String 用户区别名 password 否 String ldap认证密码 vpc_id 否 String vpc的id filter_condition 否 String 过滤条件。保留字段,暂不支持 backup_url 否 String ldap备节点的url,固定格式为 ldap://{ip_address}:{port_number} 或 ldaps://{ip_address}:{port_number},例如ldap://192.168.1.2:60000 schema 否 String ldap的schema,不填写则默认为RFC2307 search_timeout 否 Integer ldap搜索的超时时间,单位为秒。不填写则默认为3秒 allow_local_user 否 String 访问ldap服务器失败后是否允许使用本地用户鉴权 枚举值: Yes No
  • 请求示例 { "url" : "ldap://192.168.1.1:60000", "base_dn" : "dc=example,dc=com", "user_dn" : "cn=admin,dc=example,dc=com", "password" : "pwdxxxxxx", "vpc_id" : "26f6b565-xxxx-XXXX-xxxx-03f0bd975433", "backup_url" : "ldap://192.168.1.2:60000", "schema" : "RFC2307", "search_timeout" : 10, "allow_local_user" : "Yes" }
  • 响应示例 状态码: 200 响应Body参数 { "job_id" : "26f6b565-xxxx-XXXX-xxxx-03f0bd975433", "status" : "success", "job_type" : "bind_ldap", "begin_time" : "2023-07-26 09:33:58", "end_time" : "2023-07-26 09:33:58" } 状态码: 400 客户端错误 { "errCode" : "SFS.TURBO.0001", "errMsg" : "parameter error" } 状态码: 404 资源不存在 { "errCode" : "SFS.TURBO.0001", "errMsg" : "parameter error" } 状态码: 500 内部错误 { "errCode" : "SFS.TURBO.0005", "errMsg" : "Internal server error" }
  • 响应参数 状态码: 200 表3 响应Header参数 参数 参数类型 描述 X-request-id String 请求ID 表4 响应Body参数 参数 参数类型 描述 status String job的状态。success:成功。running:运行中。failed:失败。waiting:等待执行 枚举值: success failed waiting running job_id String job的ID。 job_type String job的类型。 begin_time String job开始时间。UTC时间,格式:'2016-01-02 15:04:05' end_time String job结束时间。UTC时间,格式:'2016-01-02 15:04:05' error_code String job执行失败时的错误码 fail_reason String job执行失败时的错误原因 sub_jobs Array of GetSubJobDetail objects 子任务列表 表5 GetSubJobDetail 参数 参数类型 描述 status String 子job的状态。success:成功。running:运行中。failed:失败。waiting:等待执行。 job_id String job的ID。 job_type String 子job的类型。 begin_time String job开始时间。UTC时间,格式:'2016-01-02 15:04:05' end_time String job结束时间。UTC时间,格式:'2016-01-02 15:04:05' error_code String job执行失败时的错误码 fail_reason String job执行失败时的错误原因 状态码: 400 表6 响应Body参数 参数 参数类型 描述 errCode String 错误码 最小长度:8 最大长度:36 errMsg String 错误描述 最小长度:2 最大长度:512 状态码: 404 表7 响应Body参数 参数 参数类型 描述 errCode String 错误码 最小长度:8 最大长度:36 errMsg String 错误描述 最小长度:2 最大长度:512 状态码: 500 表8 响应Body参数 参数 参数类型 描述 errCode String 错误码 最小长度:8 最大长度:36 errMsg String 错误描述 最小长度:2 最大长度:512
  • 请求参数 表2 请求Header参数 参数 是否必选 参数类型 描述 X-Auth-Token 是 String 账号的 token Content-Type 是 String MIME类型 表3 请求Body参数 参数 是否必选 参数类型 描述 action 是 String 更新文件系统的操作类型。当前仅支持取值 config_gc_time gc_time 是 Integer 文件系统冷数据淘汰时间,单位为小时,取值范围 [1, 100000000]。系统默认为 60 小时
  • 响应参数 状态码: 200 表4 响应Header参数 参数 参数类型 描述 X-request-id String 请求ID 表5 响应Body参数 参数 参数类型 描述 gc_time Integer 文件系统冷数据淘汰时间 状态码: 404 表6 响应Body参数 参数 参数类型 描述 errCode String 错误码 最小长度:8 最大长度:36 errMsg String 错误描述 最小长度:2 最大长度:512 状态码: 500 表7 响应Body参数 参数 参数类型 描述 errCode String 错误码 最小长度:8 最大长度:36 errMsg String 错误描述 最小长度:2 最大长度:512
  • 响应示例 状态码: 200 任务下发成功 { "gc_time" : 10 } 状态码: 404 错误响应 { "errCode" : "SFS.TURBO.0002", "errMsg" : "share not exist" } 状态码: 500 错误响应 { "errCode" : "SFS.TURBO.0005", "errMsg" : "Internal server error" }
  • 响应参数 状态码: 200 表3 响应Body参数 参数 参数类型 描述 tags Array of Tag objects tag标签的列表 表4 Tag 参数 参数类型 描述 key String 标签的键。 最大长度128个字符。 key不能为空。 最小长度:1 最大长度:128 values Array of strings 值列表。每个值最大长度255个字符,如果values为空列表,则表示匹配任意值value。value之间为或的关系。 最小长度:0 最大长度:255
  • 用户签名验证 SFS通过AK/SK对请求进行签名,在向SFS发送请求时,客户端发送的每个消息头需要包含由SK、请求时间、请求类型等信息生成的签名信息。 AK(Access Key ID):访问密钥ID。与私有访问密钥关联的唯一标识符;访问密钥ID和私有访问密钥一起使用,对请求进行加密签名。格式例如:HCY8BGCN1YM5ZWYOK1MH SK(Secret Access Key):与访问密钥ID结合使用的密钥,对请求进行加密签名,可标识发送方,并防止请求被修改。格式例如:9zYwf1uabSQY0JTnFqbUqG7vcfqYBaTdXde2GUcq 用户可以在 IAM 服务中获取AK和SK,获取的方法请参见获取访问密钥(AK/SK)。 SFS根据应用场景,提供了Header中携带签名的签名计算方式。 以Header中携带签名为例,用户签名验证流程如表1所示。Header中携带签名方法的具体参数说明及代码示例,请参见Header中携带签名。 表1 SFS签名计算和验证步骤 步骤 示例 签名计算 1. 构造HTTP消息 PUT /HTTP/1.1 Host: filesystem.sfs.cn-north-4.myhuaweicloud.com Date: Tue, 04 Jun 2019 06:54:59 GMT Content-Type: text/plain Content-Length: 5913 2. 按照签名规则计算StringToSign StringToSign = HTTP-Verb + "\n" + Content-MD5 + "\n" + Content-Type + "\n" + Date + "\n" + CanonicalizedHeaders + CanonicalizedResource 3. 准备AK和SK AK: ****** SK: ****** 4. 计算签名Signature Signature = Base64( HMAC-SHA1( SecretAccessKeyID, UTF-8-Encoding-Of( StringToSign ) ) ) 5. 添加签名头域发送到SFS服务 PUT /object HTTP/1.1 Host: filesystem.sfs.cn-north-4.myhuaweicloud.com Date: Tue, 04 Jun 2019 06:54:59 GMT Content-Type: text/plain Content-Length: 5913 Authorization: OBS AccessKeyID:Signature 签名验证 6. 接收HTTP消息 PUT / HTTP/1.1 Host: filesystem.sfs.cn-north-4.myhuaweicloud.com Date: Tue, 04 Jun 2019 06:54:59 GMT Content-Type: text/plain Content-Length: 5913 Authorization: OBS AccessKeyID:Signature 7. 根据请求中的AK获取SK 从头域Authorization中取出AK,去IAM取回用户的SK 8. 按照签名规则计算StringToSign StringToSign = HTTP-Verb + "\n" + Content-MD5 + "\n" + Content-Type + "\n" + Date + "\n" + CanonicalizedHeaders + CanonicalizedResource 9. 计算签名Signature Signature = Base64( HMAC-SHA1( SecretAccessKeyID, UTF-8-Encoding-Of( StringToSign ) ) ) 10. 验证签名 验证头域Authorization中的Signature与服务端计算的Signature是否相等 相等:签名验证通过 不相等:签名验证失败 父主题: 认证鉴权
共100000条