八,使用Alamofire進行使用者認證
1,Alamofire支援如下幾種認證(Authentication)
本文講解使用 Alamofire 進行 HTTP Basic 驗證。
2,HTTP Basic認證介紹
(1)HTTP Basic認證是允許HTTP伺服器對WEB瀏覽器進行使用者身份證的方法。
(2)當一個用戶端向HTTP伺服器進行資料請求時,用戶端會接收到HTTP伺服器的身份認證要求,這時用戶端會提示使用者輸入使用者名稱及密碼,然後將使用者名稱及密碼以BASE64加密。並於每次請求資料時,將密文附加於要求標頭(Request Header)中。
(3)HTTP伺服器在每次收到請求包後,根據協議取得用戶端附加的使用者資訊(BASE64加密的使用者名稱和密碼),解開請求包,對使用者名稱及密碼進行驗證,如果使用者名稱及密碼正確,則根據用戶端請求,返回用戶端所需要的資料。否則,返回錯誤碼或重新要求用戶端提供使用者名稱及密碼。
3,HTTP Basic認證的使用情境
HTTP基本認證只提供簡單的使用者驗證功能,優點是使用簡單,適合於對安全性要求不高的系統或裝置中。
比如:路由器的配置頁面就常使用HTTP Basic認證。(瀏覽器輸入路由器ip地址,如192.168.1.1,這時就會彈出個使用者密碼輸入框進行許可權驗證。)
4,HTTP Basic認證的缺點
(1)沒有靈活可靠的認證策略,如無法提供域(domain或realm)認證功能。
(2)BASE64 的加密強度非常低。當然,HTTP基本認證系統也可以與SSL或者Kerberos結合,實現安全效能較高(相對)的認證系統。
5,服務端代碼
為了測試Alamofire的認證功能,我們首先要在服務端建立個帶有認證的頁面用於測試。這裡以PHP為例:
<?php
//HTTP Basic認證
function authenticate()
{
header('WWW-Authenticate: Basic realm=""');
header('HTTP/1.0 401 Unauthorized');
echo "請輸入正確的使用者名稱和密碼";
exit;
}
if (!isset($_SERVER['PHP_AUTH_USER']) ||
addslashes($_SERVER['PHP_AUTH_USER'])!= 'hangge' ||
addslashes($_SERVER['PHP_AUTH_PW'])!= '123')
{
//認證失敗
authenticate();
}
else
{
//認證成功
echo "歡迎您: {$_SERVER['PHP_AUTH_USER']}<br />";
echo "目前時間:".date('h:i:s');
//authenticate(); //重新開始
}
?>
使用瀏覽器訪問這個authenticate.php頁面,則會彈出對話方塊要求輸入使用者名稱和密碼:
如果輸入正確的使用者名稱(hangge)和密碼(123)則返回正常的資料,否則返回錯誤資訊並需要繼續輸入:
6,用戶端代碼
使用Alamofire進行認證:
let user = "hangge"
let password = "123"
Alamofire.request(.GET, "http://www.hangge.com/authenticate.php")
.authenticate(user: user, password: password)
.responseString { response in
// debugPrint(response)
print(response.result.value)
}
從控制台列印的訊息可以看出,認證通過,並成功擷取到資料:
原文出自:www.hangge.com 轉載請保留原文連結:http://www.hangge.com/blog/cache/detail_973.html