2012-02-27 3 views
8

Est-il possible de configurer l'URL du domaine, les types de revendications, etc. pour Azure ACS sans modifier le fichier web.config? Pouvez-vous mettre en place par programmation ces éléments requis?Est-il possible d'obtenir des revendications ACS sans modifier web.config?

EDIT: Plus précisément, je veux me débarrasser de cette:

<federatedAuthentication> 
    <wsFederation passiveRedirectEnabled="true" issuer="https://mynamespace.accesscontrol.windows.net/v2/wsfederation" realm="http://localhost:81/" requireHttps="false" /> 
</federatedAuthentication> 

Fondamentalement, je ne veux pas le royaume étant précisé dans la configuration Web, mais plutôt dans le code quelque part. J'ai essayé de substituer ClaimsAuthenticationManager et de commenter les parties au code lié à FederatedAuthentication. Mon code d'authentification substitué est touché, mais il ne contient aucune revendication. Je suppose que cela est dû au fait que FederatedAuthentication est un intermédiaire qui effectue sa propre authentification avant qu'il ne parvienne au ClaimsAuthenticationManager surchargé normalement. Existe-t-il un moyen de remplacer la partie FederatedAuthentication d'une manière similaire? Ou y a-t-il des informations transmises dans la méthode d'authentification substituée que je peux utiliser pour effectuer ma propre authentification?

Répondre

9

Pour supprimer cette ligne xml de la configuration web, je fait mon propre WSFederationAuthenticationModule remplaçant l'ancien, comme ceci:

public class CustomWSFederationAuthenticationModule : WSFederationAuthenticationModule 
{ 
    protected override void InitializePropertiesFromConfiguration(string serviceName) 
    { 
     this.Realm = "http://localhost:81/"; 
     this.Issuer = "https://acsnamespace.accesscontrol.windows.net/v2/wsfederation"; 
     this.RequireHttps = false; 
     this.PassiveRedirectEnabled = true; 
    } 
} 

Et la partie importante du web.config:

<modules runAllManagedModulesForAllRequests="true"> 
    <add name="WSFederationAuthenticationModule" type="CustomModuleLocation.CustomWSFederationAuthenticationModule, CustomModuleLocation" preCondition="managedHandler"/> 
    <add name="SessionAuthenticationModule" type="Microsoft.IdentityModel.Web.SessionAuthenticationModule, Microsoft.IdentityModel, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" preCondition="managedHandler" /> 
</modules> 

également la section federatedAuthentication du XML est supprimé entirel y.

+1

A travaillé comme un charme dans mon monde. Je vous remercie! –

1

Oui, FedUtil le fait. C'est un utilitaire fourni avec le SDK WIF (Windows Identity Foundation) et vous pouvez l'appeler depuis Visual Studio.

http://msdn.microsoft.com/en-us/library/ee517285.aspx

http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=4451

EDIT: j'ai mal compris votre question. FedUtil est un utilitaire qui configure votre web.config pour vous. Si à la place vous voulez configurer votre application en code, c'est aussi possible. La documentation WIF sur MSDN doit démontrer comment faire:

http://msdn.microsoft.com/en-us/library/ee766446.aspx

+0

La deuxième chose est plus ce que je cherchais. J'ai trouvé cette page sur les gestionnaires de jetons personnalisés: http://msdn.microsoft.com/en-us/library/ee517261.aspx pour être très utile. –

Questions connexes