C # Проблема аутентификации webservice между двумя веб-приложениями

Я работаю над веб-приложением, которое работает в компании. Это веб-приложение должно сделать вызов услуги, которая является частью второго веб-приложения.

В центральном веб-приложении у меня есть этот кусок кода;

var clientUri = "http://website.localhost/Services/Info.svc/account"; var uri = new Uri(clientUri); var networkCredentials = new NetworkCredential(_configuration.ServiceUserName, _configuration.ServicePassword); var httpClient = new HttpClient(); httpClient.DefaultHeaders.Authorization = Credential.CreateBasic(_configuration.ServiceUserName, _configuration.ServicePassword); httpClient.TransportSettings.PreAuthenticate = true; HttpResponseMessage respone = httpClient.Get(uri); HttpContent content = respone.Content; 

В webservice в другом приложении, которое есть (Info.svc), у меня есть следующий код в конструкторе службы.

 var validator = new UserNamePasswordValidator(); var cred = System.Net.CredentialCache.DefaultCredentials; //this one is empty, maybe a solution? validator.Validate("Username", "Password"); if (!HttpContext.Current.User.Identity.IsAuthenticated) { //This throws a 401 unauthorize, which is shown as a 500 error in the central application throw new WebProtocolException(HttpStatusCode.Unauthorized, "You must be authorized to perform this action.", null); } else { _userIsAbleToUseService = true; } 

Вместо имени пользователя и пароля в функции проверки я хочу использовать сетевые учетные данные, переданные из другого веб-сервиса, может ли это быть достигнуто? И как? Любые другие предложения приветствуются! Я могу указать пароль сейчас в функции проверки, но это не то, что я хочу.

–UPDATE– Это конфигурация в web.config для центрального приложения

               

Эта часть предназначена для web.config во втором веб-приложении

                    

Уже будучи зарегистрированным в центральном приложении с использованием поставщика членства, я пытаюсь вызвать веб-сервис оттуда, используя простую гиперссылку (только сейчас). Вебсервис, вызываемый в центральном админе, собирает некоторые данные и отправляет их на URL-адрес для веб-службы второго приложения. Оба приложения – это веб-приложения (содержащие веб-сервисы), поэтому для режима аутентификации заданы формы.

Принял меня почти 2 дня, но теперь у меня все работает так, как я хочу. Я нашел WcfRestContrib. Это позволило мне реализовать проверку подлинности в сервисах, немного изменив мой webconfig и используя несколько атрибутов этого classа. Я создаю быстрое тестовое приложение с сервисом и консольным приложением, а работа с аутентификацией.

Я добавил раздел ниже в мой web.config;

                     

После этого я изменил свой служебный интерфейс, чтобы выглядеть так;

 [ServiceContract] public interface ICmsInfo { [OperationContract] [OperationAuthentication] [WebInvoke(UriTemplate = "account", Method = "GET")] AccountDTO GetAccountInfo(); 

Последний шаг, который я принял, заключался в добавлении 2 attritubes к самой службе;

 [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)] [ServiceConfiguration("Rest", true)] public class Cmsinfo : ICmsInfo { //foo } 

WcfRestContrib помог мне, добавив эту технологию аутентификации, и она отлично работает. Мне просто нужно было убедиться, что я использовал заголовки авторизации.

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