Я создаю решение, которое включает базу данных служб аналитики SQL Server (SSAS MD) и API (все в одном домене). Эти два находятся на отдельных серверах, и я хотел бы отправить учетные данные пользователя, который входит в систему SSAS (с использованием проверки подлинности Windows), этому API. Для этого я разработал сборку C #, которая развернута на SSAS Cube. API запросов сборки выглядит так:
var wc = new WebClient();
wc.Credentials = System.Net.CredentialCache.DefaultCredentials;
wc.Headers["Accept"] = "application/json;odata=nometadata";
System.IO.Stream response = wc.OpenRead(conn);
Возвращенные данные отображаются в средствах отчетности, которые подключаются к кубу OLAP.
Когда клиент подключается к OLAP Cube и запускает эту сборку, API возвращает ошибку (401) Unauthorized. Теперь это работает просто отлично в 2 случаях:
1) Когда пользователь обращается к кубу OLAP на сервере, на котором хранится куб. Следовательно, это означает, что не может быть никаких клиентских серверов, которые подключаются к кубу удаленно. Похоже, делегирование полномочий не работает.
2) При добавлении сборки в OLAP Cube можно установить ее авторизацию:
Цель здесь - использовать «Использовать учетные данные текущего пользователя», но если я изменю его на «Использовать определенное имя пользователя и пароль Windows» и введу имя пользователя и пароль клиента, это сработает. Очевидно, что Assembly будет авторизован только как этот пользователь, и единого входа не будет.
Я пробовал это: https://docs.microsoft.com/en-us/sql/analysis-services/instances/configure-analysis-services-for-kerberos-constrained-delegation?view=sql-server-2017 в том смысле, что я создал SPN для служебной учетной записи SSAS и включил делегирование на сервере SSAS, клиентском сервере и сервере API. Забавно то, что после тех случаев, когда я подключаюсь к SSAS на сервере SSAS с SSPI = Kerberos - я получаю 401 Unauthorized, поэтому я думаю, что я могу сделать что-то не так. Я также попытался подключиться с клиентского сервера к SSAS с уровнем олицетворения = делегат (в соответствии с https://docs.microsoft.com/en-us/sql/analysis-services/instances/connection-string-properties-analysis-services?view=sql-server-2017), и он также не работает.
Если честно, я споткнулся. Я чувствую, что пропустил одну маленькую настройку где-то, что мешает работе всего решения. Можете ли вы помочь мне?