2015-11-12 7 views
5

J'ai une application ASP.NET appelant un service WCF. Dans l'application ASP.NET, je fais un appel à ADFS pour effectuer l'authentification et je peux voir toutes les revendications de l'utilisateur dans CurrentPrincipal. Ensuite, j'effectue l'appel du service WCF (wsHttpBinding), mais la liste des revendications est vide.WCF/WIF - Dois-je trouver des revendications dans le backend?

Quelle pourrait être la raison?

+2

WS2007FédérationHttpBinding? – nzpcmad

Répondre

3

Si je ne me trompe pas il y a différentes manières d'obtenir des réclamations dans la WCF.

Thread.CurrentPrincipal - Simple et facile à utiliser mais nécessitant un réglage dans votre configuration, ce qui est le plus négligé.

<behaviors> 
    <serviceBehaviors> 
    <behavior name="Test.Services.WifBehavior"> 
     <serviceCredentials useIdentityConfiguration="true" /> 
     <!---Set principalPermissionMode to always to pass the ClaimsIdentity info to the Thread.CurrentPrincipal--> 
     <serviceAuthorization principalPermissionMode="Always"/> 
    </behavior> 
    <serviceBehaviors> 
</behaviors> 

OperationContext.Current.ClaimsPrincipal - Je ne me souviens pas si cela a besoin d'une certaine configuration, mais je suppose que vous pouvez l'obtenir directement de méthode invoquée.

OperationContext.ServiceSecurityContext.AuthorizationContext.ClaimSets - Create a Custom Authorization Manager for a Service et ont besoin d'ajouter dans la configuration.

Notez que j'ai utilisé Windows Identity Foundation (WIF).