2

J'ai ma configuration dans web.config et cela fonctionne très bien.Comment puis-je déplacer federationConfiguration hors web.config et dans un fichier de configuration personnalisé et le charger dynamiquement par le code

<configuration> 
    <system.identityModel.services> 
    <federationConfiguration> 
.... 
</federationConfiguration> 
    </system.identityModel.services> 
</configuration> 

Comment puis-je déplacer ceci de web.config dans un fichier de configuration personnalisé et le charger à partir du code?

Je souhaite utiliser la même structure de cette configuration afin de ne rien changer dans le code si je dois changer ce fichier de configuration.

Répondre

3

Vous pouvez taper dans l'événement WIF de votre global.asax

void Application_Start(object sender, EventArgs e) 
{ 
    // Code that runs on application startup 
    FederatedAuthentication.FederationConfigurationCreated += FederatedAuthenticationOnFederationConfigurationCreated; 

} 

Dans ce gestionnaire vous pouvez adapter la configuration à l'exécution. Voici un code pour vous donner une idée. Le code de fin sera plus complexe.

private void FederatedAuthenticationOnFederationConfigurationCreated(object sender, FederationConfigurationCreatedEventArgs args) 
    { 
     var identityConfiguration = new IdentityConfiguration(loadConfig:false); 
     identityConfiguration.SecurityTokenHandlers.Clear(); 
     //... 
     identityConfiguration.SecurityTokenHandlers.Add(new Saml2SecurityTokenHandler()); 
     //... 
     var configuration = new FederationConfiguration(loadConfig: false) 
     { 
      CookieHandler = new ChunkedCookieHandler(), 
      //... 
      IdentityConfiguration = identityConfiguration 
     }; 
     args.FederationConfiguration = configuration; 
    } 

Si vous avez des doutes sur la valeur à donner à quel objet, vous pouvez toujours passer temporairement à la configuration et vérifier les valeurs d'exécution par le même événement. Ne sous-estimez pas la complexité et la richesse de la configuration fournie par WIF.
En général, vous voulez un mélange de "code config" et "web.config config" si le web.config est encore utilisé pour configurer certaines parties plus variables de la config et le code est utilisé pour les pièces les plus immuables. ..

+0

Il a fallu beaucoup de temps pour arriver à la conclusion pour marquer votre réponse correcte. Ce n'était pas ce que je cherchais à l'époque où j'ai posé la question mais maintenant que je l'ai implémenté et passé par tous les rouages ​​de ce plugin (aussi utilisé le plug-in VS2013 pour parcourir/déboguer le code du framework) ma mise en œuvre ressemble presque à ce que vous avez donné, votre réponse a beaucoup de sens maintenant et donc marquée bonne réponse. – Birey

+0

Je n'aurais jamais commencé ici si ce n'est pour la réponse et le commentaire. C'était très utile. –

Questions connexes