asp.net-mvc - 动态设置 OWIN(按域)

标签 asp.net-mvc oauth asp.net-mvc-5 owin

我们正在尝试在我们使用 OWIN(包括 FB、谷歌、实时登录)的项目上设置一个白标。有没有办法动态设置他们的 API 凭证,比如说如果他们改变域,设置就会改变。

我认为 owin 比 MVC 更早加载?有没有办法可以在 Global.asax(Request) 上加载它?

public partial class Startup
{
    public void Configuration(IAppBuilder app)
    {
        ConfigureAuth(app);
    }
}

更新:

换句话说,单个应用程序将托管许多域和子域(白标)。

最佳答案

我今天一直在谷歌上搜索同样的东西。然后我在 http://aspnet.codeplex.com/SourceControl/latest#Samples/Katana/BranchingPipelines/BranchingPipelines.sln 找到了一个不错的 OWIN 样本。这解释了 OWIN 的分支功能。如果我正确理解此示例,您应该能够根据请求参数(例如主机 header 、cookie、路径或使用 app.Map() 或 app.MapWhen() 方法的任何内容)配置不同的 OWIN 堆栈。

假设您有 2 个不同的 DNS 域,代表 2 个具有不同登录配置的客户,您可以根据主机 header 的值初始化 OWIN 以使用不同的配置:

public class Startup
{
    public void Configuration(IAppBuilder app)
    {

        app.MapWhen(ctx => ctx.Request.Headers.Get("Host").Equals("customer1.cloudservice.net"), app2 =>
        {
            app2.UseWsFederationAuthentication(...);
        });
        app.MapWhen(ctx => ctx.Request.Headers.Get("Host").Equals("customer2.cloudservice.net"), app2 =>
        {
            app2.UseGoogleAuthentication(...);
        });
    }
}

关于asp.net-mvc - 动态设置 OWIN(按域),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24422903/

相关文章:

c# - 如何使用Microsoft AntiXss 4.x?

asp.net-mvc - HttpContext.Current.Session 是否在工作进程之间共享?

asp.net - Global_asax_BeginRequest - 此行如何出错?

c# - 包含相关对象子集的属性

asp.net-mvc - Silverlight 还是 MVC.NET?

php - Google Oauth 2.0 检查我的刷新访问 token 是否过期

facebook - 为 facebook OAuth2 指定多个重定向 URI

javascript - Evernote OAuth 登录 Javascript

c# - 此版本的 sql server 不允许用户实例登录标志。 SQL Server 2012 企业版

javascript - 使用模式表单时,AngularJS 数据表未更新