Cha*_*wen 9 windows asp.net authentication iis docker
我已经从microsoft/aspnet存储库创建了一个容器. 我想在IIS中容纳一个ASP.NET 4.x Web应用程序,我可以在其中获取访问该站点的登录用户.我希望能够利用集成的Windows身份验证,因为这是一个内部应用程序.
我已经为容器主机创建了一个透明的网络.
另外,我在容器内的IIS上设置了Windows身份验证.我已经阅读了有关在容器主机上创建组托管服务帐户的内容,但我还没有这样做,并且不确定这是否足够,或者我不得不采取进一步措施.
小智 11
创建组托管服务帐户(gMSA)只是您需要采取的步骤之一,以使Windows身份验证与容器一起使用.您还需要一个凭据规范,其中包含有关您创建的gMSA的信息,并且容器将使用它来交换应用程序的应用程序池使用的内置帐户(LocalSystem,NetworkService,ApplicationPoolIdentity)的gMSA帐户.
实际上,最小的步骤是:
1)创建一个AD组,您可以使用该组添加将用于托管容器的计算机.
PS> New-ADGroup "Container Hosts" -GroupScope Global
PS> $group = Get-ADGroup "Container Hosts"
PS> $host = Get-ADComputer "mydockerhostmachine"
PS> Add-ADGroupMember $group -Members $host
Run Code Online (Sandbox Code Playgroud)
2)创建用于您的应用的gMSA帐户:
PS> New-ADServiceAccount -name myapp -DNSHostName myapp.mydomain.local -ServicePrincipalNames http/myapp.mydomain.local -PrincipalsAllowedToRetrieveManagedPassword "Container Hosts"
Run Code Online (Sandbox Code Playgroud)
值PrincipalsAllowedToRetrieveManagePassword应为您在步骤1中创建的AD组的名称.
3)然后,在每个容器主机上:
一个.安装Powershell Active Directory模块并进行测试,以确保您能够使用主机中的gMSA:
PS> Add-WindowsFeature RSAT-AD-PowerShell
PS> Import-Module ActiveDirectory
PS> Install-AdServiceAccount myapp
PS> Test-AdServiceAccount myapp
Run Code Online (Sandbox Code Playgroud)
湾 安装Credential Spec Powershell模块并创建凭证规范:
PS> Invoke-WebRequest https://raw.githubusercontent.com/Microsoft/Virtualization-Documentation/live/windows-server-container-tools/ServiceAccounts/CredentialSpec.psm1 -OutFile CredentialSpec.psm1
PS> Import-Module .\CredentialSpec.psm1
PS> New-CredentialSpec -Name myapp -AccountName myapp
Run Code Online (Sandbox Code Playgroud)
C.现在,如果一切都配置正确,您可以使用此凭据规范运行容器:
docker run --security-opt "credentialspec=file://myapp.json" -d -p
80:80 -h myapp.mydomain.local [my-image-name:tag]
Run Code Online (Sandbox Code Playgroud)
要注意以上事项 - 确保在创建gMSA时使用的服务主体名称与容器的主机名(-h参数)匹配.否则,如果您的应用程序使用Windows身份验证访问其他域资源或服务(例如,SQL Server),则会出现问题.此外,如果要访问SQL Server等其他资源,请确保还为这些服务提供gMSA帐户的相应权限.
最后,在创建Dockerfile时,请勿尝试将gMSA帐户直接分配给您的应用池.使用其中一个内置帐户,让引擎为您更换容器中的帐户.换句话说,您在Dockerfile中创建的应用程序池应该看起来像这样:
RUN Import-Module WebAdministration; `
New-Item -Path IIS:\AppPools\MyAppPool; `
Set-ItemProperty -Path IIS:\AppPools\MyAppPool -Name managedRuntimeVersion -Value 'v4.0'; `
Set-ItemProperty -Path IIS:\AppPools\MyAppPool -Name processModel -value @{identitytype='ApplicationPoolIdentity'}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5204 次 |
| 最近记录: |