1

Я настроил IIS внутри контейнера, и я могу использовать IIS хоста для подключения к этому "серверу".

Следующим шагом мне нужно разместить внутри веб-приложение (я успешно это сделал, если веб-страница не связана с AD).

Дело в том, что наши веб-приложения должны быть аутентифицированы с использованием наших рекламных учетных записей, и теперь, если я запускаю Интернет внутри контейнера, даже если я наберу правильный аккаунт + pw, он все равно дает мне

401 - Несанкционированный: доступ запрещен из-за неверных учетных данных.

Итак ... как использовать AD внутри контейнера?

Как сообщает https://blogs.msdn.microsoft.com/containerstuff/2017/01/30/create-a-container-with-active-directory-support/

Я сталкивался с GMSA

  1. Я вошел на сервер AD и запустил:

    New-ADServiceAccount -Name ABC -PrincipalsAllowedToRetrieveManagedPassword ABC-Servers –DNSHostName ABC.domain.com
    
  2. Я пошел на сервер с установленным Docker и запустил:

    Import-Module ./CredentialSpec.psm1
    New-CredentialSpec -Name ABC -AccountName ABC
    
  3. начать новый контейнер с

    --security-opt 
    

а также

    ABC.json

Но, в конце концов, все равно требуется, чтобы я аутентифицировал себя и что бы я ни печатал, все 401 ...

Кстати, nltest /parentdomain показывает мне имя рекламного сервера

1 ответ1

0

Я решил это. Я пропустил часть setspn и -h

Часть этого решения связана с этими ссылками:https://blogs.msdn.microsoft.com/containerstuff/2017/07/31/getting-iis-win-auth-to-work-in-a-container/

https://blogs.msdn.microsoft.com/containerstuff/2017/01/30/create-a-container-with-active-directory-support/

Имя хоста хоста = abcHost (подтвердите, запустив hostname в cmd)

Чтобы сделать это, во-первых, как я уже говорил:1. Войдите на сервер AD и запустите:

New-ADServiceAccount -Name accountABC -PrincipalsAllowedToRetrieveManagedPassword ABC-Servers –DNSHostName abcHost.domain.com
  1. Перейдите на сервер с установленным Docker (хост-компьютер) и запустите: Import-Module./CredentialSpec.psm1 New-CredentialSpec -Name accountABC -AccountName accountABC

Итак, теперь у нас есть служебная учетная запись: ABC. Следующий шаг - связать имя компьютера с служебной учетной записью, поэтому запустите setspn на рекламном сервере:

setspn -c -s HTTP/abcHost domian\accountABC

После этого, чтобы контейнер работал с учетной записью службы, нам нужно добавить опцию -h в Docker run. вместе с созданной ранее учетной записью gMSA команда будет:

Docker run -it --name accountABC -h accountABC -v <a directory> --security-opt "credentialspec=file://accountABC.json" myImage

Затем для приложения IIS выберите "сервер или контейнер" на панели "Подключения"> Делегирование функций> установите для всех параметров «Аутентификация - НЕЧТО» значение «Чтение / запись».

Тогда это сделано

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .