簡體   English   中英

iOS:如何建立安全的HTTPS連接以傳遞憑據?

[英]iOS: How to make a secure HTTPS connection to pass credentials?

我正在創建我的第一個iPad應用程序。 我有一個Web應用程序,我想要以RESTful方式進行身份驗證並從中提取數據。

如果您在瀏覽器中打開URL( https://myapp.com/auth/login ),您將獲得一個表單來輸入您的用戶名和密碼。 我以為我可以在請求的發布數據中設置登錄憑據並提交數據。

該站點使用HTTPS進行登錄,因此憑據不會通過Internet以純文本形式傳遞。

如何建立安全的HTTPS連接以傳遞憑據? 請記住我是否已登錄以備將來使用? 做這個的最好方式是什么?

進一步更新,2013年10月

雖然當時我寫了這個答案,ASIHTTPRequest得到了廣泛的支持,但現在不再是這樣了。 不建議用於新項目 - 而是直接使用NSURLConnection,或使用AFNetworking。

使用AFNetworking,有一個[httpClient setAuthorizationHeaderWithUsername:username password:password]; 用於http身份驗證的方法,以及創建POST樣式表單同樣容易 - 請參閱AFNetworking Post Request


原始答案:

很多人使用ASIHTTPRequest類來處理iPhone / iPad上的http和https,因為它有很多有用的功能,使用內置類來實現很困難或耗時:

http://allseeing-i.com/ASIHTTPRequest/

從最簡單的層面開始,您將從以下內容開始:

  NSURL *url = [NSURL URLWithString:@"http://allseeing-i.com"];
  ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];

  [request startSynchronous];
  NSError *error = [request error];
  if (!error) {
      NSString *response = [request responseString];
      NSLog(@"response = %@", response);
  }

如果您正在使用HTTP身份驗證,ASIHTTPRequest將自動提示用戶輸入用戶名和密碼。

如果您正在使用其他形式的身份驗證,您可能需要自己請求用戶輸入用戶名和密碼,並將其作為POST值或自定義http標頭提交,然后響應可能包含JSON中的令牌或XML響應,或者它可以設置cookie。

如果您添加有關身份驗證方案如何工作的更多詳細信息,我可以更具體一些。

更新

根據更新,要模擬POST表單,您只需添加以下行:

[request addPostValue:usernameString forKey:@"username"];
[request addPostValue:passwordString forKey:@"password"];

您還需要更改創建請求的方式,而不是:

  ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];

做:

  ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];

(我也忘記在上面提到它,我之前提到的代碼是使用同步請求,所以你想用異步代碼替換它,以避免在你證明它工作時阻止UI。)

這里有一個iphone的JSON框架:

http://code.google.com/p/json-framework/

這對我很有用,並且很容易與ASIHTTPRequest一起使用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM