我有一个Wcf Web服务和一个调用服务方法的android应用程序。需要进行某种身份验证,最好使用用户名/密码组合。数据不敏感,但我只需要从android应用程序访问该服务。非常感谢任何帮助。
我有多种与此非常相似的方法
<OperationContract()> _
<WebInvoke(Method:="GET", ResponseFormat:=WebMessageFormat.Json, BodyStyle:=WebMessageBodyStyle.WrappedResponse, UriTemplate:="endpoint?busUnit={busUnit}")> _
Function lstJobsSVC(busUnit As String) As List(Of JobsView)
然后我在服务中实现如下方法
Public Function lstJobsSVC(busUnit As String) As List(Of JobsView) Implements IService1.lstJobsSVC
Dim entities As New RemoteTimeEntities()
WebOperationContext.Current.OutgoingResponse.ContentType = "application/json; charset=utf-8"
Return entities.lstJobs(busUnit).ToList
End Function
然后在android
URL json = new URL("http://localhost/json/Service1.svc/"+ "functions endpoint";
HttpURLConnection jc = (HttpURLConnection) json.openConnection();
BufferedReader reader = new BufferedReader(new InputStreamReader(jc.getInputStream()));
readLine = reader.readLine();
JSONObject jsonResponse = new JSONObject(readLine);
JSONArray jsonArray = jsonResponse.getJSONArray("get json array name");
现在所有这些代码都运行良好我只是不明白如何实现两者之间可用的身份验证。
答案 0 :(得分:1)
我假设你让呼叫本身正常工作。如果是这样,验证客户端的最简单(但足够安全)的方法是:
此方法要求SSL连接完全安全(以防止窃听/重放攻击)
如果您需要将数据限制为仅限Android应用,则需要使用仅由服务器和客户端应用程序都知道的AES密钥加密有效负载。仅使用CBC或CTR模式。
如果需要,您可以将两种方法结合使用。但请记住,安全性是一个非常棘手的问题,我所描述的方法只是“非常好”。如果您不确切知道自己在做什么,请不要在应用程序中放置机密信息。