В настоящее время у меня есть приложение, которое вызывает веб-службу (WS1), которая, в свою очередь, вызывает другую веб-службу (WS2) для получения/установки информации на сервере, размещенном на WS2. Я хотел бы иметь возможность передавать учетные данные пользователя в WS2 из WS1, как если бы приложение вызывало прямо в WS2. Есть ли способ сделать это?Как передать учетные данные из одной веб-службы в другую?
Это то, что я в настоящее время:
Код Применение:
BasicHttpBinding basicHttpBinding =
new BasicHttpBinding(BasicHttpSecurityMode.TransportCredentialOnly);
basicHttpBinding.Security.Transport.ClientCredentialType =
HttpClientCredentialType.Windows;
basicHttpBinding.MaxReceivedMessageSize = 131072000;
AppMgr.AppMgrSoapClient appMgr =
new AppMgr.AppMgrSoapClient(
basicHttpBinding,
new EndpointAddress(@"http://SomeServer/Service.asmx"));
appMgr.ClientCredentials.Windows.AllowedImpersonationLevel =
TokenImpersonationLevel.Impersonation;
appMgr.ChannelFactory.Credentials.Windows.ClientCredential =
CredentialCache.DefaultNetworkCredentials;
appMgr.SomeWebMethodCall();
Web Service 1 код (на 'SomeServer')
BasicHttpBinding basicHttpBinding =
new BasicHttpBinding(BasicHttpSecurityMode.TransportCredentialOnly);
basicHttpBinding.Security.Transport.ClientCredentialType =
HttpClientCredentialType.Windows;
basicHttpBinding.MaxReceivedMessageSize = 131072000;
WS2Service.WS2ServiceSoapClient myServiceReference =
new WS2Service.WS2ServiceSoapClient(
basicHttpBinding,
new EndpointAddress(@"http://SomeOtherServer/AnotherService.asmx"));
myServiceReference.ClientCredentials.Windows.AllowedImpersonationLevel =
TokenImpersonationLevel.Impersonation;
myServiceReference.ChannelFactory.Credentials.Windows.ClientCredential =
CredentialCache.DefaultNetworkCredentials;
Ее последняя строка в веб-службы код, который мне нужно изменить, я знаю это ... но я не знаю, что его установить ... Существует ClientCredentials.UserName, но у меня нет пароля на этом уровне.
Используйте теги вместо добавления в свой заголовок таких вещей, как «C# .NET 3.0». –
Я не знаю много о безопасности в WCF, но я думаю, ваша проблема заключается в 'AllowedImpersonationLevel'. Я бы попробовал это с помощью команды «TokenImpersonationLevel.Delegation» http://msdn.microsoft.com/en-us/library/system.security.principal.tokenimpersonationlevel.aspx –
Я попробовал делегирование, я все еще получаю веб-пользователя, который начал услуг на стороне WS2. :( – Tizz