[转载]Android与IIS身份验证——基本验证

[转载]Android与IIS身份验证——基本验证 – 刘冬.NET – 博客园.

内容摘要

前言

1.服务器端

2.Android客户端

3.IIS部署

4.运行效果

Android移动项目开发中,访问服务器时,为了简洁方便,我们经常使用http协议来传递JSON格式的数据。然而有些项目需要有一定的 安全性,如使用Android客户端登陆到MIS系统。虽然我们是通过Android手机客户端的登陆Activity中登陆到系统的,但是略懂电脑的黑 客是能够跳过登陆Activity,从而直接进入系统的。这样,会造成一些由于系统的不安全所带来的麻烦。建立一种防止黑客强行登录的身份验证模式尤为重 要。此时,系统的身份验证成为阻挡黑客登陆的一道屏障。那么,怎样实现一个身份验证呢?让我们以IIS为宿主,一步一步的实现身份验证吧。

一、ASP.NET服务器端

首先,我们使用VS2010创建一个web项目(可以是WebForms,也可以是MVC,我这里使用的是ASP.NET MVC项目)。图1.1所示

图1.1

然后,在HomeController的Index Action中输入:登陆成功。

[HandleError]
public class HomeController : Controller
{
public ActionResult Index()
{
return Content(登陆成功);
}
}

二、Android客户端

首先,创建一个Android项目,并新建一个MainActivity类。

接着,编写一个访问IIS服务器的类。

package ld.com.authorize;

import java.io.BufferedReader;
import java.io.InputStreamReader;

import org.apache.http.HttpResponse;
import org.apache.http.auth.AuthScope;
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.BasicCredentialsProvider;
import org.apache.http.impl.client.DefaultHttpClient;

import android.util.Log;

public abstract class HttpHelper {

private final static String TAG = HttpHelper;

public static String invoke() {
String result
= null;
try {
final String url = http://192.168.1.104:180/;

HttpPost httpPost = new HttpPost(url);
DefaultHttpClient httpClient
= new DefaultHttpClient();

//基本身份验证
BasicCredentialsProvider bcp = new BasicCredentialsProvider();
String userName
= liudong;
String password
= 123;
bcp.setCredentials(AuthScope.ANY,
new UsernamePasswordCredentials(
userName, password));
httpClient.setCredentialsProvider(bcp);

HttpResponse httpResponse = httpClient.execute(httpPost);

StringBuilder builder = new StringBuilder();
BufferedReader reader
= new BufferedReader(new InputStreamReader(
httpResponse.getEntity().getContent()));
for (String s = reader.readLine(); s != null; s = reader.readLine()) {
builder.append(s);
}
result
= builder.toString();
Log.d(TAG,
result is ( + result + ));
}
catch (Exception e) {
Log.e(TAG, e.toString());
}
Log.d(TAG,
over);
return result;
}
}

注意的是,我这里用户名和密码分别是:liudong和123。

然后,修改layout文件:main.xml

<?xml version=”1.0″ encoding=”utf-8″?>
<LinearLayout xmlns:android=”http://schemas.android.com/apk/res/android”
android:orientation
=”vertical” android:layout_width=”fill_parent”
android:layout_height
=”fill_parent”>
<TextView android:layout_width=”fill_parent”
android:layout_height
=”wrap_content” android:text=”@string/hello” />
<Button android:text=”身份码验证” android:id=”@+id/btnPassword”
android:layout_width
=”fill_parent” android:layout_height=”wrap_content”></Button>
</LinearLayout>

最后,修改MainActivity。

package ld.com.authorize;

import android.app.Activity;
import android.app.ProgressDialog;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends Activity {

private final String TAG = this.getClass().getSimpleName();

private Button btnPassword;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

btnPassword = (Button) this.findViewById(R.id.btnPassword);

setInvokeOnClick();
}

private void setInvokeOnClick() {
btnPassword.setOnClickListener(
new OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
AsyncTask<Void, Void, String> task = new AsyncTask<Void, Void, String>() {

private ProgressDialog progressDialog;

@Override
protected void onPostExecute(String result) {
// TODO Auto-generated method stub
// super.onPostExecute(result);
progressDialog.cancel();
Toast.makeText(MainActivity.
this, result,
Toast.LENGTH_SHORT).show();

Log.d(TAG, result);
}

@Override
protected void onPreExecute() {
// TODO Auto-generated method stub
super.onPreExecute();
progressDialog
= new ProgressDialog(MainActivity.this);
progressDialog
.setProgressStyle(ProgressDialog.STYLE_SPINNER);
progressDialog.setTitle(
调用中,请稍后…);
progressDialog.show();
}

@Override
protected String doInBackground(Void… arg0) {
// TODO Auto-generated method stub
try {
return HttpHelper.invoke();
}
catch (Exception e) {
return null;
}
}

};
task.execute();
}
});
}
}

设置访问权限为:<uses-permission android:name=”android.permission.INTERNET” />

运行模拟器的效果如图2.1所示。

图2.1

三、IIS部署

首先、添加一个网站,如图3.1所示。

如图3.1

接着,在进入计算机管理–>本地用户和组–>用户,新建一个用户,如图3.2所示。

图3.2

然后,设置IIS的身份验证(图3.3所示)。

图3.3

设置其身份验证模式为:基本验证或Window身份s验证(图3.4所示)。

图3.4

最后,我们在浏览器中输入网址进行验证,验证结果见图3.5和图3.6。

图3.5

图3.6

从图中我们可以发现,浏览该网页时需要用户名和密码。我们输入了正确的用户名和密码后就可以登录这个页面了。

四,运行效果。

见图4.1和图4.2所示。

图4.1

图4.2

代码下载

出处:http://www.cnblogs.com/GoodHelper/archive/2011/08/17/android_iis_01.html

作者:刘冬.NET

欢迎转载,但须保留版权。

赞(0) 打赏
分享到: 更多 (0)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