【问题标题】:CosmosDB grant permission to multiple resources?CosmosDB 授予对多个资源的权限?
【发布时间】:2017-06-08 23:33:11
【问题描述】:

我试图了解如何使用 DocumentDB 授予对多个资源的权限。我不清楚我将如何去做,或者目前是否可行。

https://docs.microsoft.com/en-us/azure/cosmos-db/mobile-apps-with-xamarin

他们在这里的文档中声明

如果您希望两个用户可以访问同一个待办事项列表,您可以在 Resource Token Broker 中为访问令牌添加额外的权限。

资源令牌代理链接如下:

https://github.com/Azure/azure-documentdb-dotnet/blob/master/samples/xamarin/UserItems/ResourceTokenBroker/ResourceTokenBroker/Controllers/ResourceTokenController.cs#L153-L159

我认为他们的具体意思是这样的:

using Microsoft.Azure.Documents;

Permission p = new Permission
{
    PermissionMode =  PermissionMode.All,
    ResourceLink = collection.SelfLink,
    ResourcePartitionKey = new PartitionKey(userId),
    Id = permissionId //needs to be unique for a given user
};

但是,这个 sn-p 只支持一个分区键。这就是我想要做的,授予集合中多个分区键的权限。

这是我假设创建令牌的地方:

permission = await Client.CreatePermissionAsync(UriFactory.CreateUserUri(databaseId, userId), p);

但同样,它看起来像是一个单一的许可。这意味着您必须创建 N 个权限,并且每次访问这些资源之一时,您都需要从资源代理请求令牌?也就是说,如果我授予 5 个资源的权限,当我的客户去 Resource Broker 时,我需要返回 5 个令牌?

有没有办法说:这个资源令牌授予PermissionMode.All对所有这些资源的权限?

【问题讨论】:

标签: azure permissions azure-cosmosdb


【解决方案1】:

如果我授予 5 个资源的权限,当我的客户去 Resource Broker 时,我需要返回 5 个令牌?

DocumentClient class 有四个构造函数,其中两个构造函数支持提供多个资源密钥,从而允许使用生成的 DocumentClient 对象对多个资源的操作进行身份验证。您可以在资源令牌代理 API 中为用户授予对多个资源的权限,并将权限对象列表(而不是单个资源令牌)返回给客户端应用程序。

FeedResponse<Permission> permFeed = await client.ReadPermissionFeedAsync(UriFactory.CreateUserUri("dbid", " userId")); 

List<Permission> permList = permFeed.ToList();

客户端应用程序可以初始化 DocumentClient 类的一个实例,并在客户端应用程序获取它后传递permList

var client = new DocumentClient(new Uri(EndpointUri), permList);

【讨论】:

  • 我发现这篇文章延迟了 4 年,但我相信这无法实现。 Permissions 类包含 Token 只读属性,因此无法从 Json 对象正确反序列化。 Token 属性将始终为空。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-01-31
  • 2017-07-06
  • 2019-09-17
  • 2021-03-21
  • 2018-04-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多