2008-10-23 19 views

Respuesta

0

queremos usar Windows Integrated Security. Si deshabilita el acceso anónimo en IIS y solo permite ventanas, parece que no puede usar wsHttpBinding con WCF sin usar algún modo de seguridad (por ejemplo, seguridad de transprot que requiere ssl).

Solo queremos usar la autenticación de Windows, no necesariamente queremos usar ssl para la seguridad del transporte.

Estaba un poco sorprendido de que esto no fuera posible de la caja (como parecía ser confirmado por mi enlace) ya que parecería un escenario bastante común para las aplicaciones internas.

No deseamos degradar a basicHttpBinding, que solo admitiría la autenticación de Windows.

3

tiene razón, afaik en el escenario que describe wsHttpBinding requiere que usemos la pila de seguridad WCF interna. Así que lo que normalmente hacer es

  • dejar habilitado el acceso anónimo
  • crear un serviceBehavior con < serviceAuthorization principalPermissionMode = "UseWindowsGroups"/>
  • anotar cada aplicación concreta de un método de servicio mediante el PrincipalPermissionAttribute, que es una herramienta bastante poderosa con muchas opciones diferentes para controlar el acceso

¿Sería esa una solución aceptable para usted o hay otras cosas para colaborar? nsider?

Ejemplo básica:

public class TestService : ITestService 
{ 
    [PrincipalPermission(SecurityAction.Demand, Name = "testdomain\\administrator")] 
    public string DoWork() 
    { 
    return "Hello World " + Thread.CurrentPrincipal.Identity.Name; 
    } 
} 

    <system.serviceModel> 
    <behaviors> 
     <serviceBehaviors> 
     <behavior name="WcfSecurity.Www.TestServiceBehavior"> 
      <serviceMetadata httpGetEnabled="true" /> 
      <serviceDebug includeExceptionDetailInFaults="false" /> 
      <serviceAuthorization principalPermissionMode="UseWindowsGroups" /> 
     </behavior> 
     </serviceBehaviors> 
    </behaviors> 
    <services> 
     <service behaviorConfiguration="WcfSecurity.Www.TestServiceBehavior" name="WcfSecurity.Www.TestService"> 
     <endpoint address="" binding="wsHttpBinding" contract="WcfSecurity.Www.ITestService" /> 
     <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" /> 
     </service> 
    </services>  
    </system.serviceModel> 
Cuestiones relacionadas