问题标签 [nsurlcredential]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
4082 浏览

iphone - didReceiveAuthenticationChallenge 导致 EXC_BAD_ACCESS

如果网站不需要身份验证,我的代码可以正常工作,如果需要,它会在打印“创建凭据”后立即出现 EXC_BAD_ACCESS 错误。我没有发布任何东西,这段代码是直接从文档中复制而来的——知道有什么问题吗?

0 投票
2 回答
11833 浏览

iphone - iPhone:如何使用 NSURLCredential 获得对 HTTPS Web 服务的基本身份验证

我正在尝试使用基本身份验证调用 https Web 服务(RESTful)。如果我将凭据放在 url 本身中,它可以正常工作,但我宁愿将其添加到请求中,这样密码就不会出现,例如在异常中。

我正在使用以下代码:

但它不起作用。委托方法被调用,我可以在didReceiveAuthenticationChallenge那里添加一个凭证,但理想情况下我会随请求一起发送它。

有任何想法吗?

0 投票
1 回答
3850 浏览

iphone - NSURLConnection、NSURLRequest、不受信任的证书和用户身份验证

大家早上好,

我一直在尝试编写一个从需要身份验证的远程 Web 服务执行一些 GET 的应用程序。我的主要问题是这些远程服务器中的大多数(并且有很多)没有有效的证书。我有代码来接受无效的证书和代码来用正确的 uname & pass 来响应挑战(如下)。我遇到的问题是让两个人一起玩。我似乎找不到一种方法来发送挑战,也找不到NSURLCredential正确链接回调的方法。当我试图链接他们时,我无法让我NSURLRequest打电话didReceiveAuthenticationChallenge两次。

任何想法将不胜感激!

验证码...

0 投票
1 回答
6451 浏览

iphone - NSURLCredentialStorage 和客户端证书认证

从我在 MPMoviewPlayerController 文档中看到的内容来看,可以将 NSURLCredentialStorage 设置为 NSURLConnection 身份验证挑战的替代方案(这对于从 URL 加载资源但抽象 NSURLConnection 并且不提供处理身份验证的委托的更高级别的类很有用挑战)。这似乎类似于在浏览器中安装证书并在某个地址需要时自动选择所需的证书。

为了测试这一点,我设置了自己的证书颁发机构、服务器证书和客户端证书(一个 .p12 文件)。我已经设置了一个 https 服务器,并使用浏览器从另一台机器成功测试了客户端证书。

现在我需要将证书集成到我的 iPhone 应用程序中。

我已经捆绑了 p12 文件,并在应用程序启动时这样做:

extractIdentityAndTrust 函数只是从“iOS 的证书、密钥和信任服务任务”文档页面复制而来(我只是用自己的证书密码替换了证书密码)。

据我所知,身份和证书加载得很好。如果我在控制台中打印 NSURLCredential 对象,我会得到如下信息:(<NSURLCredential: 0x140ea0>: (null)我不知道这是否是一个好兆头)。

但是,当我执行 setDefaultCredential 时,应用程序在没有提供太多信息的情况下崩溃。

堆栈跟踪看起来像这样:

在我看来,凭证中没有设置一些东西。

关于如何解决这个问题的任何想法?

编辑:

只是为了测试,我通过从 Mail 中打开文件在 iPhone 上安装了证书。我可以通过 Safari 通过 https 访问页面,但不能通过我的应用程序。

唯一有效的是,如果我打开一个 NSURLConnection 到受保护域上的任何资源,响应 didReceiveAuthenticationChallenge(我在上面的代码中加载我的凭据,只是我将它直接发送到 NSURLAuthenticationChallenge 的发件人)然后访问这些东西我真的需要使用更高级别的课程。

0 投票
1 回答
3068 浏览

objective-c - NSURLCredential 和 NSURLConnection

