本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
通过 EMQX 控制面板或 REST 添加规则 APIs
编辑先前添加的 ACL 文件不会更新授权规则。相反,您可以使用 EMQX 控制面板或 EMQX REST 来添加或更新授权规则。 APIs
注意
添加授权规则是高级配置步骤,需要熟悉 ACL 文件格式化选项。有关使用 EMQX 创建授权规则的更多信息,请参阅 EMQX 文档中的使用 ACL 文件
注意
所提供的 EMQX 相关说明仅供参考。由于 EMQX 的文档和功能可能会随着时间的推移而发生变化,并且我们不保留其文档,因此我们建议您查阅 EMQX 的官方文档
- EMQX dashboard
-
此过程说明如何在 EMQX 控制面板上添加授权规则。
EMQX 控制面板只能从网关主机内部访问。如果您尝试从网关主机外部进行连接,则无法访问控制面板。
使用 EMQX 控制面板添加授权规则
-
确保您在网关主机内。
-
打开浏览器窗口并访问
http://localhost:18083/
。 -
登录 EMQX 控制面板。此过程假设您已将默认登录凭证更改为自己选择的登录凭证。有关初始设置的更多信息,请参阅启用用户名和密码认证。
-
选择盾牌图标,然后从下拉菜单中选择 “授权”。
-
在 “授权” 屏幕的表格中选择 “设置” 按钮。请注意,这不是整个页面的 “设置” 按钮。
-
在 ACL 文件部分,根据您的业务需求添加或更新授权规则。应在现有规则之后添加新规则。有关创建规则的更多指导,请参阅 EMQX 文档中的 “使用 ACL 文件
” 部分。
-
- EMQX REST APIs using Linux
-
使用 shell 环境和 EMQX 代理查看和添加授权规则 REST APIs
-
登录 EMQX 控制面板。此过程假设您已将默认登录凭证更改为自己选择的登录凭证。有关初始设置的更多信息,请参阅启用用户名和密码认证。
运行以下命令查看您现有的授权规则。用您自己的登录信息替换管理员密码。
curl -s -X 'POST' 'http://localhost:18083/api/v5/login' -H'accept: application/json' \ -H 'Content-Type: application/json' \ -d '{"username": "admin", "password": "
your-admin-password
" }' \ | jq -r '.token' \ | xargs -I {} curl 'http://localhost:18083/api/v5/authorization/sources/file' \ -H 'Authorization: Bearer {}' \ | jq .-
使用以下命令更新 ACL 文件:
docker exec -it emqx vi /opt/emqx/data/authz/acl.conf
按 “i” 键进入编辑模式,然后根据业务需求添加或更新规则。有关创建规则的更多指导,请参阅 EMQX 文档中的 “使用 ACL 文件
” 部分。 完成编辑后,按 “: wq”,然后按 “Enter” 或 “return” 来保存和编辑文件编辑器。
-
添加之前创建的基本授权规则。有关更多信息,请参阅 在 EMQX 中为 Amazon IoT SiteWise Edge 设置授权规则。
-
根据需要添加或更新授权规则。
-
使用以下命令调用 EMQX API 以应用更新的规则。用您自己的登录信息替换管理员密码。将
path-to-rules-file
替换为新授权规则的文件路径。UPDATED_RULES=$(cat
path-to-rules-file
) curl -s -X 'POST' 'http://localhost:18083/api/v5/login' -H'accept: application/json' \ -H 'Content-Type: application/json' \ -d '{"username": "admin", "password": "your-admin-password
" }' \ | jq -r '.token' \ | xargs -I {} curl 'http://localhost:18083/api/v5/authorization/sources/file' \ -H 'Authorization: Bearer {}' \ -X 'PUT' \ --data-raw "{\"enable\":true,\"rules\":\"$UPDATED_RULES\",\"type\":\"file\"}"
您的新授权规则应在您调用 EMQX API 后生效。
-
- EMQX REST APIs using Windows
-
要查看现有授权规则,请使用Windows PowerShell和 EMQX 代理 REST APIs
-
登录 EMQX 控制面板。此过程假设您已将默认登录凭证更改为自己选择的登录凭证。有关初始设置的更多信息,请参阅启用用户名和密码认证。
运行以下命令查看您现有的授权规则。用您自己的登录信息替换管理员密码。
try { $loginResponse = Invoke-RestMethod -Uri 'http://localhost:18083/api/v5/login' -Method Post -ContentType 'application/json' -Body '{"username": "admin", "password": "
your-admin-password
"}' $token = $loginResponse.token $viewAuthorizationRuleResponse = Invoke-RestMethod -Uri 'http://localhost:18083/api/v5/authorization/sources/file' -Method Get -Headers @{"Authorization" = "Bearer $token"} $viewAuthorizationRuleResponse | ConvertTo-Json } catch { Write-Output "Failed to fetch current authorization rules: $_" }-
使用以下命令更新 ACL 文件:
C:\greengrass\v2\work\aws.greengrass.clientdevices.mqtt.EMQX\v2\data\authz\acl.conf
根据您的业务需求添加或更新规则。有关创建规则的更多指导,请参阅 EMQX 文档中的 “使用 ACL 文件
” 部分。 -
根据需要添加或更新授权规则。
-
使用以下命令调用 EMQX API 以应用更新的规则。用您自己的登录信息替换管理员密码。
try { # Login and get token $loginResponse = Invoke-RestMethod -Uri 'http://localhost:18083/api/v5/login' -Method Post -ContentType 'application/json' -Body '{"username": "admin", "password": "
your-admin-password
"}' $token = $loginResponse.token # Read the content of the ACL file from the C volume $aclContent = Get-Content -Path "C:\greengrass\v2\work\aws.greengrass.clientdevices.mqtt.EMQX\v2\data\authz\acl.conf" | Out-String # Prepare the request body $body = @{ enable = $true rules = $aclContent type = "file" } | ConvertTo-Json # Update authorization rules $updateAuthorizationRuleResponse = Invoke-RestMethod -Uri 'http://localhost:18083/api/v5/authorization/sources/file' -Method Put -Headers @{ "Authorization" = "Bearer $token" "Content-Type" = "application/json" } -Body $body # Output the response $updateAuthorizationRuleResponse | ConvertTo-Json Write-Output "Updated authorization rules successfully!" } catch { Write-Output "Failed to update authorization rules: $_" }
-