Имеется приложение на Laravel 5.6 PHP 7.2, работающее на IIS 7.5 сервере. Работает AD авторизация. Как пользователю выполнить запрос к БД MSSQL с Windows аутентификацией если есть 1 учетная запись (на выполнение запросов, что-то типа сервисной). Наверное проще на примере пользователь обычный\ивановвв под ним работает приложение пользователь сервисный\петроваа под ним выполнение запросов к БД как обычный\ивановвв может подключиться к БД используя данные сервисный\петроваа? Вариант запуска сервера от имени пользователя не предлагать Заранее большое спасибо!
Ключевая фраза Windows аутентификация. Если бы была SQL то да, если ты указываешь логин и пароль для подключения к БД автоматически считается что для SQL аутентификации - в следствие чего ошибка доступа, а если не указываешь логин и пароль по умолчанию считается, что windows аутентификация и берутся данные из AD в частности я так думаю, что AUTH_USER или REMOTE_USER. P.S. возможно я не прав поправьте меня если это не так.
О чём ты говоришь это SSO(ntlm), в этом случае в REMOTE_USER будет учётка AD залогиненного юзера. http://support.etouch.net/cm/wiki/?id=78151 https://social.technet.microsoft.co...1079108810721095108510721103?forum=ws2008r2ru
у меня включена windows аутентификация. если я указываю логин и пароль вот такая ошибка - "SQLSTATE[28000]: [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]Login failed for user 'user_sv'."] та же ошибка если с доменом - "SQLSTATE[28000]: [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]Login failed for user 'corp\user_sv'"] если не указыва логин и пароль - "SQLSTATE[28000]: [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]Login failed for user 'CORP\user_1'. "] --- Добавлено --- если я отключаю windows аутентификацию на сервере и включаю анонимную от имени corp\user_sv все прекрасно работает. но такой вариант не нужен (т.к. может быть несколько таких кривых БД) --- Добавлено --- или я совсем ничего не понимаю
Nospiou если честно я не знаю. Я пока читал учебник по PHP мне встретилось такое выражение как define("AUTH_USER", "corp\user_sv") то есть подстановка значений. может быть можно прокинуть как нибудь данные с этой учетной записи. или при переходе на ссылку, которая отвечает за этот запрос к БД открывать браузер от имени этой учетной записи делать запрос и закрывать браузер? я просто новичек и не совсем понимаю как правильно это можно обыграть.
PHP: 'sqlsrv' => [ 'driver' => 'sqlsrv', 'host' => 'localhost', 'database' => ' ', 'username' => 'SERVICE_USER', // domain\service_user 'password' => ' ', 'charset' => 'utf8', 'prefix' => '', ],
Подскажите, если я сделаю 2 проекта: 1 основной - будет с windows аутентификацией, 2 - для получения данных из system center с запуском от имени пользователя. Оставляю во втором проекте: ExchangeController.php PHP: <?php namespace App\Http\Controllers; use App; use Illuminate\Http\Request; use App\ItActiveMySystemCenter; use Illuminate\Support\Facades\DB; use App\Http\Controllers\Controller; use Illuminate\Database\Eloquent\Model; class ExchangeController extends Controller { public function index() { $original_data = App\SystemCenter::getSystemCenterBigData(); $data = json_encode($original_data); return $data; } } Route.php PHP: Route::get('exchange', 'ExchangeController@index')->name('exchange'); и собственно модель SystemCenter с запросом. как мне принять в 1 проекте данные из ExchangeController? я попробовал что-то типа такого, но ошибка связанная с отсутствием переменной data Код (Javascript): <script> var mass=[]; $.ajax({ url:'http://localhost/Test_1/Connect_System_Center/exchange', type:'POST', dataType: 'json', data: data, success: function(data){ if(data){ console.log(data); } } }); </script> Подскажите как можно реализовать такой момент и правильно ли это?
Исправил в ExchangeController.php PHP: $original_data = App\SystemCenter::getSystemCenterBigData(); $data = json_encode($original_data); return $data; Код (Javascript): var mass=[]; $.ajax({ url:'http://localhost/Test_1/Connect_System_Center/exchange', type:'GET', dataType: 'json', success: function(data){ //if(data){ console.log(data); //} } }); </script>