一旦您使用使用 NSURLCredentialPersistenceForSession 的 NSURLConnection 设置 NSURLCredential,我一直在尝试寻找一种取消设置凭据的方法,但我找不到有效的解决方案。从 NSURLCredentialStorage 中删除 NSURLCredential 只会将其从存储中删除,而不是从 NSURLConnection 缓存中删除。我尝试关闭缓存,它仍然保留它。我需要它是 NSURLCredentialPersistenceForSession 因为我不希望它上传大数据然后取回你需要验证的消息然后用 NSURLConnection 验证然后重新发送大数据,我只想验证一次并发送大数据一次。我有办法在发送大数据之前通过检查一些属性进行身份验证,但这不允许我注销或重新请求身份验证。我正在编写一个 WebDav 客户端,只是为了让您了解我的立场,我需要取消设置凭据的原因是,如果有人在 WebDav 服务器上有多个帐户并且想要登录另一个帐户。我尝试查看 cookie 以查看它是否在那里设置了一些东西,但它没有。我知道这仅适用于会话,这意味着一旦您退出并重新启动应用程序,您就可以以其他用户身份登录。但这可能会让一些人感到困惑。我想过编写自己的身份验证系统,但我不知道这需要多长时间。吨。我知道这仅适用于会话,这意味着一旦您退出并重新启动应用程序,您就可以以其他用户身份登录。但这可能会让一些人感到困惑。我想过编写自己的身份验证系统,但我不知道这需要多长时间。吨。我知道这仅适用于会话,这意味着一旦您退出并重新启动应用程序,您就可以以其他用户身份登录。但这可能会让一些人感到困惑。我想过编写自己的身份验证系统,但我不知道这需要多长时间。

抱歉,如果上述消息太长,我只是确保我详细解释了所有内容,以便有人可以尝试帮助我提供有效的答案,而不是一个,去这里引导我尝试我尝试过的事情。

谢谢你的帮助,
壁虎先生。

更新:示例代码。

更新:我尝试删除凭据的代码。

0 投票
2 回答
1825 浏览

ios - NSURLCredential 是永久的吗?

我们的 iPhone 模拟器存在问题,这是由使用此行引起的:

当证书被授予挑战时,问题就出现了

所以现在当我们运行应用程序时,我们再也不会遇到身份验证挑战了,这很奇怪,即使我们将凭证更改为

总结一下:

通过使用 credentialpersistencepermanent,凭证以某种方式保存在某个地方,并自动用于访问我们需要对自己进行身份验证的任何地方。

因此,出于测试目的,我们真的很想删除这个持久的……凭证。

有什么想法吗?:)

0 投票
1 回答
938 浏览

cocoa - 在 NSURLCredential initWithTrust 方面需要帮助:

在过去的几个小时里,我一直在用头撞墙,在任何地方都找不到一丝解决方案。我正在开发一个应用程序来学习如何使用 JSON,所以我只是在构建一个简单的应用程序,起初它只是返回我在 GitHub 上的所有存储库的列表。我能够毫无问题地从 NSURLConnection 返回的数据中提取 JSON 响应,不幸的是,当我尝试访问需要身份验证的任何内容时,响应总是{ message = "Not Found"; } 如果我发送请求以获取有关我的用户名的公共信息,我会得到正确的回复所有正确的信息,所以我知道我正在与 api.github.com 成功沟通。首先开始我使用的请求:

- (void)connection:(NSURLConnection *)connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge被调用时,身份验证方法会返回NSURLAuthenticationMethodServerTrust(我觉得很奇怪,因为我觉得我应该提供用户名和密码才能登录)。根据 Apple 的文档,我需要NSURLCredential使用initWithTrust:. 我在谷歌上搜索了答案,最后找到了一些地方,说只是serverTrust从传入protectionSpaceNSURLAuthenticationChallenge那个中获取。这样做根本没有任何影响的迹象,实际上看起来我NSURLCredential的几乎什么都没有。

我还使用了更广泛的日志记录,表明它credential确实存在(起初我认为它根本没有被创建)但是它没有任何属性 set certificates: (null) hasPassword: 0 identity: (null) password: (null) 。我只能假设问题出在我的身份验证中,但我完全按照我找到的示例进行操作。我正在使用 Lion 的 GM 预览版,所以我想我可能发现了一个错误,或者 GitHub API 中存在一些错误,但考虑到我的技能水平,我发现我更有可能是一个正在寻找的白痴坐在我面前的答案。如果有人知道一个很好的指南,它实际上会引导您完成身份验证的所有步骤(最好是所有样式),而不是严重缺乏 Apple URL 加载指南,它只是说使用一种方法但没有说明在哪里SecTrustRef来自它将不胜感激。

