2011-11-21 13 views
5

Ho creato un servizio WCF che utilizza l'autenticazione di Windows e desidera impostarlo in modo che sia accessibile solo se l'utente si trova in un gruppo di Windows. Attualmente uso il seguente attributo nel codice per rendere questo accadaConsentire l'accesso a WCF in base a un gruppo impostato in web.config

[PrincipalPermission(SecurityAction.Demand, Role = "Domain\MyGroup")] 

problema è che devo farlo su ciascun metodo e compilare se voglio cambiare il gruppo. C'è un modo per impostare il gruppo che ha accesso nel file di configurazione e per i servizi nel suo complesso?

Ho provato quanto segue nel mio file di configurazione, ma questo non sembra funzionare

<security> 
    <authentication> 
     <windowsAuthentication authPersistSingleRequest="true" enabled="true"/> 
    </authentication> 
    <authorization> 
     <add accessType="Allow" roles="Domain\MyGroup" /> 
    </authorization> 
</security> 

risposta

1

Ok l'ho capito. Ho il file di configurazione impostato come il seguente

<security> 
    <authentication> 
    <windowsAuthentication enabled="true" /> 
    </authentication> 
    <authorization> 
    <remove users="*" roles="" verbs="" /> 
    <remove users="?" roles="" verbs="" /> 
    <add accessType="Deny" users="?" /> 
    <add accessType="Allow" roles="Domain\MyGroup" /> 
    </authorization> 
</security> 

ha avuto anche per impostare

<serviceHostingEnvironment aspNetCompatibilityEnabled="true" /> 

E sulla mia classe che implementa il contratto WCF

[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)] 

Credo che questo significa Im utilizzando ASP autenticazione piuttosto che WCF ma io lavoro per me

+0

Ciò comporta impatti significativi sulle prestazioni? – xr280xr

0

L'attributo PrincipalPermission è dalla funzionalità di protezione dall'accesso di codice .NET e non è correlato alla WCF. Un modo più flessibile per eseguire questa operazione se il servizio è ospitato in IIS è mostrato in questo WCF MSDN post. supporta anche diversi meccanismi di autenticazione personalizzati as described here.

+0

Stai confondendo l'autenticazione con l'autorizzazione. PrincipalPermissionAttribute riguarda quest'ultimo. Se è vero che questo attributo è parte di CAS, non hai risposto alla domanda. – xr280xr

Problemi correlati