2011-11-22 2 views
1

JSON 데이터를 가져 와서 반환하는 WCF 서비스가 있습니다. 이 서비스를 호출하는 Android 모바일 앱WCF 서비스 (JSON) 및 Android 클라이언트 - 메시지 보안

  • 가능한 경우 어떻게이 두 메시지를 암호화합니까?
  • 그렇지 않은 경우 맞춤 암호화를 수행하는 방법은 무엇입니까?

편집 : 여기

는 서버와 클라이언트 측에 대한 추가 정보입니다.

이 서비스는 다음 같습니다

서비스 인터페이스 :

<ServiceContract()> 
Public Interface ITest 

    <OperationContract()> 
    <WebInvoke(Method:="POST", RequestFormat:=WebMessageFormat.Json, ResponseFormat:=WebMessageFormat.Json, BodyStyle:=WebMessageBodyStyle.WrappedRequest)> 
    Function Test(header As RequestHeader, body As TestRequestResponse) As Boolean 

End Interface 

서비스 코드

<AspNetCompatibilityRequirements(RequirementsMode:=AspNetCompatibilityRequirementsMode.Allowed)> 
<ServiceBehavior(ConcurrencyMode:=ConcurrencyMode.Multiple, InstanceContextMode:=InstanceContextMode.Single)> 
Public Class TestService 
    Implements ITest 

    Public Function Test(header As RequestHeader, body As TestRequestResponse) As Boolean Implements ITest.Test 

     Return True 

    End Function 

End Class 

의 Web.config

<system.serviceModel> 
    <services> 
     <service behaviorConfiguration="RMWS.TestBehavior" name="RMWS.TestService"> 
      <endpoint address="Test" binding="webHttpBinding" behaviorConfiguration="WebBehavior" bindingConfiguration="WebBinding" contract="RMWS.ITest" /> 
     </service> 
    </services> 
    <bindings> 
     <webHttpBinding> 
     <binding name="WebBinding"/> 
     </webHttpBinding> 
    </bindings> 
    <behaviors> 
     <endpointBehaviors> 
     <behavior name="WebBehavior"> 
      <webHttp/> 
     </behavior> 
     </endpointBehaviors> 
     <serviceBehaviors> 
     <behavior name="RMWS.TestBehavior"> 
      <serviceMetadata httpGetEnabled="true" /> 
      <serviceDebug includeExceptionDetailInFaults="true" httpHelpPageEnabled="false" /> 
     </behavior> 
     </serviceBehaviors> 
    </behaviors> 
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" /> 
</system.serviceModel> 

클라이언트 호출

클라이언트 호출은 현재 테스트 용으로 만 자바 스크립트로 만들어진. 앞으로 클라이언트는 안드로이드 앱이 될 것이지만 일반적인 생각은 같습니다.

$.ajax({ 
    type: "POST", 
    url: "http://localhost/RMWS/TestService.svc/Test/Test", 
    contentType: "application/json", 
    dataType: "json", 
    data: JSON.stringify(somedata), 
    success: function (data) 
    { 
     ... 
    }, 
    error: function (httpRequest, textStatus, errorThrown) 
    { 
     alert(textStatus + ": " + errorThrown); 
    } 
}); 

편집 2 :

나는 그것이 SSL을 쉽게 수행 할 수 있습니다 알고 있습니다. 그러나 우리 회사에서는 성능과 트래픽이 너무 비싸므로 SSL을 사용하지 않고 대신 다른 암호화를 사용하려고합니다. 가능하다면 민감한 정보가 응답에 포함되지 않으므로 요청 만 인코딩 될 수 있습니다.

편집 3 : 요셉의 대답을 제외한

다른 의견?

+0

질문을 업데이트하고 더 자세한 정보를 제공하십시오. 고객이 귀하의 서비스에 어떻게 연결되어 있습니까? 무엇을 시도 했습니까? –

+0

@Terry Donaghe : 질문의 업데이트를 참조하십시오 – Kamarey

답변

1

JSON을 계속 사용하려면 SSL이 가장 좋습니다. JSON을 난처하게 할 수는 있지만 더 이상 JSON이 아니며 어리석은 것이며 여전히 관심이있는 사용자가 액세스 할 수 있습니다.

가장 좋은 방법은 장치에 바이너리를 보내는 것입니다. pgp를 사용하여 암호화 할 수는 있지만 개인 키를 안드로이드 앱에 저장하는 것이 문제가 될 수 있습니다.

SSL이 가장 안전합니다.

+0

SSL의 다른 점과 트래픽/성능의 다른 암호화를 아십니까? 이 차이점이 SSL 이외의 다른 것을 구현하는 것입니까? – Kamarey

+0

차이점은 귀하의 시간이 얼마나 가치가 있는지입니다. SSL은 알려진 솔루션이지만, 알려지지 않은 수량의 클라이언트 서버를 다시 작성해야합니다. –

+0

당신과 동의하십시오. 하지만 가치가 있는지 알고 싶다면 SSL보다 다른 시간을 얼마나 많이 사용해야하는지 이해하고 싶습니다. 나는 서비스 보안 전문가가 아니므로 1 시간 내에 완료 될 수 있거나 일주일이 걸릴 것입니다. – Kamarey

관련 문제