我試圖攔截鏈接並登錄一個用戶,然後將它們發送到Safari並使網頁加載時沒有驗證請求。如何使用Safari共享NSURLConnection憑證?
所以,我在做什麼,到目前爲止...
我註冊了我的應用程序自定義URL方案。稱它爲「myhttp」。現在有人點擊myhttp://secured.com/foo的鏈接(從電子郵件中說出)並運行我的應用程序。應用程序從某個地方抽取用戶的憑證,並用NSURLConnection
撥打實際URL。 NSURLConectionDelegate
執行connection:didReceiveAuthenticationChallenge
,我通過安全層導航罰款。接下來,我嘗試使用UIApplication
openURL
方法加載相同的URL來調出Safari,但我仍然收到驗證檢查。
我認爲這將工作,因爲我閱讀了蘋果文檔中的後續內容。
Credentials stored in persistent storage are kept in the user’s keychain and shared among all apps.
當我檢查NSURLCredentialStorage
我可以看到我只是用正確的信息,保護空間,方案等存儲在那裏的憑據,但很明顯,我做錯了什麼或者我不會當我切換到Safari時遇到身份驗證挑戰。
所以問題是,我是不是在某處沿線搞錯了,忘記了一些重要的位置,或者我是以這種錯誤的方式去做的?
只是爲了澄清爲什麼會出現這種情況,有關共享憑據的文檔中的註釋非常過時。它僅適用於OS X,不適用於iOS。在OS X中,鑰匙串是共享的,ACL限制哪些應用可以訪問每個項目。如果應用程序要求使用無法訪問的信用,操作系統會要求用戶提供許可。在iOS中,鑰匙串基本上是按應用程序(具有各種例外,例如鑰匙串訪問組)。 – dgatwood