openid隐式流授权用户无法从syncgateway沙发床中拉出

问题描述

大家好,我在本文档https://docs.couchbase.com/sync-gateway/current/authentication.html#implicit-flow中使用openid隐式流程来授权我的用户,并且syncgateway会给我这个答复

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

“ 1”在“!”前面意味着什么?以及如何访问我不希望我的用户限制从公共渠道使用的其他渠道。我应该向jwt令牌或同步配置文件添加什么? 我可以将其推入存储桶,但也无法通过此sessionId从存储桶中提取数据

解决方法

1代表映射到公共频道的序列(即添加频道时的序列值)。同步网关启动时,会自动创建公共频道。在您的情况下,OpenID Connect身份验证成功,但是用户只能访问公共频道。您可以通过管理REST API,配置文件或在更新文档时通过“同步功能”来授予用户/角色对一组特定通道或*通道的访问权限。

要通过Admin REST API授予用户访问一组特定频道的权限,请从运行Sync Gateway的终端发出以下命令:

http --verbose PUT http://localhost:4985/default/_user/alice admin_channels:='["channel-1","channel-2"]'

这将授予用户alicechannel-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

注意:您需要安装httpie才能从中运行http命令 终奌站。如果您还没有使用Mac OS X,请发出 brew install httpie

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