使用 Active Directory 和远程连接 IIS 进行 Docker 身份验证

使用 Active Directory 和远程连接 IIS 进行 Docker 身份验证

我已经在容器内设置了 IIS,并且可以使用主机的 IIS 连接到该“服务器”。

下一步,我需要在里面托管一个 Web 应用程序(如果 Web 与 AD 无关,我已经成功完成了)

情况是,我们的 Web 应用程序需要使用我们的广告帐户进行身份验证,现在,如果我在容器内启动 Web,即使我输入正确的帐户 + 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

我已经解决了。我错过了 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(通过在cmd中运行hostname来确认)

要完成此操作,首先,正如我提到的: 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

之后,为了让容器使用服务帐户运行,我们需要在 Docker 运行中添加 -h 选项。与之前创建的 gMSA 帐户一起,命令将是:

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

然后,对于 IIS 应用程序,在“连接”面板 > 功能委派中选择该“服务器或容器”> 将所有“身份验证 - 某些内容”设置为读/写

然后就完成了

相关内容