我目前在我的多租户CMS中使用Owin 2.0。我需要一种方法来改变Facebook应用程序ID和秘密,具体取决于租户。
问题是Owin配置代码在其他任何事情之前执行。 Request.Url不是解决方案。请建议我一个实用的解决方案。目前我只能从网址中区分租户。
答案 0 :(得分:3)
将此答案用作有用的提示而不是解决方案
您应该使用FacebookAuthenticationProvider
为每个租户自定义完整流程。 FacebookAuthenticationProvider
公开了三个有助于自定义的事件。
提示:在Visual Studio中使用对象浏览器
FacebookAuthenticationOptions fbOptions = new FacebookAuthenticationOptions();
fbOptions.AppId = "DefaultAppId";
fbOptions.AppSecret = "DefaultSecret";
fbOptions.CallbackPath = new PathString("DefaultTenantWithCallBackUrl");
fbOptions.Provider = new FacebookAuthenticationProvider()
{
OnApplyRedirect = (FacebookApplyRedirectContext context) =>
{
/*a way to change the facebook app id and secret depending on the tenant.*/
/*Redirect to tenant specific built url */
},
OnAuthenticated = (FacebookAuthenticatedContext context) =>
{
/*process tenant specific logic*/
return Task.FromResult(0);
},
OnReturnEndpoint = (FacebookReturnEndpointContext context) =>
{
/*process tenant specific logic*/
return Task.FromResult(0);
}
};
app.Use(typeof(FacebookAuthenticationMiddleware), app, fbOptions);