2012-09-19 17 views
6

Estoy asegurando mi Windows 8 a la conexión de servicio WCF alojado en Windows Azure mediante SSL. Estoy interesado en verificar que el usuario esté usando mi aplicación de Windows 8 y no solo algún 'hacker' usando Fiddler.Azure ACS 2.0 con cuenta de Microsoft en Windows 8

Obviamente no puedo almacenar un nombre de usuario y contraseña dentro del código C# y en esta situación me gustaría evitar pedirle al usuario un nombre de usuario y contraseña cada vez que use la aplicación (o alguna vez) .

He echado un vistazo a Azure ACS pero parece que solo es para inicio de sesión único y el usuario tendrá que ingresar el nombre de usuario y la contraseña cada vez.

Hay de todos modos:

  • Usar la cuenta de Microsoft por defecto (que habrán entrado en la mayoría de los usuarios cuando la instalación de Windows 8) con ACS?
  • Encripte y almacene los datos de inicio de sesión del usuario para evitar que el usuario tenga que ingresar los detalles de inicio de sesión todo el tiempo?

Gracias!

+1

Dado que su aplicación está en Windows 8 y desea utilizar la cuenta de Microsoft, ¿ha considerado usar el Live SDK directamente? Michael Crump tiene un artículo sobre la integración de Live SDK con su aplicación WinRT en http://www.silverlightshow.net/items/Using-the-Live-SDK-in-Windows-8-XAML-C-Metro-Applications.aspx –

Respuesta

2

Acerca de su requisito "Estoy interesado en verificar que el usuario esté usando mi aplicación Windows 8 y no solo algún 'hacker' usando Fiddler.", No estoy seguro de qué tan profundo trataría de proteger su aplicación como si otros quiero probar consumir tu aplicación de manera diferente, encontrarán su camino y si crees que usar ACS o LiveSDK agrega seguridad, no lo creo.

Los servicios ACS o LiveSDK son formas de autenticar a un usuario específico y luego permitirle usar su aplicación. Una vez que el token de autenticación se entrega a su aplicación sobre un usuario específico y no tiene forma de guardar y volver a verificar esa información, no hay diferencia entre tener una autenticación basada en ACS/LiveSDK en su aplicación o no tenerla. Estos servicios basados ​​en oAuth son solo una forma de autenticar al usuario, sin embargo, necesitaría escribir una capa adicional del código para proporcionar un servicio específico para el usuario.

No importa si usa ACS/oAuth/o su propio servicio de membresía, el usuario tendrá que ingresar el nombre de usuario y la contraseña para autenticarse ocasionalmente. Según el tiempo y el tipo de inicio de sesión, puede mantener al usuario activo durante x período de tiempo como sesión en vivo, sin embargo, la sesión caducará y el usuario tendrá que ingresar el nombre de usuario y la contraseña. Almacenar el nombre de usuario y la contraseña localmente para evitar ingresar credenciales nuevamente no es un buen diseño de aplicación.

Ahora, acerca de su primera pregunta, debería usar LiveSDK (no Azure ACS) para autenticar usuarios de Live (Hotmail, Live, Skydrive y Outlook) porque en Windows 8 la mayoría de los servicios usan esta ID, por lo que usa uno de esto ayudará a su aplicación a ser parte del mismo ecosistema. Puede usar this latest doc para usar Live SDK en su aplicación. Si usa Live SDK en su aplicación Windows 8 y el usuario usa la misma identificación en vivo para su otra aplicación en Windows 8 e inicia sesión antes de su aplicación, su aplicación ya tendrá una sesión en vivo para usarla. Depende de Live ID y la configuración de la aplicación .

Acerca de su segunda pregunta "Encripte y almacene los datos de inicio de sesión del usuario para evitar que el usuario tenga que ingresar detalles de inicio de sesión cada vez?" No estoy seguro de por qué lo necesitas. En primer lugar, ningún servicio de OAuth le proporcionará credenciales de inicio de sesión de usuario, además del nombre de usuario, que podrá guardar para verificar si el usuario vuelve a visitar y que puede usar para asegurarse de que es un usuario adecuado. Debe necesitar almacenar esta información en la nube y, una vez autenticada, haga lo que desee.

+0

Básicamente, no hay manera de que pueda verificar que alguien esté usando mi aplicación, porque al final del día mi paquete XAP es accesible para cualquiera que lo desee. Los paquetes de la aplicación Windows Phone y Windows 8 ahora están encriptados, pero parece que la gente ya lo ha pirateado. http://forum.mobilism.org/viewtopic.php?f=1073&t=386304. ¿No hay forma de verificar que alguien esté usando mi aplicación no modificada? – user1567095

+1

Usted trae un muy buen punto desafortunadamente este no es un foro para el debate de tales escenarios. Como mencioné, el hecho es que si alguien (1% o menos) quiere usar su aplicación de otro modo, encontrarán la manera de que sea usted quien decida qué% de energía/recursos necesita gastar en este aspecto. – AvkashChauhan

+0

¡Gracias! Echaré un vistazo y veré lo que puedo hacer. ¿Sabes dónde podría discutir esto por favor? – user1567095

2

Eche un vistazo a esta muestra de la tienda de credenciales para las aplicaciones de estilo moderno de Windows 8: http://code.msdn.microsoft.com/windowsapps/PasswordVault-f01be74a. No es Azure ACS, pero debería ayudarlo a resolver su problema. PasswordVault es una nueva API (Windows.Security.Credentials.PasswordVault) basada en las características de identificación que vimos introducida en .NET 3. Le permite almacenar de forma segura las credenciales de las aplicaciones remotas en el sistema operativo, en un almacén protegido, y acceder de forma dinámica dentro de ellas su aplicación. El usuario permanece en completo control de la tienda y puede eliminar los datos utilizando el panel de control si lo desea. Actualmente, esta es la forma en que la aplicación más moderna son los datos persistentes, como los tokens OAuth para llamadas de servicio remoto como Twitter.

Esto solo funcionará para identidades de terceros. Si desea utilizar la cuenta de Microsoft en su lugar, siga las instrucciones anteriores y eche un vistazo al LiveSDK.

Cuestiones relacionadas