Lorawan-stack: 新(管理员)用户在控制台中没有权限

创建于 2019-08-14  ·  6评论  ·  资料来源: TheThingsNetwork/lorawan-stack

概括

在 CLI 中创建管理员用户时,可能会发生此用户在控制台中没有足够的权限来创建或编辑网关和应用程序。 在另一种情况下,新的普通用户在控制台中也无权执行任何操作。 这可能是一个错误,或者只是缺少有关如何正确创建用户的文档。

重现步骤

我不完全确定。 这里有两种情况可能与同一个原因有关。 在第一种情况下,我在一台不是由我设置的机器上操作,我对该过程的信息有限。

案例一:外栈; 设置为版本 3.0.0 并在使用控制台之前升级到 3.1.0。

  1. 在 cli 开始之后设置 ttn 3.0.0
  2. 更新到 3.1.0
  3. 设置控制台客户端(并可能搞砸*)
  4. 创建--admin用户 (
    5 .登录到控制台并尝试创建网关。

*升级时发生的情况是控制台创建过程使用了错误的 uris,因此我们删除了数据库中的控制台客户端并重新使用了is-db命令。 也许我们在这里搞砸了。

案例 2 :在我的设置中:

  1. 按照入门设置 ttn
  2. 使用入门中的管理员用户创建普通用户ttn-lw-cli users create norman --name norman --primary-email-address norman@localhost
  3. 尝试创建网关或应用程序

你现在看到了什么?

在任何一种情况下,控制台都会在输入详细信息并点击Create GatewayCreate Application按钮后以Insufficient rights for user 'myuser'响应。

在浏览器控制台中没有什么异常。 网络选项卡显示来自 ttn 的 403 Forbidden 响应。

当使用管理员用户通过 CLI 创建应用程序并将其分配给相关用户时,用户可能会看到应用程序/网关,但单击它会导致 403 Forbidden。

你想看到什么?

无论如何,我希望新创建的用户至少能够为自己创建网关和应用程序,并且能够在添加为协作者时打开他们的视图。

我还希望有更多关于用户创建过程以及如何管理用户权限的文档。

环境

The Things Network Stack for LoRaWAN: ttn-lw-stack
Version:             3.1.0
Go version:          go1.12.7
OS/Arch:             linux/amd64

案例1配置:
堆栈配置.txt

你建议如何实施?

不幸的是,我不知道问题出在哪里。

你可以自己做这个并提交一个拉请求吗?

我可能无法实施修复,但我可以提供用户创建和权限管理的文档。

最有用的评论

如果用户是由管理员创建的,则state (和admin )字段将按字面意思从请求中获取。 这按预期工作,因为我们不知道管理员是否明确将state设置为REQUESTED或只是将其忽略。

如果用户不是由管理员创建的,我们假设他们的目标是获得批准,如果没有(管理员批准要求)阻止,则自动执行此操作。 他们永远无法从一开始就让自己成为管理员。

Web UI 中的“由管理员创建用户”功能将更清楚地表明需要设置state字段,但我认为使用比REQUESTED更合理的默认值是个好主意users create APPROVEDstate标志。

所有6条评论

@w4tsn你的配置是什么? 您是否需要管理员批准新用户?

你能显示$ ttn-lw-cli user get myuser --state的输出吗?

情况1:

{
  "ids": {
    "user_id": "someadmin"
  },
  "created_at": "2019-08-14T07:20:10.542Z",
  "updated_at": "2019-08-14T07:20:10.542Z",
  "password_updated_at": "0001-01-01T00:00:00Z"
}

案例二:

{
  "ids": {
    "user_id": "myuser"
  },
  "created_at": "2019-08-06T10:30:34.091Z",
  "updated_at": "2019-08-06T10:30:34.091Z",
  "password_updated_at": "0001-01-01T00:00:00Z"
}

我将使用我的案例 1 配置更新 env 部分。 在案例 2 中,我也没有明确设置管理员批准。 配置状态需要管理员批准 = false

我可以确认该问题可以在 3.1.0 上重现。
一个可能的修复方法是使用以下手动激活命令: ttn-lw-cli users set norman --state=STATE_APPROVED 。 我会调查为什么会很快发生这种情况。

此外,在上述输出中,由于未提及状态,因此它为零,这意味着STATE_REQUESTED ,因此实际上并未激活用户。

也找到了原因:
https://github.com/TheThingsNetwork/lorawan-stack/blob/55381c15f6902508ea34cd40441ad2bd3146ac37/pkg/identityserver/user_registry.go#L149 -L156
管理员创建的用户不遵守管理员批准设置,并且始终具有状态默认值 ( STATE_REQUESTED )。 这是有意的@htdvisser吗?

如果用户是由管理员创建的,则state (和admin )字段将按字面意思从请求中获取。 这按预期工作,因为我们不知道管理员是否明确将state设置为REQUESTED或只是将其忽略。

如果用户不是由管理员创建的,我们假设他们的目标是获得批准,如果没有(管理员批准要求)阻止,则自动执行此操作。 他们永远无法从一开始就让自己成为管理员。

Web UI 中的“由管理员创建用户”功能将更清楚地表明需要设置state字段,但我认为使用比REQUESTED更合理的默认值是个好主意users create APPROVEDstate标志。

使用#1190,其中包括我在之前的评论中描述的功能,我认为这个问题现在可以关闭了。

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

rvolosatovs picture rvolosatovs  ·  9评论

MatteMoveSRL picture MatteMoveSRL  ·  7评论

ZeroSum24 picture ZeroSum24  ·  3评论

htdvisser picture htdvisser  ·  4评论

johanstokking picture johanstokking  ·  6评论