Аутентификация IIS - вызов одного и того же сервера - PullRequest
1 голос
/ 03 июня 2019

У меня проблема с подключением САЙТА A к САЙТА B на том же сервере IIS.

САЙТ A действует как SPA (aspx) и использует API (web api) SITE B , оба в .net 4.6.1.

В моей среде развертывания они оба являются поддоменами изтот же домен, расположенный на том же V-сервере.

Если я нахожусь в моей среде разработки, он работает со следующим кодом:

protected async Task<HttpResponseMessage> Get(string urlParam = "")
    {
        string url = _url;
        if (!string.IsNullOrWhiteSpace(urlParam))
        {
            url = $"{_url}?{urlParam}";
        }

        NetworkCredential credentials = null;

        if (!string.IsNullOrEmpty(ServiceUser))
        {
            credentials = !string.IsNullOrEmpty(ServiceuserDomain)
                ? new NetworkCredential(ServiceUser, Servicepassword, ServiceuserDomain)
                : new NetworkCredential(ServiceUser, Servicepassword);

        }

        using (var handler = new HttpClientHandler {Credentials = credentials})
        {
            using (var httpClient = new HttpClient(handler))
            {
                HttpResponseMessage responseMessage = null;
                try
                {
                    responseMessage = await httpClient.GetAsync(url);
                }
                ...

Я также могу подключиться с этим кодом к моемуразвернутый API ( SITE B )

Файл web.config SITE A не имеет «специальных» конфигураций.Анонимная аутентификация включена, а аутентификация Windows отключена.

Файл web.config SITE B имеет следующую «специальную» конфигурацию:

<system.web>
    <compilation debug="true" targetFramework="4.6.1" defaultLanguage="c#" />
    <httpRuntime targetFramework="4.6.1" />
    <customErrors mode="Off" />
    <authentication mode="Windows"/>
    <authorization>
        <allow users="?"/>
    </authorization>
</system.web>
<location path="swagger">
    <system.web>
        <authorization>
            <deny users="?"/>
            <allow users="*"/>
        </authorization>
    </system.web>
</location>
<location path="api">
    <system.web>
        <authorization>
            <deny users="?"/>
            <allow users="*"/>
        </authorization>
    </system.web>
</location>

, которая в основном разрешает анонимный доступна сайт, за исключением / api и /swagger.

Если я тестирую вызов API для SITE B из POSTMAN, используя новый NTLM BETA Authentication, он работает также.Учетные данные определенно не ошибаются, но всякий раз, когда я прохожу через файлы журнала SITE B , я вижу:

2019-06-03 12:08:43 212.147.60.15 GET /api/form/ from=0&to=99/ 443 - IP HTTP/1.1 - - sub.domain.ch 401 0 0 2661 114 0

2019-06-03 12:08:43 212.147.60.15 GET /api/form/ from=0&to=99/ 443 - IP HTTP/1.1 - - sub.domain.ch 401 1 3221225581 6661 773 0

Кроме того, оба субдомена на этом сервере имеют один и тот же IP-адрес, но я не думаю, что это связано.К сожалению, в моем случае я не могу получить доступ к Windows Server.У меня просто есть PLESK доступ для управления доменами / файлами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...