2011-11-21 10 views
5

He creado un servicio WCF que usa la autenticación de Windows y me gustaría configurarlo para que solo pueda accederse si el usuario está en un grupo de Windows. Me Actualmente utilizo el siguiente atributo en el código para hacer que esto ocurraPermitir el acceso a WCF según un conjunto de grupos en web.config

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

problema con esto es que tengo que hacerlo en cada método y compilar si quiero cambiar el grupo. ¿Hay alguna manera para que pueda configurar el grupo que tiene acceso en el archivo de configuración y para los servicios como un todo?

He intentado el siguiente en mi archivo de configuración, pero esto no parece trabajar

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

Respuesta

1

Ok, lo he descubierto. Tengo el archivo de conjunto de configuración como la siguiente

<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> 

también tuvo que establecer

<serviceHostingEnvironment aspNetCompatibilityEnabled="true" /> 

Y en mi clase que implementa el contrato WCF

[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)] 

supongo que esto significa Im utilizando ASP Autenticación en lugar de WCF pero yo trabajo para mí

+0

¿Esto impone impactos de rendimiento significativos? – xr280xr

0

El atributo es PrincipalPermission de la funcionalidad de seguridad de acceso del código .NET y no está relacionado con WCF. Una forma más flexible de hacer esto si el servicio está alojado en IIS se muestra en este MSDN post. WCF también admite diferentes mecanismos de autenticación personalizados as described here.

+0

Está confundiendo la autenticación con la autorización. PrincipalPermissionAttribute se refiere a este último. Si bien es cierto que este atributo es parte de CAS, no has respondido realmente la pregunta. – xr280xr

Cuestiones relacionadas