问题标签 [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 投票
1 回答
1136 浏览

ios - 当应用程序在后台使用 UIApplicationLaunchOptionsLocationKey 启动时,NSURLCredentialStorage 不返回凭据

我的应用程序在用户登录或登录时存储用户的凭据。当应用程序启动时,我会检查didFinishLaunchingWithOptions我们是否存储了凭据。当通过点击 App Icon 或从 Xcode 启动它来启动应用程序时,这可以正常工作。

但是,当应用程序在后台被杀死并由于位置更改更新而被系统重新启动时,返回的凭据defaultCredentialForProtectionSpace为 nil。当我再次正常重新启动应用程序时,凭据又回来了。

所以当[launchOptions objectForKey:UIApplicationLaunchOptionsLocationKey]为真时,NSURLCredential返回的NSURLCredentialStorage是零;当它为假时,我们得到预期的凭证。

这是一些代码:

0 投票
1 回答
363 浏览

ios - 如何在 iOS 中删除用于 https 身份验证的 NSURLCredential 存储

每次收到每个 https 请求的响应后,我都需要删除 NSURLCredential 存储。在我的情况下没有发生这种情况。下面的方法只在第一次请求时执行,对于下一次请求它不会被调用。当我重新启动应用程序时,它会被调用。我在 SO 中尝试了很多建议,但没有帮助。我怎样才能解决这个问题?

0 投票
1 回答
471 浏览

objective-c - 进行 NTLM Web 服务调用的适当 NSURLConnection/Credential 模式是什么?

我有一个“传统”企业 iPad 应用程序,它需要在其生命周期内使用NTLM身份验证进行许多不同的 Web 服务调用。在启动应用程序时,我预计会从钥匙串中获取用户名和密码(应用程序会在第一次使用时保存,因为钥匙串没有用户名,然后在密码因以下原因而无法使用时更新更新)。

启动时,需要各种 Web 服务调用来获取应用程序的初始数据。然后,用户将看到一个选项卡式控制器来选择他们想要的功能,当然,这反过来会执行更多的 Web 服务调用。

我相信我有一种策略来处理通过自定义数据委托接收数据的每个类,如本 StackOverflow 答案中所述(如何从异步 NSURLConnection 返回到调用类?)。-(void)useCredential:(NSURLCredential *)credential forAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge但是,对于如何正确使用该功能,我仍然有些困惑。

在 didReceiveAuthenticationChallenge 中,我有这样的代码

由于我正在设置永久持久性,因此我希望不必在功能中不断传递用户名和密码。是否有一种模式用于最初设置用户的 NTLM 凭据(和/或检查它们是否已经存在),然后只使用“永久”凭据进行后续 Web 服务调用?

此外,作为次要问题/部分。在整个 Objective-C 应用程序中传递用户名/密码的适当/优雅方法是什么?我在考虑全局变量或单例实例(对于几个需要的变量来说,这似乎有点矫枉过正)。

0 投票
1 回答
655 浏览

ios - 具有 backgroundSessionConfiguration 的 NSURLSession 不能与用户证书一起使用

在使用后台会话配置时,我发现了一个关于 NSURLSession 的有线连接。我们在与服务器联系时使用自分配证书,一个工具:

使用 defaultSessionConfiguration 时效果很好,但是当我将会话配置更改为后台会话配置时,将循环调用此委托方法,不会调用任何其他委托方法,并且此请求将永远不会完成。

这是控制台输出:

2014-08-11 15:36:01.204 OneBox [1736:a413] ServerTrust: https://demo.mycompany.com/api/v1/files/351/1/9cc69106455d11599a08ed978fbdbe1d/contents 2014-08-11 15:36: 01.232 OneBox[1736:1413] ClientCert: https://demo.mycompany.com/api/v1/files/351/1/9cc69106455d11599a08ed978fbdbe1d/contents 2014-08-11 15:36:02.068 OneBox[1736:8c03] ServerTrust: https://demo.mycompany.com/api/v1/files/351/1/9cc69106455d11599a08ed978fbdbe1d/contents 2014-08-11 15:36:02.076 OneBox[1736:1413] ClientCert: https://demo.mycompany.com /api/v1/files/351/1/9cc69106455d11599a08ed978fbdbe1d/contents 2014-08-11 15:36:12.728 OneBox[1736:1413] ServerTrust: https://demo.mycompany.com/api/v1/files/351/ 1/9cc69106455d11599a08ed978fbdbe1d/内容 2014-08-11 15:36:12.735 OneBox[1736:1413] ClientCert: https://demo.mycompany.com/api/v1/files/351/1/9cc69106455d11599a08ed978fbdbe1d/contents

0 投票
4 回答
5474 浏览

ios - 无法使 HTTP 基本身份验证正常工作

我正在尝试调用使用 HTTP Basic Auth 的本地 Rest 服务。

根据我的要求,我得到以下信息:

发现:错误 - 未经授权
发现:原因 - 需要密码

这是我正在执行请求的函数。

有人可以给我一个提示吗?

0 投票
1 回答
520 浏览

ios - iOS 如何重置给定服务器的 NSURLCredential 或让我的应用忘记它曾经与该服务器通信?

我正在寻找一种方法来实现能够切换我的网络应用程序正在使用哪个 NSURLCredential 与给定服务器通信。

有没有办法让我“重置”给定服务器信任的 NSURLCredential ssl 凭据并强制整个握手过程使用不同的凭据集重复? 换句话说,我希望我的网络应用程序忘记它曾经与该服务器通信。

我认为下面的代码片段是检索我之前评估过的凭证的内容。

0 投票
1 回答
121 浏览

ios - 检查 NSURLCredential 是否存在

我正在寻找一种方法来检查具体的 NSURLCredential 是否存储在我的应用程序中。我正在尝试从 NSURLCredentialStorage 获取它,但我没有找到实现它的方法。不知道有没有办法检查?

谢谢。

0 投票
1 回答
440 浏览

ios - 如何与 Safari 共享 NSURLConnection 凭据?

我正在尝试拦截链接并登录用户,然后将它们发送到 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 时我不会遇到身份验证挑战.

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

0 投票
2 回答
2020 浏览

ios - 目标-c 清除 NSURLCredential - NSURLCredentialPersistenceForSession

NSURLCredentials在这种方法中使用:

现在我希望在注销方法中清除 NSURLCredentials,如下所示:

我该怎么做呢?我应该重置 NSURLCredentials 还是要清除它们?

更新

我找到了这个解决方案:

从这里开始:在请求时使用 NSURLCredentialPersistenceForSession 然后在注销时清除凭据仍然保留证书

这是最好的方法吗?我只存储了 1 个凭据。这段代码也在这一行给了我一个警告:

这是警告...如何删除此警告?

更新

好的,所以我有 3 个方法:UserLogin、Login 和 LogoutButtonPressed

UserLogin:我正在使用 AFNetworking 使用 NSURLCredential 连接到 Windows Authenticated URL,如上所示:

此方法由 Login 方法调用:

我正在尝试使用 LogoutButtonPressed 清除我的会话:

我从这个例子中得到了这个代码:http ://www.springenwerk.com/2008/11/i-am-currently-building-iphone.html

现在我遇到的问题是,当我触发注销按钮然后转到没有凭据的情况下触发登录方法时,我仍然可以登录,如果我注销然后等待 2-3 分钟并在没有凭据的情况下登录我无法登录。为什么会这样,这几乎就像信用仍然被保存了一样。请帮忙。

更新

我试图清除 LogoutButtonPressed 中的缓存、cookie 和凭据:

它仍然没有工作。

0 投票
1 回答
1059 浏览

ios - AFNetworking 与 NSURLCredential

我有 3 个方法,UserLogin、Login 和 LogoutButtonPressed:

UserLogin:我正在使用 AFNetworking 使用 NSURLCredential 连接到 Windows Authenticated URL:

此方法由 Login 方法调用:

我正在尝试使用 LogoutButtonPressed 清除我的会话:

我从这个例子中得到了这个代码:http ://www.springenwerk.com/2008/11/i-am-currently-building-iphone.html

现在我遇到的问题是,当我触发注销按钮然后转到没有凭据的情况下触发登录方法时,我仍然可以登录,如果我注销然后等待 2-3 分钟并在没有凭据的情况下登录我无法登录。为什么会这样,这几乎就像信用仍然被保存了一样。请帮忙。

更新

我试图清除 LogoutButtonPressed 中的缓存、cookie 和凭据:

它仍然没有工作。

我还尝试清除 AuthorizationHeader 和 cancelingAllOperations 仍然没有,注销后我仍然能够登录错误或没有凭据: