Пересылка учетных данных Windows из веб-приложения в веб-службу

#c# #.net #security #authentication #credentials

#c# #.net #Безопасность #проверка подлинности #учетные данные

Вопрос:

Привет, коллеги-программисты! Мне нужна ваша помощь в решении проблемы, которую я, похоже, не могу решить. У меня есть веб-служба REST, которая размещена на виртуальной машине (VM 2) с использованием IIS, и при прямом нажатии все работает нормально. Я получаю все необходимые данные, и все довольны. Обратите внимание, что для работы этой веб-службы требуются учетные данные Windows.

Теперь эта веб-служба должна использоваться более крупным веб-приложением, размещенным на другой виртуальной машине (VM 1), также использующим IIS. Здесь возникает проблема: при использовании этого веб-приложения всякий раз, когда я хочу получить доступ к странице, которая запускает веб-службу в серверной части, я получаю мгновенную ошибку 401: не удалось получить профиль пользователя (несанкционированный несанкционированный)

Схема ситуации :

введите описание изображения здесь

Я много гуглил и пробовал много разных вещей. Я безуспешно пытался выдать себя за вызов.

Вот как создается запрос веб-приложения :

 public UserProfile GetProfile()
    {
        var wi = (WindowsIdentity)HttpContext.Current.User.Identity;
        var wic = wi.Impersonate();

        try
        {
            var request = new RestRequest("profile")
                              {
                                  Method = Method.GET,
                                  JsonSerializer = RestJsonSerializer.Default,
                                  UseDefaultCredentials = true,
                              };

            var response = this.client.Execute(request);

            if (response.StatusCode != HttpStatusCode.OK)
            {
                throw new Exception(
                    $"Could not get the user profile ({response.StatusCode} {response.StatusDescription})");
            }

            return RestJsonSerializer.Default.Deserialize<UserProfile>(response);
        }
        finally
        {
            wic.Undo();
        }
    }
  

Параметры IIS для веб-службы и веб-приложения :

  • Анонимная аутентификация = отключена
  • ASP.NET Олицетворение = Включено
  • Проверка подлинности форм = отключена
  • Проверка подлинности Windows = включена

Любая помощь или совет приветствуются 🙂

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

1. Обе виртуальные машины используют один и тот же домен AD?

2. Да, они используют один и тот же домен

3. Поиск делегирования Kerberos и двойного перехода.