Android與IIS身分識別驗證——基本驗證

來源:互聯網
上載者:User

 

 內容摘要

  前言

  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

  歡迎轉載,但須保留著作權。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.