Использовать аутентификацию на основе ADFS в ASP.NET Core для доступа к SQL Server с использованием аутентификации Windows? - PullRequest
1 голос
/ 31 октября 2019

У меня есть SQL Server, настроенный для использования аутентификации Windows. Администратор базы данных использует пользователей и группы AD для предоставления / отклонения разрешений для определенных таблиц и процедур.

У меня также есть веб-приложения, которые взаимодействуют с ASP.NET Core Web API. Эти приложения используют ADFS для аутентификации, поэтому в основном все пользователи зарегистрированы в AD.

В некоторых из этих API-интерфейсов я хочу получить доступ к данным из SQL Server от имени аутентифицированного пользователя AD, что означает, что я могу 'использовать аутентификацию SQL Server. Я также не могу использовать режим интегрированной безопасности, так как он примет личность учетной записи, которая запускает службу ASP.NET Core.

Моя следующая мысль заключалась в том, что я должен попытаться пунктуально выдать себя за пользователя, ноЯ не смог найти ни одного работающего примера преобразования токена ADFS в WindowsIdentity объект.

Так как мне быть с этим? Кто-нибудь может указать мне правильное направление?

1 Ответ

2 голосов
/ 01 ноября 2019

Частью идеи ADFS является то, что она предоставляет токен, который НЕ Умышленно не использует ваши учетные данные Windows. Представьте, если вы объединяете свой домен с другим сервисом, чтобы ваши пользователи могли войти в систему, но какой сервис, к которому вы разрешаете подключаться, теперь может выдавать себя за ваши учетные данные Windows? Они могли бы использовать это, чтобы получить доступ обратно к вашей сети.

Теперь, если ваш веб-API работает под учетной записью с достаточными разрешениями, вы можете просто заставить его выдать себя за пользователя на основе имени пользователя.

С учетом сказанного я не могу сказать, что это рекомендуемый способ защиты доступа к базе данных, и вам действительно нужно иметь учетную запись SQL для веб-API для доступа к этой базе данных и предоставления информации конечному пользователю.

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

https://docs.microsoft.com/en-us/windows-server/identity/ad-fs/design/when-to-use-identity-delegation

...