2011-03-28 5 views
3

Excuses pour l'image étant de qualité terrible, mais il montre mon scénario de ce que je tente d'atteindre et je me demande quelle est la meilleure solution possible pour cela?WIF avec plusieurs STS

WIF Scenario

J'ai une configuration de projet de test, en utilisant RP à un seul STS - qui fonctionne très bien, le RP se dirigé vers la STS pour approbation et renvoie alors un jeton, simple. Cependant, je veux, disons, une liste déroulante sur mon RP que vous choisissez un "mode" et sur la base de ce mode, vous allez rediriger l'autorisation vers l'un des fournisseurs STS. Évidemment, je ne peux pas rediriger directement vers le STS pour cela et donc il devrait être dynamique, et les paramètres web.config supprimés pour re-dirige immédiatement que les projets .NET mis automatiquement là.

Quelqu'un peut-il donner des conseils à ce sujet?

Répondre

4

Il semblerait que vous utilisiez AppFrabric Access Control Service de Windows Azure (ACS). Vous voulez éviter de mettre du code dans votre application pour communiquer avec chaque fournisseur STS, et ACS est conçu pour résoudre ce problème. L'idée est de configurer ACS avec autant de fournisseurs STS que vous le souhaitez, puis votre application (utilisant WIF) communique uniquement avec ACS pour effectuer l'autorisation.

En savoir plus ici (Cliquez sur 'Access Control' à gauche): http://www.microsoft.com/windowsazure/AppFabric/Overview/default.aspx

+0

Excellent, merci. –

+0

Est-il possible d'utiliser ACS en dehors d'Azure? Ou @thedixon: prévoyez-vous de déployer sur Azure? Si les deux réponses sont «non», je ne vois pas comment cette réponse répond à la question. Qu'est-ce que je rate? –

+0

Lorsque ACS est hébergé dans Azure, les applications utilisant/consommant ACS peuvent être hébergées n'importe où. –

1

Vous pouvez également utiliser v2.0 ADFS pour y parvenir. Tout autre STS fédéré avec ADFS apparaît dans la liste déroulante "Home Realm Discovery". AppFabric ACS est "essentiellement" ADFS dans le cloud et rien ne vous empêche de fédérer ADFS et ACS.

4

Voici ce que vous faites. En global.asax, ajoutez ce code

void WSFederationAuthenticationModule_RedirectingToIdentityProvider(object sender, RedirectingToIdentityProviderEventArgs e) 
{ 
    string whr = HttpContext.Current.Request.QueryString["whr"]; 
    if (!string.IsNullOrEmpty(whr)) 
    { 
     //add your logic to determine the STS 
     e.SignInRequestMessage.HomeRealm = @"http://path-to-STS"; 
    } 
} 
1

Le remplacement de « RedirectingToIdentityProvider » est exactement ce que je ferais aussi bien. Juste en publiant ce lien, vous trouverez ici une collection d'IdentityFederationSamples si cela vous aide à avoir une solution complète. Il y a un échantillon à rediriger vers l'un des deux STS, il y en a un autre qui montre le STS en chaîne. http://www.michelelerouxbustamante.com/post/Cloud-Connections-Las-Vegas-Links.aspx

Questions connexes