0

我正在尝试拦截链接并登录用户,然后将它们发送到 Safari 并在没有身份验证请求的情况下加载页面。

所以,到目前为止我在做什么......

我为我的应用注册了一个自定义 URL 方案。称它为“myhttp”。现在有人点击 myhttp://secured.com/foo 的链接(比如来自电子邮件),我的应用程序就会运行。这些应用程序从某个地方提取用户的凭据,并使用NSURLConnection. NSURLConectionDelegate工具connection:didReceiveAuthenticationChallenge和我很好地浏览了安全层。接下来我尝试使用UIApplication openURL启动 Safari 的方法加载相同的 url,但我仍然得到身份验证检查。

我认为这会起作用,因为我阅读了 Apple 文档中的以下内容。

Credentials stored in persistent storage are kept in the user’s keychain and shared among all apps.

当我检查时,NSURLCredentialStorage我可以看到我刚刚使用的凭据存储在那里,其中包含正确的信息、保护空间、方案等,但显然我做错了什么,或者当我切换到 Safari 时我不会遇到身份验证挑战.

所以问题是,我是否只是在某个地方搞砸了,忘记了一些重要的部分,还是我走错了路?

4

1 回答 1

1

这在 iOS 8 之前是不可能的,但现在有了Shared Web Credentials功能。

为您的应用添加com.apple.developer.associated-domains权利。此权利必须包括您要与之共享凭据的所有域。

apple-app-site-association文件添加到您的网站。此文件必须包含站点要与之共享凭据的所有应用程序的应用程序标识符,并且必须正确签名。

安装应用程序后,系统会下载并验证其每个关联域的站点关联文件。如果验证成功,则应用与域关联。

SecAddSharedWebCredential应用程序可以通过调用和与任何关联域共享凭据 SecRequestSharedWebCredential

于 2015-03-11T16:26:27.723 回答