none
Proteger servicios WCF de accesos no autorizados desde WP7 RRS feed

Respuestas

  • Buenas Jesus!

    Lo que te voy a contar, creo que funciona en WP7, pero no lo he probado.

    En WCF puedes usar sesiones, con esto puedes indicar metodos que inician la sesion (un login por ejemplo) metodos que la terminan (un logout) y metodos intermedios (comprar el libro) si llamas a un metodo intermedio sin haber iniciado la sesion, te devuelve una excepción.

    Esta es una forma, además, lo recomendable sería que al hacer login devuelvas un token o un Guid que internamente guardes junto con el user y la ultima hora de actividad, en cualquier otra llamada pides este token y compruebas que no sea antiguo, cuando haces logout eliminas el token de la bd y posteriores llamadas ya no serían validas. (creo que con aspnet_membership provider puedes hacer esto ultimo).

    Te he dejado un ejemplo de usar sessions aquí:

    http://cid-fd100135b82f3364.office.live.com/self.aspx/.Public/ejemplos/WCFSessions.zip

    No creo que te de problemas con WP7, pero algo importante es que el binding a usar no puede ser basichttp, tiene que ser al menos wshttp. En principio debería poder usarse con WP7 pero no lo he probado :(

    Un abrazo, espero que te funcione!


    MCTS .NET Framework 3.5 Windows Forms Application Development
    MCTS .NET Framework 3.5 Windows Presentation Foundation
    Visita mi Blog en Geeks.ms
    Sigueme en Twitter
    • Propuesto como respuesta Bazookao lunes, 21 de marzo de 2011 16:50
    • Marcado como respuesta Jesús Bosch miércoles, 23 de marzo de 2011 8:28
    viernes, 18 de marzo de 2011 6:58
    Moderador

Todas las respuestas

  • Buenas Jesus

    A que te refieres exactamente con protección?


    MCTS .NET Framework 3.5 Windows Forms Application Development
    MCTS .NET Framework 3.5 Windows Presentation Foundation
    Visita mi Blog en Geeks.ms
    Sigueme en Twitter
    miércoles, 16 de marzo de 2011 16:00
    Moderador
  • No me he explicado lo suficiente :P

    Me refiero a estrategias de protección que "garanticen" que no se puede llamar al servicio desde cualquier sitio, y que quien lo llame tiene la autorización para ello.

    Imagina que en el servicio tengo una operación que se llama: "ComprarLibro(int id, int cantidad, bool pagado)". La operación me la he inventado ahora mismo eh, esto sería muy bestia, pero para el ejemplo vale. Imagina que en este método me ponen el id=1, cantidad=50, y pagado=true, con una llamada al servicio no autorizada (es decir, que el usuario no ha pagado), con alguna especie de "hack".

    A lo mejor tendría que preguntar en un foro más específico de WCF, pero creo que quizá existen estrategias específicas para WP.

     

    Gracias!


    Jesús Bosch Aiguadé
    MSP - MCPD
    www.plungeinteractive.com
    http://geeks.ms/blogs/jbosch
    jueves, 17 de marzo de 2011 7:53
  • Lo de evitar que alguien lo llame no creo que puedas. Pero para validar que la llamada es buena puedes hacer que todos los servicios tienen que pasar un user y un pass. O que tengan que pasar un token que se recibe al llamar primero al metodo Login.

     

    Seguro que hay ideas mejores de todas formas :)


    Vicente Cartas Espinel - MVP XNA/DirectX

    Twitter - VicenteCartas

    Blog about C# and XNA Development

    Blog about Role Playing Games

    jueves, 17 de marzo de 2011 16:05
  • Buenas Jesus!

    Lo que te voy a contar, creo que funciona en WP7, pero no lo he probado.

    En WCF puedes usar sesiones, con esto puedes indicar metodos que inician la sesion (un login por ejemplo) metodos que la terminan (un logout) y metodos intermedios (comprar el libro) si llamas a un metodo intermedio sin haber iniciado la sesion, te devuelve una excepción.

    Esta es una forma, además, lo recomendable sería que al hacer login devuelvas un token o un Guid que internamente guardes junto con el user y la ultima hora de actividad, en cualquier otra llamada pides este token y compruebas que no sea antiguo, cuando haces logout eliminas el token de la bd y posteriores llamadas ya no serían validas. (creo que con aspnet_membership provider puedes hacer esto ultimo).

    Te he dejado un ejemplo de usar sessions aquí:

    http://cid-fd100135b82f3364.office.live.com/self.aspx/.Public/ejemplos/WCFSessions.zip

    No creo que te de problemas con WP7, pero algo importante es que el binding a usar no puede ser basichttp, tiene que ser al menos wshttp. En principio debería poder usarse con WP7 pero no lo he probado :(

    Un abrazo, espero que te funcione!


    MCTS .NET Framework 3.5 Windows Forms Application Development
    MCTS .NET Framework 3.5 Windows Presentation Foundation
    Visita mi Blog en Geeks.ms
    Sigueme en Twitter
    • Propuesto como respuesta Bazookao lunes, 21 de marzo de 2011 16:50
    • Marcado como respuesta Jesús Bosch miércoles, 23 de marzo de 2011 8:28
    viernes, 18 de marzo de 2011 6:58
    Moderador
  • mala pinta no tiene, aunque me extraña que no haya nada específico para wp7. Voy a probar y si eso investigo un poco más.

     

    Saludos


    Jesús Bosch Aiguadé
    MSP - MCPD
    www.plungeinteractive.com
    http://geeks.ms/blogs/jbosch
    Twitter: @jboschaiguade
    miércoles, 23 de marzo de 2011 8:28