#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. Форматирование — отстой, извините … смотрите ссылку на олицетворение в моем ответе.