RESTサービスを使用してデータベースにアクセスしてユーザーをログインさせるセキュリティ上の問題がありますが、動作していますが、パスワードが何らかの形で暗号化されていないため、 。これは私のコードです:RESTベースのサービスでアカウント情報を非表示にするにはどうすればよいですか?
まず、要求を送信するコード:
private void validateUser(String user, String pass)
{
String URL = "http://myserviceserver/MyService.svc";
AlertDialog popup;
try{
HttpGet request = new HttpGet(URL + "/Validate" + "/" + user + "/" + pass);
request.setHeader("Accept", "application/json");
request.setHeader("Content-type", "application/json");
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpResponse response = httpClient.execute(request);
HttpEntity responseEntity = response.getEntity();
// Read response data into buffer
char[] buffer = new char[(int)responseEntity.getContentLength()];
InputStream stream = responseEntity.getContent();
InputStreamReader reader = new InputStreamReader(stream);
reader.read(buffer);
stream.close();
String resultado = new String(buffer);
if(resultado.contains("true"))
{
popup = createAlertDialog("Message", "User Validated", "OK");
popup.show();
}
else
{
popup = createAlertDialog("Message", "User NOT Validated", "OK");
popup.show();
}
}
catch(Exception e)
{
}
}
今、サーバ側から、これは私のサービスインタフェースである:
今[ServiceContract]
public interface IMyService
{
[OperationContract]
[WebInvoke(Method = "GET", UriTemplate = "Create/{user}/{pass}/{email}")]
bool CreateNewAccount(string user, string pass, string email);
[OperationContract]
[WebInvoke(Method = "GET", UriTemplate = "Validate/{user}/{pass}")]
bool ValidateUser(string user, string pass);
}
、これはのように動作します魅力はありますが、それが得られるほど安全ではありませんが、今は単にhttp://myserviceserver/MyService.svc/Validate/user/passwordにリクエストしてログインしているので、送信された情報をどのように隠すことができるのか分かりません。
すべてのヘルプはapreciatedされます:)
認証用にWCFに組み込まれている機能を使用しないのはなぜですか?そうすれば、ヘッダーやものでHTTPクライアント全体を再実装する必要はなく、WCFを使用してwsHttpを使用するように構成するだけです。 – CodeCaster