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

ios - 在我重新启动应用程序之前,iOS 中基于证书的客户端身份验证不起作用

当我从服务器下载 p12 文件并将其设置为 NSURLCredential 时,如下所示:

//提取IdentityAndTrust方法

{

}

当我这样做时,它不起作用。但是,如果我关闭并打开应用程序,它的工作正常。有人知道如何解决这个问题吗?

谢谢!

0 投票
1 回答
1078 浏览

ios - AFNetworking 3.0 迁移

现在我正在使用AFNetworking 2.0,我想将它迁移到AFNetworking 3.0. 我已将文件添加到项目中,它显示了许多错误。我检查了迁移指南。我的疑问是如何NSURLCredentialAFNetworking 3.0.4. 现在我正在使用,

AFNetworking 3不支持AFHTTPRequestOperationAFHTTPRequestOperationManager。请帮我。

0 投票
0 回答
161 浏览

ios - 观看操作系统:NSUrlSession 凭据缓存

我想从 iPhone 和 Apple Watch 实现“注销和新登录”功能。

  • 注销后,我可以从 iPhone 中清除凭据(使用 NSURLConnection 因为它的旧代码),但不能从 Apple Watch 中清除(使用 NSURLSession)。

  • 我在 Apple Watch 中使用 NSURLSession,因为它是 Apple 推荐的新功能。

  • 我尝试使用 ephemeralSessionConfiguration 从 Apple Watch 连接服务器(Watch OS 2.0、Swift 2.0、iOS 9.0 >> )。我调用了:'invalidateAndCancel' 和resetWithCompletionHandler API 来清除凭据并且行为没有变化。

  • 只有一次它会触发身份验证质询。之后,它总是使用我第一次提供的凭据。所以我无法使用新的登录用户凭据。

  • 我试图获取凭据存储和缓存以清除凭据。但是共享凭证存储和缓存是空的。

问题

我的方法有什么问题吗?还是 Watch OS 2.0 的错误?

0 投票
1 回答
628 浏览

ios - NSURLSession 的身份验证挑战:NSURLCredentialStorage vs Keychain

我正在尝试学习如何使用NSURLSession. 我以前从未做过与安全网络相关的任何事情。我一直在阅读Apple 的Authentication Challenges and TLS Chain ValidationNSURLSession Programming Guide部分,并在其中提到了该对象NSURLCredentialStorage,但在其参考资料中,我没有进一步描述我为什么要使用它。

NSURLCredentialStorage和 和有什么不一样Keychain?安全处理用户名和密码的最佳方法是什么?我一直在寻找一个身份验证挑战的例子,无论NSURLSession是成功还是失败,有人能告诉我在哪里可以找到一个吗?NSURLCredentialStorageKeychain

提前致谢

0 投票
0 回答
285 浏览

ios - iOS 如何从 NSURLCredentialStorage 中正确检索凭据?

我遇到了无法从中检索凭据的问题NSURLCredentialStorage,即使我在保存后立即尝试此操作。

凭证格式正确并被服务器接受,它被设置为永久的。我有调试代码来打印并确认凭证具有身份和证书。但是,当我尝试从凭证存储中检索它时,调试会将所有值打印为 Null,而凭证本身不为 null。

如何从 NSURLCredentialStorage 正确检索凭据?

这是保存前后的日志

0 投票
6 回答
23789 浏览

ios - 使用 Alamofire 进行基本身份验证

使用 Basic Auth 进行身份验证时遇到问题。我正在使用符合URLRequestConvertible协议的标准枚举来构造我的请求。问题是,当我像这样在枚举中手动设置授权标头时:

我总是收到 401 未经授权的响应。但是authenticate,如果我像这样使用回调设置密码:

它正确地进行了身份验证。我希望能够在符合的枚举中手动设置它,URLRequestConvertible而不是在authenticate.

我知道它正在使用NSURLCredential引擎盖下的身份验证挑战,但我希望能够手动设置它。

