在多租户站点中使用Owin OAuth 2.0

本文关键字:Owin OAuth 站点 | 更新日期: 2023-09-27 18:06:59

我目前在我的多租户CMS中使用Owin 2.0。我需要一种方法来改变facebook应用程序的id和秘密取决于租户。

问题是Owin配置代码在其他任何代码之前执行。请求。Url不是解决方案。请给我一个切实可行的解决办法。目前我只能通过url来区分租户。

在多租户站点中使用Owin OAuth 2.0

把这个答案作为一个有用的提示,而不是一个解决方案

您应该使用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);