动态设置OWIN(按域)

Lee*_*Lee 8 asp.net-mvc oauth owin asp.net-mvc-5

我们正在尝试在使用OWIN的项目中设置白色标签(包括FB,google,Live登录).有没有办法动态设置他们的API凭据,比如他们是否更改了设置将更改的域.

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

public partial class Startup
{
    public void Configuration(IAppBuilder app)
    {
        ConfigureAuth(app);
    }
}
Run Code Online (Sandbox Code Playgroud)

更新:

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

Dav*_*der 6

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

假设您有2个不同的DNS域代表2个具有不同登录配置的客户,您可以根据主机头的值初始化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(...);
        });
    }
}
Run Code Online (Sandbox Code Playgroud)