如何通过应用程序池在web.config中有特定的身份验证部分?

时间:2018-07-10 13:02:39

标签: c# iis web-config global-asax

我有一个网站与我域中的其他应用共享其身份验证令牌的网站:app1.mydomain.com,app2.mydomain.com等。

现在,我想将其网站转换为 white-label :即,该网址将为app1.ANOTHER-COMPANY.com。不会在同一个域中。

我在IIS中为白标签创建了一个新条目,该条目将定位到与当前网站相同的物理文件夹,并带有一个虚拟目录来覆盖我的内容文件夹。 此文件夹将包含我的白色标签的徽标和图片。

除身份验证被拒绝(因为我的白标签不在我的域中)外,它工作正常。

我试图在IIS中创建一个虚拟目录来存储一个authentication.config,并在我的web.config中使用它(使用configSource),但是它不适用于虚拟目录。

我试图在global.asax的AppStart中覆盖我的web.config,但是当我应用新设置时,它实际上会擦除我的web.config。

Configuration config = WebConfigurationManager.OpenWebConfiguration("~");
        AuthenticationSection section = config.GetSection("system.web/authentication") as AuthenticationSection;
        string extendConfigPath = HttpContext.Current.Server.MapPath(WebConfigurationManager.AppSettings["ConfigExtends"] ?? "") + "\\extendsConfig.xml";
        if (section != null && section.Mode == AuthenticationMode.Forms && File.Exists(extendConfigPath))
        {
            XDocument configExtends = XDocument.Load(extendConfigPath);
            section.Forms.Domain = configExtends?.Root?.Element("authenticationDomain")?.Value ?? section.Forms.Domain;
            section.Forms.Name = configExtends?.Root?.Element("authenticationName")?.Value ?? section.Forms.Name;
            config.Save();
        }

如何保留我的共享Cookie并为我的白标签获取另一个Cookie,而没有域限制?

0 个答案:

没有答案