2012-09-19 17 views
6

Sto fissando il mio Windows 8 alla connessione del servizio WCF ospitato da Windows Azure tramite SSL. Sono interessato a verificare che l'utente stia usando la mia app per Windows 8 e non solo alcuni "hacker" che usano Fiddler.Azure ACS 2.0 con account Microsoft su Windows 8

Ovviamente non posso memorizzare un nome utente e una password all'interno del codice C# e in questa situazione vorrei davvero evitare di chiedere all'utente un nome utente e una password ogni volta che usano l'applicazione (o sempre per quella questione) .

Ho dato un'occhiata a Azure ACS ma sembra che sia per solo accesso singolo e l'utente dovrà inserire il nome utente e la password ogni volta.

C'è comunque da:

  • Utilizzare il Microsoft account predefinito (che saranno entrati la maggior parte degli utenti quando l'installazione di Windows 8) con ACS?
  • Criptare e memorizzare i dettagli di accesso dell'utente per evitare che l'utente debba inserire i dettagli di accesso ogni volta?

Grazie!

+1

Poiché la tua app è su Windows 8 e stai cercando di utilizzare l'account Microsoft, hai preso in considerazione l'utilizzo diretto di Live SDK? Michael Crump ha un articolo sull'integrazione di Live SDK con la tua applicazione WinRT su http://www.silverlightshow.net/items/Using-the-Live-SDK-in-Windows-8-XAML-C-Metro-Applications.aspx –

risposta

2

Informazioni sul tuo requisito "Sono interessato a verificare che l'utente stia usando la mia app per Windows 8 e non solo un" hacker "usando Fiddler.", Non sono sicuro di quanto profondi cercheresti di proteggere la tua applicazione come se fosse voglio provare a consumare la tua applicazione in modo diverso, troverà la loro strada e se pensi che usare ACS o LiveSDK aggiunga sicurezza, io non la penso così.

I servizi ACS o LiveSDK sono modi per autenticare un utente specifico e quindi consentire loro di utilizzare l'applicazione. Una volta che il token di autenticazione viene fornito alla tua applicazione su un utente specifico e non hai un modo per salvare e verificare nuovamente tali informazioni, non c'è alcuna differenza tra l'autenticazione basata su ACS/LiveSDK nella tua applicazione o la mancata. Questi servizi basati su oAuth sono solo un modo per autenticare l'utente, tuttavia è necessario scrivere un ulteriore livello del codice per fornire un servizio specifico per l'utente.

Non importa se si utilizza ACS/oAuth/o il proprio servizio di appartenenza, l'utente dovrà inserire nome utente e password per ottenere l'autenticazione di volta in volta. In base al tempo di accesso e al tipo, è possibile mantenere l'utente attivo per x quantità di tempo come sessione live, tuttavia la sessione scadrà e l'utente dovrà inserire nome utente e password. Memorizzare localmente nome utente e password per evitare di immettere nuovamente le credenziali non è un buon progetto applicativo.

Ora sulla tua prima domanda dovresti usare LiveSDK (non Azure ACS) per autenticare gli utenti Live (Hotmail, Live, Skydrive e Outlook) perché in Windows 8, la maggior parte dei servizi utilizza questi ID, quindi usa uno dei questi aiuteranno la tua applicazione a far parte dello stesso ecosistema. È possibile utilizzare this latest doc per utilizzare Live SDK nella propria applicazione. Se utilizzerai Live SDK nell'applicazione Windows 8 e l'utente che utilizza lo stesso ID live per l'altra applicazione su Windows 8 e accedi prima dell'applicazione, l'applicazione disporrà già di una sessione live per utilizzarla in base a Live ID e alle impostazioni dell'applicazione .

Informazioni sulla seconda domanda "Criptare e memorizzare i dettagli di accesso dell'utente per impedire all'utente di inserire i dettagli di accesso ogni volta?" Non sono sicuro del perché ne hai bisogno. Prima di tutto nessun servizio oAuth fornirà credenziali di accesso dell'utente oltre al nome utente che è possibile salvare per verificare l'utente se visita di nuovo e che si può usare per assicurarsi che sia un utente appropriato. Devi aver bisogno di memorizzare queste informazioni su cloud e quindi, una volta autenticato, fai quello che vuoi.

+0

Quindi, in sostanza, non posso verificare che qualcuno stia utilizzando la mia app perché alla fine della giornata il mio pacchetto XAP è accessibile a chiunque lo desideri. I pacchetti di app di Windows Phone e Windows 8 sono ora crittografati, ma sembra che la gente l'abbia già hackerato. http://forum.mobilism.org/viewtopic.php?f=1073&t=386304. Non c'è modo di verificare che qualcuno stia usando la mia applicazione non modificata? – user1567095

+1

Tu porti un punto molto buono, purtroppo questo non è un forum per discutere tali scenari. Come ho detto, il fatto è che se qualcuno (1% o meno) desidera utilizzare l'applicazione in un altro modo, troverà un modo per cui è tu che devi decidere quale percentuale di energia/risorse hai bisogno di spendere in questo senso. – AvkashChauhan

+0

Grazie! Darò un'occhiata e vedrò cosa posso fare Sai dovunque potrei discuterne per favore? – user1567095

2

Dai un'occhiata a questo esempio di archivio di credenziali per le applicazioni in stile moderno di Windows 8 - http://code.msdn.microsoft.com/windowsapps/PasswordVault-f01be74a. Non è Azure ACS, ma dovrebbe aiutare a risolvere il tuo problema. PasswordVault è una nuova API (Windows.Security.Credentials.PasswordVault) basata sulle funzionalità di identificazione che abbiamo visto introdotte in .NET 3. Consente di archiviare in modo sicuro le credenziali dell'applicazione remota nel sistema operativo, in un archivio protetto e di accedervi in ​​modo dinamico all'interno di la tua applicazione. L'utente mantiene il controllo completo dello store e può rimuovere i dati utilizzando il pannello di controllo, se lo desidera. Attualmente questo è il modo in cui la maggior parte delle applicazioni moderne sta conservando dati come i token OAuth per chiamate di servizi remoti come Twitter.

Questo funzionerà solo per identità di terzi. Se si desidera invece utilizzare l'account Microsoft, seguire le istruzioni sopra riportate e dare un'occhiata al LiveSDK.