Я пытаюсь подключиться к базе данных SQL в Azure из веб-приложения таким образом, что зарегистрированный в данный момент пользователь Azure AD передается в базу данных, и хранимые процедуры выполняются указанным пользователем, а не общим Пользователь SQL (что мы обычно делаем).
Наша цель - использовать в наших хранимых процедурах что-то вроде current_user
или system_user
, чтобы возвращать только те строки, к которым у пользователя есть определенный доступ. Таким образом, хранимая процедура не должна полагаться на то, что логика кода запрашивает только то, к чему должен иметь доступ зарегистрированный пользователь.
Возможно ли это?
Похоже, что строка соединения «ADO.NET (встроенная проверка подлинности Active Directory) - частная конечная точка», перечисленная в Azure, может быть тем, что мне нужно:
Server=tcp:mydbserver.database.windows.net,1433;Initial Catalog=mydbname;Persist Security Info=False;User ID={your_username};MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Authentication="Active Directory Integrated";
Я не хочу аутентифицироваться как определенный пользователь, я хочу аутентифицироваться как пользователь, в данный момент вошедший в систему , поэтому я удалил свойство username из строки. Итак, моя последняя строка подключения выглядит так:
Server=tcp:mydbserver.database.windows.net,1433;Initial Catalog=mydbname;Persist Security Info=False;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Authentication="Active Directory Integrated";
Однако попытка подключиться таким образом выдает исключение:
AdalException: формат указанного доменного имени недействителен.
Что я делаю не так?