Как передать учетные данные для базы данных в службу wcf?

#wcf #security #authentication #database-connection

#wcf #Безопасность #аутентификация #подключение к базе данных

Вопрос:

У нас есть служба WCF, которая подключается к базе данных Oracle. Подключение к базе данных должно осуществляться с использованием учетных данных пользователя, вызывающего службу.

Как я могу настроить это так, чтобы я мог получить доступ к имени пользователя и паролю, установленным в учетных данных клиента на клиенте, чтобы я мог добавить их в строку подключений, созданную, когда я хочу подключиться к базе данных, чтобы получить данные для вызова службы?

Или есть какой-то другой способ, которым это следует обработать?

Если это имеет значение, мы будем использовать прокси-идентификатор в базе данных oracle, поэтому все пользователи будут подключаться как основной пользователь, а прокси-идентификатор будет установлен в качестве переданных учетных данных, чтобы гарантировать, что запросы выполняются в контексте прокси-пользователя.

Ответ №1:

Настройте свои службы на использование олицетворения. Таким образом, они будут использовать идентификатор клиента службы.

После настройки вы можете получить идентификатор вызывающего абонента Windows следующим образом:

 WindowsIdentity callerWindowsIdentity = ServiceSecurityContext.Current.WindowsIdentity;
  

Ознакомьтесь с этим сообщением в блоге и посмотрите, поможет ли оно вам.

Комментарии:

1. Спасибо, но мы не используем Windows indentity, мы используем аутентификацию имени пользователя / пароля

2. Как вы аутентифицируете вызывающих? Используете ли вы customUserNamePasswordValidatorType?

3. в настоящее время мы не выполняем аутентификацию. Я должен был сказать, что мы хотим использовать аутентификацию по имени пользователя и паролю… мы пытаемся выяснить, какие у нас есть варианты…

4. Ну, вы все еще можете использовать проверку подлинности Windows. Ваш клиент может передать имя пользователя / пароль в учетных данных клиента, а затем вы можете указать поведение службы для сопоставления этих учетных данных с учетной записью Windows. <поведение> <serviceBehaviors> <имя поведения=»MapToWindowsAccount»> <ServiceCredentials> <ClientCertificate> <аутентификация mapClientCertificateToWindowsAccount=»true» /> </ClientCertificate> </ServiceCredentials> </поведение> </serviceBehaviors> </поведения>

5. Форматирование — отстой, извините … смотрите ссылку на олицетворение в моем ответе.