0 投票
0 回答
1697 浏览

objective-c - NSURLCredentialPersistencePermanent 似乎不是永久性的?

我一直在尝试解决这个问题一段时间,但没有成功。诸如此处的这个问题或关于使用苹果和其他博客的身份验证的问题提供了一些启示,但并非全部。

我想解决的基本问题如下:

我通过使用 NSURLConnection 其代表和 NSURLCredential 与 NSURLProtectionSpace 和 NSURLCredentialStorage 成功地对我的服务器进行身份验证。但是,即使我将 NSURLCredential 的持久性设置为 NSURLCredentialPersistencePermanent,在第一次提供我的凭据之后,我还是会从服务器随机获取身份验证挑战(401,然后是 200)——难道不是这种情况,因为 NSURLCredentialPersistencePermanent 会永久持续吗?随机的事情是没有意义的。

有时它可以工作,随后对服务器的调用以 200 返回正常。然后它又没有,并且返回 200 的 401。Mike Abdullah 在这里很好地描述了这个过程。所以我的第一个猜测是,返回 401 身份验证并获得 200 的过程是标准程序,无法消除。但是有时我可以消除 401。所以我似乎错过了一些东西。

我发送的请求是一些 GET 和两个 POST。问题是一个 POST 正在上传大量数据。当得到 401 时,数据仍然会在验证后再次上传到 nirvana 中。

我的后备解决方案是防止在收到 401 时发送数据。我现在正在处理这个问题,这似乎很棘手,因为有时 401 没有像前面提到的那样返回。

如果这以任何方式无法理解,我会添加任何信息。我的猜测是要么我以错误的方式使用整个 NSURLCredential 东西,要么首先获得 401 然后 200 进行身份验证的方式是要走的路,因此无法消除。

我的代码摘录如下:

使用此设置,NSURLConnection 的代表都可以正确调用

任何输入表示赞赏!谢谢

编辑更新 01这似乎是一个已知问题,它已作为错误报告提交 - 很久以前 - 但尚未解决。NSURLConnection 似乎不支持“Expect: 100-continue”标头,老实说,这是一个主要的失望。我一直在这个问题上工作几个小时,只是为了发现现在我必须重做所有事情。有关详细信息,请参阅错误报告:http: //openradar.appspot.com/5188833

编辑更新 02我目前针对此问题的解决方法是在使用电影数据进行大量 HTTP POST 之前简单地进行身份验证。由于我还必须上传一些较小的 XML 文件,因此我将使用它的事先身份验证来上传电影。这对我来说仍然很难看,但我必须让事情继续下去......关于这个主题的任何输入/知道如何仍然受到赞赏。

0 投票
0 回答
479 浏览

objective-c - 无法从存储中删除 NSURLCredentials

从我的应用程序中删除帐户时,我正在尝试从存储中删除凭据。这是我正在使用的代码:

为所有正确的键和值调用删除部分,但在方法完成后,所有凭据仍然完好无损。这怎么可能?

我也尝试过设置新凭据,但似乎它们也没有被识别

0 投票
3 回答
5342 浏览

iphone - 从 UIWebView 清除凭据

我在这里做的是,获取一个具有身份验证的 URL。因此,我使用该功能

当它面临身份验证时,我提供一个 UIAlertView 来输入用户名和密码,如果用户输入正确,则调用此方法。

在这种方法中,我使登录窗口消失并进入详细视图。

当我想要注销功能时,问题就出现了。我想要的只是删除用户输入的凭据并再次获取该 URL,用于身份验证 = 目的。所以,我打电话给didReceiveAuthenticationChallenge

但是发生的情况是它直接进入didReceiveResponse方法而不询问任何内容。这里的问题是我无法清除凭据。你能帮我做这件事吗?

提前非常感谢!