2015-04-26 1 views
0

J'ai créé un STS en remplaçant SecurityTokenService et l'hébergeant à l'aide de WCF. J'ai également créé une partie de confiance et un client de test. Le client est redirigé avec succès vers le STS (le programme s'arrête si je mets un point d'arrêt dans la méthode GetOutputIdentity). Maintenant, je dois refuser l'accès à mon RP pour tous les utilisateurs sauf un rôle. Comment puis-je le faire? Son est mon configuraion:WCF refuse toute personne sans rôle spécifique à l'aide de STS personnalisé

protected override ClaimsIdentity GetOutputClaimsIdentity(ClaimsPrincipal principal, 
     RequestSecurityToken request, 
     Scope scope) 
    { 
     string authenticationType = principal.Identity.AuthenticationType; 

     var outputIdentity = new ClaimsIdentity(authenticationType); 

     outputIdentity.AddClaim(new Claim(ClaimTypes.Role, role)); 
     outputIdentity.AddClaim(new Claim(ClaimTypes.Name, userName)); 
     return outputIdentity; 
    } 

Invoquant la configuration du parti:

<customBinding> 
     <binding name="secureBinding"> 
      <security authenticationMode="IssuedToken" requireDerivedKeys="false" > 
      <issuedTokenParameters> 
       <issuer address="http://localhost:1318/Services/SecurityTokenService.svc"> 
       </issuer> 
       <issuerMetadata address="http://localhost:1318/Services/SecurityTokenService.svc/mex"></issuerMetadata> 
      </issuedTokenParameters> 
      </security> 
      <httpTransport></httpTransport> 
     </binding> 
     </customBinding> 

Répondre

0

Vous pouvez utiliser AuthorizationManager personnalisée pour valider chaque appel de RP. Cette classe fournit la méthode CheckAccess qui met en œuvre votre validation personnalisée en fonction des revendications entrantes.