【问题标题】:C# Azure DocumentDB Authorization Key PermissionsC# Azure DocumentDB 授权密钥权限
【发布时间】:2015-01-22 00:22:05
【问题描述】:

我想知道是否有办法确定连接到 Azure DocumentDB 时使用的授权密钥级别。

主要是为了防止在提供只读授权密钥时尝试创建文档或修改文档。

类似

static async void LogIn(string url, string authKey)
{
    DocumentClient client = new DocumentClient(new Uri(url), authKey);
    if(?clientpermissions?== PermissionMode.Read)
    { Console.WriteLine("You are in read-only mode."); }
}

我看到用户类有一个可以访问的权限对象,但是当纯粹使用身份验证密钥时,我有点迷失了。

我曾考虑尝试创建一个文档并查看是否有异常,但我真的不喜欢使用失败作为条件,这似乎是一种不好的做法。

这里的目标是一种管理文档数据库的工具(我知道一些已经存在,这更多是为了锻炼我的技能)。因此,沿着这些思路,有人试图使用他们获得的密钥访问数据库,他们可能会或可能不会获得 rw 密钥,其中他们也可能不知道权限。理想情况下,可以显示一个标签或指示器来说明他们的访问级别。 谢谢!

【问题讨论】:

    标签: c# azure azure-cosmosdb


    【解决方案1】:

    客户端是使用授权密钥构建的,此时没有比您更多的信息。这只是一个字符串。

    您可以利用DocumentClient.ReadPermissionAsync 方法来获取资源的权限。我没有亲身尝试过,但可能很好探索。

    但是,由于权限有限,您不妨尝试读/写您所追求的原始文档,并在适用时捕获异常。这是因为您无论如何都需要发出请求才能获得权限。

    我不知道你为什么要这么做'想做。

    HTH

    【讨论】:

    • 谢谢Kurifodo。这里的目标是一种管理文档数据库的工具(我知道一些已经存在,这更多是为了锻炼我的技能)。因此,沿着这些思路,有人试图使用他们获得的密钥访问数据库,他们可能会或可能不会获得 rw 密钥,其中他们也可能不知道权限。理想情况下,可以显示一个标签或指示器来说明他们的访问级别。
    • 我还想提一下,ReadPermissionAsync 更多地针对用户级别,而不是真正针对身份验证密钥本身。
    猜你喜欢
    • 2013-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多