【发布时间】:2018-08-18 05:03:08
【问题描述】:
我们有一个 Web 应用,我们正在从 Azure 经典云服务过渡到应用服务 Web 应用。经典的云服务位于包含我们的域控制器(常规 AD,而不是 Azure AD)的 vnet 上。 App 服务使用 VNET 集成,因此它连接到我们的 vnet,因此也连接到 DC(主要通过客户端 vpn)。
当我们在 web 应用程序中运行创建新 AD 的代码时,用户已成功创建,但只要我们尝试更改任何内容 - 设置密码、添加到组等,我们就会得到 p>
“访问被拒绝。(来自 HRESULT 的异常:0x80070005 (E_ACCESSDENIED))”
我们用来创建和编辑帐户的用户可以在云服务中正常工作,因此这不是 AD 权限问题。
为了尝试简化调试,我编写了一些可以在 Kudu 控制台中运行的 Powershell,以查看是否可以捕获错误:
$DomainControllerIpAddress = "< domain controller IP>"
$domain = "<domain name>"
$BaseDN= "LDAP://$($DomainControllerIpAddress)"
$domAdmin = "domain\adminaccount"
$domPass = "<password>"
$userdn = "CN=TestUser,OU=TestOU,OU=ParentOU,DC=domain,DC=local"
$pass = "<newuserpassword>"
$userobj = New-Object System.DirectoryServices.DirectoryEntry($basedn + "/" + $userdn), $domAdmin, $domPass
$userobj.AuthenticationType = @("Secure","Sealing") # adding this to try to force kerberos makes no difference
$userobj.Invoke("SetPassword",$pass) # this fails in the App service but works fine everywhere else
此代码在连接到与应用服务相同的 DC 的本地计算机上运行良好,并且在云服务角色实例之一上的 powershell 控制台上运行良好,但来自应用服务的错误。
我们可以成功创建用户的事实证明 ldap 连接有效,但我无法理解为什么设置密码会导致访问被拒绝错误。
【问题讨论】:
-
你解决过这个问题吗?这几乎与我遇到的问题完全相同。
标签: active-directory azure-web-app-service directoryservices kudu