2014-06-05 4 views
0

J'utilise actuellement Owin 2.0 dans mon CMS multi-locataire. J'ai besoin d'un moyen de changer l'identifiant de l'application facebook et le secret en fonction du locataire.utiliser Owin OAuth 2.0 sur un site multi-locataire

Le problème est que le code de configuration Owin est exécuté avant toute autre chose. Request.Url n'est pas la solution. S'il vous plaît me suggérer une solution pratique. Actuellement, je ne peux que différencier les locataires de l'URL.

Répondre

3

Utilisez cette réponse comme une astuce utile et non une solution

Vous devez utiliser FacebookAuthenticationProvider pour personnaliser le flux complet pour chaque locataire. FacebookAuthenticationProvider a trois événements exposés qui aideront la personnalisation.

Astuce: Utilisez Explorateur d'objets dans 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); 
+0

Nous vous remercions de la solution. Ça a marché!! – eadam