Разрешения ключа авторизации C# Azure DocumentDB

Мне было интересно, есть ли способ определить уровень ключа авторизации, используемого при подключении к 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, в котором они также могут не знать разрешений. В идеале можно было бы показать метку или индикатор, чтобы указать их уровень доступа. Спасибо!


person sk1tt1sh    schedule 22.01.2015    source источник


Ответы (1)


Клиент создан с ключом авторизации и не имеет о нем больше информации, чем вы на тот момент. Это просто строка.

Вы можете использовать DocumentClient. ReadPermissionAsync для получения разрешений ресурса. Я не пробовал это из первых рук, но может быть полезно изучить.

Однако вы также можете попытаться прочитать/записать исходный документ, который вам нужен, и поймать исключение, когда это применимо, из-за ограниченных разрешений. Это связано с тем, что вам все равно нужно будет сделать запрос, чтобы получить разрешения.

Я не в курсе, почему вы делаете то, что делаете, однако я бы сделал шаг назад и спросил себя, можете ли вы убедиться, что у вас будет правильный ключ для операции чтения/записи, которую вы хотите. сделать.

ХТН

person Scott Lin    schedule 22.01.2015
comment
Спасибо Курифодо. Целью здесь является своего рода инструмент (я знаю, что некоторые из них уже существуют, это скорее упражнение для моих навыков) для управления базами данных документов. Таким образом, в соответствии с этими строками скажем, что кто-то пытается получить доступ к базам данных с помощью ключа, который им дали, им может быть или не быть дан ключ rw, в котором они также могут не знать разрешений. В идеале можно было бы показать метку или индикатор, чтобы указать их уровень доступа. - person sk1tt1sh; 22.01.2015
comment
Я также хотел бы отметить, что ReadPermissionAsync больше нацелен на уровень пользователя, а не на сами ключи аутентификации. - person sk1tt1sh; 22.01.2015