首页 文章

CosmosDB授予多个资源的权限?

提问于
浏览
0

我试图了解如何使用DocumentDB,我可以授予多个资源的权限 . 我不清楚我将如何解决这个问题,或者目前是否可行 .

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

在他们的文档中,他们说

如果您希望两个用户可以访问相同的待办事项列表,则可以在资源令牌代理中为访问令牌添加其他权限 .

资源令牌代理链接如下:

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
};

但是,此代码段仅支持一个分区键 . 这就是我想要做的,为集合中的多个分区键授予权限 .

这是我假设创建令牌的调用:

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

但同样,它看起来像一个单一的许可 . 这意味着您必须创建N个权限,并且每次访问其中一个资源时,您需要从资源代理请求令牌?换句话说,如果我授予5个资源的权限,当我的客户端转到资源代理时,我需要返回5个令牌?

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

1 回答

  • 0

    如果我授予5个资源的权限,当我的客户转到资源代理时,我需要返回5个令牌?

    DocumentClient class有四个构造函数,其中两个构造函数支持提供多个资源键,允许生成的DocumentClient对象用于对多个资源的操作进行身份验证 . 您可以在Resource Token Broker 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);
    

相关问题