openid 隐式流授权用户无法从同步网关 couchbase 中提取

openid implicit flow authorized user cant pull from syncgateway couchbase

大家好,我在本文档中使用 openid implisit 流程 https://docs.couchbase.com/sync-gateway/current/authentication.html#implicit-flow 来授权我的用户和 syncgateway 得到我这个响应

 {
    "authentication_handlers": [
        "default",
        "cookie"
    ],
    "ok": true,
    "userCtx": {
        "channels": {
            "!": 1
        },
        "name": "staging-dialysiscloud.icdgroup.org%2Fids_00000000-0000-0000-0000-100000000000"
    }
}

“!”前面的“1”是什么意思?以及如何访问我不希望我的用户限制使用来自 public 频道的其他频道。我应该向 jwt 令牌或同步配置文件添加什么? 我可以推送到我的存储桶,但我也无法通过此 sessionId

从中提取数据

1表示映射到public通道的序列(即添加通道时的序列值)。 public 通道在 Sync Gateway 启动时自动创建。在您的案例中,OpenID Connect 身份验证成功,但用户只能访问 public 频道。您可以通过管理员 REST API、配置文件或更新文档时通过同步功能授予 user/role 对一组特定频道或 * 频道的访问权限。

要通过 Admin REST API 授予用户访问一组特定频道的权限,请从您的同步网关 运行:

的终端发出类似下面的命令
http --verbose PUT http://localhost:4985/default/_user/alice admin_channels:='["channel-1", "channel-2"]'

这将授予用户 alice 访问 channel-1channel-2

如果您希望用户访问数据库中的所有文档,您可以授予用户访问*频道的权限。例如,下面的命令将授予用户 bob 访问 * 频道的权限,他将能够访问数据库中的所有文档。

http --verbose PUT http://localhost:4985/default/_user/bob admin_channels:='["*"]'

您可能想用您的用户名更改用户名 bob,即 staging-dialysiscloud.icdgroup.org%2Fids_00000000-0000-0000-0000-100000000000

Note: You need to have httpie installed to run http commands from terminal. If you don’t have it already and you're using Mac OS X, just issue brew install httpie.

如果您想了解有关访问控制和同步网关通道的更多信息,here 是一个很好的文档。