2016-02-12 126 views
2

我向我的應用程序添加了生產證書,它運行良好。但是現在我想在進行任何API調用之前驗證身份。我希望能夠在使用用戶名和密碼進行POST之前驗證服務器。這樣我可以預先防止用戶。在發出任何請求之前驗證服務器身份

有沒有辦法做到這一點,或者我應該只是請求服務器爲此目的創建一個公共方法?

回答

1

我想你所問的問題是:「AFNetworking是否有內置的自動檢測和驗證代碼?」,答案是「據我所知,沒有。」這就讓你看到手動選項,就像你在你的問題中指出的那樣。

浮現在腦海中的一些選項:

如果您的服務器和服務器端應用程序支持它,你可以做一個HEADOPTIONS HTTPS請求驗證發佈數據之前服務器的安全連接。請注意,它會增加網絡流量,因此在慢速網絡連接時,它可能會給用戶體驗增加可感知的延遲。您可以通過緩存結果並在後臺不時執行網絡檢查來緩解此問題。這些請求/響應對話所需的帶寬非常小,因爲它們通常只發送HTTP標頭,而不是有效負載。

這裏棘手的部分是「如果你的服務器和服務器端應用程序支持它」。這兩種方法都應該受現代服務器平臺的支持,但應用程序端點必須配置爲適當地響應這些方法。 (也就是說,服務器應用程序可能被配置爲僅響應POST請求,並拒絕其他所有內容。)

確切知道的唯一方法是嘗試,但確保您協調此方法的用法以確保你的服務器團隊知道這是你需要的用例。否則,您將冒着使用未被記錄的方法的風險,因爲他們不知道任何人正在使用它,將來有人會關閉它。

如果沒有這樣做,您當然可以按照您的建議做 - 請服務器應用程序創建一個公開的ping端點,該端點響應HTTP GET請求,並使用小的(或無)有效負載和同意的HTTP響應成功(200 OK是常見的)。這通常用於健康檢查,並且還具有讓用戶在發出請求之前警告用戶服務器報告健康問題(無論安全連接是否有效)的額外好處。

+0

我最喜歡的方法是沒有任何新的服務器要求。你指出了非常好的解決方案,絕對聽起來像是正確和明確的方法。現在我正在做的只是向主機發送一個請求,沒有結束點,沒有頭,就是這樣。它似乎工作。你看到有什麼問題嗎?我知道這是一個非常天真的方法,我不是安全專家。 – mdonati

+0

雖然'/'端點的安全性與您使用的任何API端點的安全性可能不同,但當您提出真正的請求時,您會發現它。更大的問題是您正在向'/'端點發出請求(並從中檢索數據)。例如,如果'/'返回代表該網站主頁的大型HTML文檔,那麼這可能是一個昂貴的操作。它可能工作,但它會擴展嗎?它在低帶寬環境中執行嗎?我不建議使用任何方法,無論您或我建議不聯繫服務所有者。 – Palpatim

+0

你在那裏做得非常好。我會請求服務器添加這樣的方法。這是應用程序如何工作的一般?我想知道這裏有什麼最佳實踐。 – mdonati