У нас есть служба WCF, которая ранее была установлена на доменной машине. Наши клиенты смогли подключиться к этой услуге и вызвать методы WCF с использованием учетных данных домена текущего пользователя.WCF Security: проверить учетные данные домена клиента с сервера, находящегося за пределами домена.
Это связывание конфигурации мы использовали:
<netTcpBinding>
<binding ...>
<security mode="Transport">
<transport clientCredentialType="Windows" protectionLevel="None" />
<message clientCredentialType="Windows" />
</security>
</binding>
</netTcpBinding>
Теперь по техническим причинам, мы должны были переместить службу на машину, которая не может присоединиться к домену. Можно ли использовать безопасность транспорта WCF для проверки подлинности клиента?
Когда клиенты пытаются вызвать метод WCF они получают эту ошибку:
System.ServiceModel.Security.SecurityNegotiationException: The server has rejected the client credentials. --->
System.Security.Authentication.InvalidCredentialException: The server has rejected the client credentials. --->
System.ComponentModel.Win32Exception: The logon attempt failed
Я попытался запустить службу с runas /netonly
. Это изменение позволило службе подключиться к серверу SQL сервера с использованием учетных данных домена, но это не помогает клиентам, пытающимся подключиться к службе.
Я искал и читал о олицетворении WCF, токенах Kerberos, CredSSP и других технологиях, но я не уверен, что это может помочь мне в моей ситуации, какой путь я должен взять или с чего начать. Благодарю.
На самом деле наша служба подключается к базе данных со своей собственной учетной записью пользователя, а не с идентификацией клиента. Но вы говорите, что у меня нет возможности предоставлять свою личность сервису (вне домена), чтобы он мог также аутентифицировать клиента? – Saintali