gpt4 book ai didi

azure - Azure 应用服务上的 ActiveDirectoryMembershipProvider : Access Denied

转载 作者:行者123 更新时间:2023-12-02 08:30:03 26 4
gpt4 key购买 nike

在 IIS 7 上运行的旧应用程序之一最近已移植到 Azure 应用服务。

该应用程序使用 WebMatrix(简单成员(member)资格)和 Active Directory 作为成员(member)资格提供程序。将其托管在 Azure 应用服务上后,我们收到访问被拒绝错误

web.config

<membership defaultProvider="simple">
<providers>
<clear />
<add name="simple" type="WebMatrix.WebData.SimpleMembershipProvider, WebMatrix.WebData" />
<add name="AD1MembershipProvider" description="Active Directory"
type="System.Web.Security.ActiveDirectoryMembershipProvider"
applicationName="appName" connectionStringName="AD1ConnectionString"
connectionUsername="..." connectionPassword="..."
connectionProtection="None"
enableSearchMethods="true" attributeMapUsername="sAMAccountName" />
</providers>
</membership>
<roleManager enabled="true" defaultProvider="DefaultRoleProvider">
<providers>
<add name="DefaultRoleProvider" type="WebMatrix.WebData.SimpleRoleProvider, WebMatrix.WebData" />
</providers>
</roleManager>


<connectionStrings>
<add name="AD1ConnectionString" connectionString="LDAP://something.DIR/DC=something,DC=something,DC=DIR" />
</connectionStrings>

应用程序启动时出现此错误:

[COMException]: Access is denied.

at System.DirectoryServices.DirectoryEntry.Bind(Boolean throwIfFail)
at System.DirectoryServices.ActiveDirectory.DirectoryContext.IsContextValid(DirectoryContext context, DirectoryContextType contextType)
[UnauthorizedAccessException]: Access is denied.

at System.DirectoryServices.ActiveDirectory.DirectoryContext.IsContextValid(DirectoryContext context, DirectoryContextType contextType)
at System.DirectoryServices.ActiveDirectory.DirectoryContext.isServer()
at System.DirectoryServices.ActiveDirectory.Domain.GetDomain(DirectoryContext context)
at System.Web.Security.DirectoryInformation.InitializeDomainAndForestName()
at System.Web.Security.ActiveDirectoryMembershipProvider.Initialize(String name, NameValueCollection config)
at System.Web.Configuration.ProvidersHelper.InstantiateProvider(ProviderSettings providerSettings, Type providerType)
[ConfigurationErrorsException]: Access is denied.
(D:\home\site\wwwroot\web.config line 106)
at System.Web.Configuration.ProvidersHelper.InstantiateProvider(ProviderSettings providerSettings, Type providerType)
at System.Web.Configuration.ProvidersHelper.InstantiateProviders(ProviderSettingsCollection configProviders, ProviderCollection providers, Type providerType)
at System.Web.Security.Membership.InitializeSettings(Boolean initializeGeneralSettings, RuntimeConfig appConfig, MembershipSection settings)
at System.Web.Security.Membership.Initialize()
at System.Web.Security.Membership.get_Providers()
at WebMatrix.WebData.WebSecurity.PreAppStartInit()
at WebMatrix.WebData.PreApplicationStartCode.Start()
[InvalidOperationException]: The pre-application start initialization method Start on type WebMatrix.WebData.PreApplicationStartCode threw an exception with the following error message: Access is denied.
(D:\home\site\wwwroot\web.config line 106).
at System.Web.Compilation.BuildManager.InvokePreStartInitMethodsCore(ICollection`1 methods, Func`1 setHostingEnvironmentCultures)
at System.Web.Compilation.BuildManager.InvokePreStartInitMethods(ICollection`1 methods)
at System.Web.Compilation.BuildManager.CallPreStartInitMethods(String preStartInitListPath, Boolean& isRefAssemblyLoaded)
at System.Web.Compilation.BuildManager.ExecutePreAppStart()
at System.Web.Hosting.HostingEnvironment.Initialize(ApplicationManager appManager, IApplicationHost appHost, IConfigMapPathFactory configMapPathFactory, HostingEnvironmentParameters hostingParameters, PolicyLevel policyLevel, Exception appDomainCreationException)
[HttpException]: The pre-application start initialization method Start on type WebMatrix.WebData.PreApplicationStartCode threw an exception with the following error message: Access is denied.
(D:\home\site\wwwroot\web.config line 106).
at System.Web.HttpRuntime.FirstRequestInit(HttpContext context)
at System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context)
at System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context)

我们尝试在 providersroleManager 中禁用 WebMatrix,但即使 ActiveDirectoryMembershipProvider 也会出现相同的错误。

有什么建议吗?

最佳答案

Azure 应用服务在 sanbox 中运行所以这就是它失败的原因。由于您无权访问主机操作系统,因此您将无法允许访问。不过有几个选择。

  1. 将您的应用程序部署到 Azure VM 和 join到您本地的域。
  2. Migrate您的应用程序的本地 AD 身份验证转移到 Azure Active Directory 和 enable AAD在您的应用程序上。
  3. 将现有 Active Directory 迁移到 Azure Active Directory

我认为选项 2 将是您的最佳选择。这个doc是此类混合云解决方案的架构概述。根据虚拟机大小,选项 1 的成本会更高一些,而选项 3 则需要进行广泛的规划。

关于azure - Azure 应用服务上的 ActiveDirectoryMembershipProvider : Access Denied,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61743100/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com