Scambio sicuro di dati sicuro tra il servizio scritto su .NET e un'app per client iOS

2

Ho un servizio scritto su .NET che funziona su un server aziendale. Ha progettato di fare una cosa molto semplice, ricevere una richiesta tramite pipe denominate WCF da un altro servizio che lavora localmente sullo stesso server, elaborarlo e inviare una risposta attraverso pipe con nome. Richiedi una risposta sono solo un testo in formato XML abbastanza piccolo.

E ora ho bisogno di accoppiarlo in qualche modo con la nostra applicazione iOS interna per fare la stessa cosa ma con una connessione remota tramite internet. Non ho molta esperienza con uno sviluppo di Objective-C per iOS e non sono sicuro di come procedere. Stavo pensando di aggiungere un endpoint TCP allo stesso servizio WCF ma poi non sono sicuro di quanto sarà affidabile e dovrò usare una sorta di crittografia "manualmente" su entrambe le estremità della connessione.

Posso estendere o modificare il codice di entrambi i client .NET server e Objective-C iOS, ma non sono sicuro di come garantire l'affidabilità e soprattutto la sicurezza del trasferimento dei dati tra server e client.

In questo momento sto valutando la possibilità di riscrivere la mia parte di servizio in un'app basata sul Web, poiché funziona comunque in base al principio di richiesta-risposta, ma quale sarebbe l'approccio migliore? Sarebbe possibile consumare un endpoint HTTPS WCF con un client iOS abbastanza efficace?

    
posta user3223738 15.07.2014 - 09:41
fonte

3 risposte

2

Dovresti essere in grado di consumare un endpoint HTTPS nella tua app iOS, ma non posso darti più informazioni dato che non ho esperienza con Objective-C (anche se ho lavorato su un progetto in cui uno del team i membri avevano un compito simile).

Per quanto riguarda il servizio WCF, potrebbe non essere necessario riscriverlo: decora la tua interfaccia con gli attributi [WebInvoke] / [WebGet] . Distribuisci un endpoint TCP se ne hai veramente bisogno, ma spingere i dati su HTTP dovrebbe funzionare bene, soprattutto dal momento che fornirai payload di testo compatto.

    
risposta data 15.07.2014 - 11:52
fonte
1

Probabilmente staresti meglio semplicemente modificando il tuo servizio WCF in un servizio API web. L'iOS parla in modo molto efficace HTTP e fare HTTP è un problema con WCF.

    
risposta data 14.08.2014 - 15:04
fonte
0

L'unico endpoint interoperabile supportato da WCF sono quelli http (cioè SOAP) e di questi, vorrei evitare l'opzione wshttpbinding in quanto non interagisce realmente con i client SOAP non Microsoft. (ci sono altre domande su questo, fidatevi di me. basicHttpBinding è quello che volete).

Da quel momento, stai praticamente facendo chiamate SOAP 1.1 in un webservice. È possibile configurare il servizio WCF per l'ascolto su 2 endpoint, uno per i client interni e l'altro per quelli esterni. Utilizzare una delle opzioni di sicurezza sull'endpoint (probabilmente TransportCredentialsOnly opzione in quanto iOS non supporterà tutte le Opzioni di sicurezza solo per Windows come NTLM che puoi usare). Fare chiamate al servizio web dovrebbe essere banale con iOS.

(ah, quick google mostra che ora esiste un'opzione webHttpBinding che espone il tuo servizio come server http basato su REST, questa è una scelta molto migliore di SOAP gonfio e mal definito. Lo userei ora).

    
risposta data 14.08.2014 - 13:08
fonte

Leggi altre domande sui tag