设为首页 收藏本站
查看: 850|回复: 0

[经验分享] Android与IIS身份验证——基本验证

[复制链接]

尚未签到

发表于 2015-8-12 10:40:05 | 显示全部楼层 |阅读模式
  
   内容摘要
    前言
    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所示
DSC0000.jpg

图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所示。
DSC0001.jpg

图2.1

  
  三、IIS部署
  首先、添加一个网站,如图3.1所示。
DSC0002.jpg

如图3.1

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

图3.2

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

图3.3

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

图3.4

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

图3.5

DSC0007.jpg

图3.6

  
  从图中我们可以发现,浏览该网页时需要用户名和密码。我们输入了正确的用户名和密码后就可以登录这个页面了。
  
  四,运行效果。
  见图4.1和图4.2所示。
DSC0008.jpg

图4.1

DSC0009.jpg

图4.2

  
  
  代码下载
  出处:http://www.iyunv.com/GoodHelper/archive/2011/08/17/android_iis_01.html
  作者:刘冬.NET
  欢迎转载,但须保留版权。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-97835-1-1.html 上篇帖子: IIS相关优化 下篇帖子: 蛙蛙推荐:自己写个IIS玩-协议解析篇
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表