1

Azure登录密钥将于2015年8月15日滚动。我的一些应用程序未设置为自动应对此问题。我原本以为,在Global.asax中Azure AD Signing Key Rollover

protected void RefreshValidationSettings() 
{ 
    string configPath = AppDomain.CurrentDomain.BaseDirectory + "\\" + "Web.config"; 
    string metadataAddress = ConfigurationManager.AppSettings["ida:FederationMetadataLocation"]; 
    ValidatingIssuerNameRegistry.WriteToConfig(metadataAddress, configPath); 
} 

此工程在调试我的桌面上,新键下载并写入到我的web.config中使用以下功能的解决方案。

当我上传网站天青虽然我得到一个拒绝访问

访问路径“E:\ sitesroot \ 0 \ Web.config中”被拒绝。

ASP.NET未被授权访问请求的资源。考虑将资源的访问权限授予ASP.NET请求标识。 ASP.NET具有基本进程标识(通常位于IIS 5上的{MACHINE} \ ASPNET或IIS 6和IIS 7上的网络服务以及IIS 7.5上配置的应用程序池标识),如果应用程序未模拟,则使用该标识。如果应用程序正在通过模拟,身份将是匿名用户(通常为IUSR_MACHINENAME)或经过身份验证的请求用户。

要授予对文件的ASP.NET访问权,请右键单击文件资源管理器中的文件,选择“属性”并选择安全选项卡。点击“添加”添加适当的用户或组。突出显示ASP.NET帐户,然后选中所需访问权限的复选框。

虽然古怪,这是一个建议,考虑到我对这个问题的详细microsoft

+0

您可以尝试'WebConfigurationManager.OpenWebConfiguration(null)'获取应用程序中的根web.config文件作为'Configuration'对象。 '配置'对象具有'FilePath'属性 – HashName

+0

这不会有同样的问题,因为它在同一个帐户下运行? – DasDave

回答

0
+0

道歉应该提到我已经尝试过,但没有成功。我认为问题是使用网络服务帐户的例子。 Azure似乎使用ASP.NET帐户。我不知道究竟应该将哪个帐户放入它建议创建的文件中。有什么想法吗? – DasDave

+0

所以我在批处理文件中犯了一个错误,现在这个工作。谢谢! – DasDave

1

您在"Web applications protecting resources and created with Visual Studio 2012" section of the Signing Key Documentation指出,该指南只适用于应用程序,你可以在运行时修改web.config。

Azure Web应用程序不属于此类别。除了您面临的权限问题之外,Azure Web应用程序不保证底层虚拟机的持久性。这意味着任何运行时更改为web.Config都可以在任何时候撤消。

为了实现8月15日滚动,您可以在本地运行应用程序,并简单地更新应用程序的签入web.config和Azure Web App的设置。鉴于元数据已经包含了当前的密钥和Azure AD将在15日滚动到的密钥,因此生成的web.Config/settings将为您覆盖此特定事件。

但是,要正确支持自动翻转,最好的办法是将您的应用程序迁移到较新的堆栈,如Owin中间件。

+0

你有什么好的资源/例子吗? – DasDave