2013-02-19 64 views
0

我有一個用php編寫的android和web服務。 android有一個認證系統,應用程序從該系統發送「用戶名」和「密碼」到web服務,它將返回用戶ID。然後,我使用用戶標識通過網絡服務請求其他信息。適用於Android和webservices的會話

根據良好的做法,上述方法是不安全的,我想到使用會話。但我不知道如何使用它們?你們可以給我一些從android到web服務請求更安全的例子嗎?

謝謝

回答

2

你有兩個主要選擇:

1傳達到你的Web服務在SSL在這種情況下,你可以發送用戶名/密碼以純文本格式,因爲它們將反正

加密

2 - 加密與服務器public key所以沒有人除了Web服務(誰擁有private key可以解密該消息)

如果您的用戶名/密碼希望整個通信是安全的(不僅僅是發送用戶名/密碼),你可以使用一個symmetric cipher算法(例如, AES),因爲asymmetric cipher算法(例如RSA)速度慢得多並消耗更多資源。

而且,不是說你需要將public keyDER格式轉換爲使用它的機器人,它可以用openssl

0

做你可以,如果你正在使用的HttpClient發送你試試這個

可以將其存儲在應用程序對象,並將其用於將來的請求

import android.app.Application; 
import org.apache.http.impl.client.DefaultHttpClient; 

public class AppObj extends Application 
{ 
    public static DefaultHttpClient davisimperialclient; 

} 

在你的登錄屏幕,必須創建一個HttpClient的

AppObj.davisimperialclient = new DefaultHttpClient(); 
     HttpPost localHttpPost = new HttpPost(ApplicationLinks.login); 
     try 
     { 
     ArrayList localArrayList = new ArrayList(2); 
     localArrayList.add(new BasicNameValuePair("username", this.name)); 
     localArrayList.add(new BasicNameValuePair("password", this.pass)); 
     localHttpPost.setEntity(new UrlEncodedFormEntity(localArrayList)); 
     String str = EntityUtils.toString(DavisImperialApp.davisimperialclient.execute(localHttpPost).getEntity()); 
     Log.e("error", str); 
     return str; 
     } 
     catch (Exception localException) 
     { 


     } 

如果登錄成功,你可以使用

AppObj.davisimperialclient 

作出其他請求

對象將存在,直到我們退出應用程序