none
atributo authorize de MVC en WCF? RRS feed

  • Pregunta

  • Hola.

    he desarrollado un servicio WCF el cual hospedo en IIS y que utiliza wsHttpBinding como enlace, sobre este utilizo seguridad en el encriptado el mensaje a través de un certificado x.509

    <security mode="Message">
     <message clientCredentialType="UserName"/>
    </security>
                
    en mi servicio WCF debo pedir las credenciales del cliente a fin que tenga acceso a la clase que expone las operaciones de mi servicio, no tengo problemas en el certificado ni en validar las credenciales, mi pregunta es si existe un atributo ([authorize] tal como existe en MVC) con el que pueda distinguir cada operación de mi clase a fin que digamos la clase tiene cuatro operaciones a exponer pero si entra el usuario jose solo puede tener acceso a dos o si entra el usuario elena sloo tienen acceso a uno o si entra el rol administrador puede manejarlas todas, existe un atributo como authorize de MVC para ser utilizado en WCF? podrian darme un ejemplo o un criterio de búsqueda por favor


    pabletoreto

    miércoles, 6 de enero de 2016 13:26

Respuestas

  • para los interesados: no existe un equivalente exacto del atributo Authorize de MVC en WCF pero si se puede hacer uso de la sealed class PrincipalPermission, les dejo unos ejemplos, el primero es útil cuando se validan credenciales utilizando un certificado x.509, deben especificar el nombre del certificado y el thumbprint, en los demas solo valida que pertenezca a un rol especifico y el ultimo que el nombre del usuario sea test

     [PrincipalPermission(SecurityAction.Demand,
        Name = "CN=paletto; ‎af00beafc46d14a4dffeb5c170d59b9596fb114e")]
            [PrincipalPermission(SecurityAction.Demand, Role = "wcfgroup")]
            [PrincipalPermission(SecurityAction.Demand, Role = @"lingonet\wcfgroup")]
            [PrincipalPermission(SecurityAction.Demand, Role = "Administrador")]
            [PrincipalPermission(SecurityAction.Demand, Name = "test")] 


    pabletoreto

    • Marcado como respuesta pabletoreto miércoles, 6 de enero de 2016 14:38
    miércoles, 6 de enero de 2016 14:37

Todas las respuestas

  • para los interesados: no existe un equivalente exacto del atributo Authorize de MVC en WCF pero si se puede hacer uso de la sealed class PrincipalPermission, les dejo unos ejemplos, el primero es útil cuando se validan credenciales utilizando un certificado x.509, deben especificar el nombre del certificado y el thumbprint, en los demas solo valida que pertenezca a un rol especifico y el ultimo que el nombre del usuario sea test

     [PrincipalPermission(SecurityAction.Demand,
        Name = "CN=paletto; ‎af00beafc46d14a4dffeb5c170d59b9596fb114e")]
            [PrincipalPermission(SecurityAction.Demand, Role = "wcfgroup")]
            [PrincipalPermission(SecurityAction.Demand, Role = @"lingonet\wcfgroup")]
            [PrincipalPermission(SecurityAction.Demand, Role = "Administrador")]
            [PrincipalPermission(SecurityAction.Demand, Name = "test")] 


    pabletoreto

    • Marcado como respuesta pabletoreto miércoles, 6 de enero de 2016 14:38
    miércoles, 6 de enero de 2016 14:37
  • hola

    >>no tengo problemas en el certificado ni en validar las credenciales

    como estas validando las credenciales ? o sea tienes la logica de validacion pero no las estas aplicando a los servicios

    creo que esto no lo realizas con atributo, sino desde la configuracion

    Autorización de usuarios para una API web en WCF o como hacer una gestión light de sesión en WCF

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    miércoles, 6 de enero de 2016 14:42