这是我的URLRequestConvertible实现:

0 投票
1 回答
117 浏览

ios - 调用 didReceiveChallenge 方法时应用程序冻结

我正在尝试使用自签名证书连接到 API 进行测试。

这是我的 didReceiveChallenge() 方法:

第一个在登录方法中调用,如下所示:

每当调用 didReceiveChallenge 时,应用程序都会完全冻结。有没有解决的办法?我试过使用 GCD 来调用登录方法,但没有任何乐趣。有没有办法解决?

0 投票
1 回答
688 浏览

ios - NSURLCredentialStorage setDefaultCredential:不适用于 [NSURLSession sharedSession]

我很难过:我的应用程序需要连接到使用 HTTPS 的自签名证书并需要客户端身份验证的服务器。更糟糕的是,我实际上需要 iOS 媒体播放器来连接到该服务器,所以我已经完全按照 Apple 的说明进行操作:

但它只是行不通。所以我尝试手动向服务器发出请求:

我得到的只是这个错误:

现在,如果我设置自己的 NSURLSession 并使用 URLSession:didReceiveChallenge:completionHandler: 回调:

接着:

请注意我是如何使用 [session.configuration.URLCredentialStorage defaultCredentialForProtectionSpace:challenge.protectionSpace] 的,这是我认为 NSURLSession 的默认实现在收到身份验证质询时所做的。

这适用于这个特定的连接!这证明了凭证是可以的,并且在默认的 NSURLCredentialStorage 中正确注册为默认凭证。

但是围绕 didReceiveChallenge: 回调的任何解决方案都不好,因为我无法控制媒体播放器正在使用哪个 NSURLSession。

我已经尝试过CustomHTTPProtocol hack,但这也不起作用。

有什么建议吗?我已经浏览了所有类似的帖子,我找不到解决方案。这篇文章非常接近,但接受的答案对我来说没有意义,并且明显与 Apple 的文档相矛盾。

0 投票
1 回答
131 浏览

ios - 当 iOS 设备被锁定时,如何启用对 NSURLCredentials 的访问?

我正在使用 Swagger 生成的 Swift 客户端,用于NSURLCredentials向服务器进行身份验证。我正在使用持久性类型.Permanent 我的应用程序在后台与服务器通信并且工作正常,除非我锁定手机(我在日志中看到 401 错误)。我相信NSURLCredential手机锁定时无法访问钥匙串。我遇到了一些关于使用kSecAttrAccessibleAfterFirstUnlock. 我一直无法弄清楚如何使用NSURLCredential. 有谁知道这是否以及如何配置?

0 投票
1 回答
850 浏览

ios - 如何更改 NSURLSession 的凭据

我有以下问题:我正在向服务器发出请求,该服务器使用 HTTP 基本身份验证并给了我

  • 如果我不发送身份验证,则为 401
  • 如果我发送无效身份验证,则为 401
  • 如果我发送有效的身份验证但该用户禁止该资源,则为 403。

收到 401 时,我的 NSURLSession 非常友好,可以通过

然后我可以在其中修改发送到服务器的凭据。

但是,当收到 403 时,我遇到了问题。从那里我无法让会话使用除用于获取 403 之外的任何其他凭据。在 403 上,不询问代表(这没关系,它不是 401),所以我如何控制哪些凭据是将来为那个保护空间发送?即使手动清空共享的 NSURLCredentialStorage 和/或直接在那里设置正确的凭据也无济于事:

在此调用之后,正确的凭据是唯一在 NSURLCredentialStorage 中列出的凭据 - 但是下一次对服务器的调用仍将包含旧凭据,这将不可避免地导致另一个 403。

即使使用其reset(completionHandler: @escaping () -> Void)方法重置会话也无济于事。

TLDR ; 如何更改 NSURLSession 在给定保护域成功使用它们后继续使用的凭据?