应该如何处理 NSURLAuthenticationMethodXMobileMeAuthToken?
Posted
技术标签:
【中文标题】应该如何处理 NSURLAuthenticationMethodXMobileMeAuthToken?【英文标题】:How should one handle NSURLAuthenticationMethodXMobileMeAuthToken? 【发布时间】:2018-11-13 18:47:25 【问题描述】:我们使用NSURLSessionDataDelegate
并实现了以下委托方法:
- (void) URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge completionHandler:(void (^)(NSURLSessionAuthChallengeDisposition, NSURLCredential *))completionHandler ...
我们经常发现 iCloud 用户会收到NSURLAuthenticationMethodXMobileMeAuthToken
质询。发回拒绝不起作用(因为服务器不会尝试另一个挑战)并用
completionHandler(NSURLSessionAuthChallengeUseCredential, credential);
也不行。
我们应该如何处理这种身份验证质询类型?有人看过吗?
【问题讨论】:
与这些调用相关的 protectionSpace 是什么样的? 你试过用 NSURLSessionAuthChallengePerformDefaultHandling 和 nil 调用完成处理程序吗? 如何使用 NSURLSessionAuthChallengeRejectProtectionSpace 和 nil 作为凭证?如果是这样,您的委托是否应该使用下一个身份验证投影空间再次调用? 【参考方案1】:对于您未明确处理的任何保护空间,或您不理解的任何凭证类型,您通常应该使用NSURLSessionAuthChallengePerformDefaultHandling
(忽略凭证,但通常通过nil
)告诉操作系统来处理凭据,就好像您没有提供身份验证委托方法一样。
【讨论】:
问题是 - 我已经尝试了这个和其他任何东西的所有组合,但它不会消失。就在最近,我想我知道这可能是什么。本质上,由于重定向,请求中可能缺少“授权”标头,因此,当该标头不存在时,iCloud 会发送 MobileMe 令牌身份验证挑战,仅此而已。拦截重定向然后重新添加授权标头似乎已经“修复”了这个问题。 你在打什么服务器? cadav.icloud.com 啊。现在这是有道理的。我假设您在初始请求期间手动注入了 auth 标头?那么是的,正确的解决方案是在获得重定向时也更改NSURLRequest
,以确保身份验证标头也包含在其中。以上是关于应该如何处理 NSURLAuthenticationMethodXMobileMeAuthToken?的主要内容,如果未能解决你的问题,请参考以下文章
我应该如何处理“'someFunction' 不是从 'namespace:somePackage' 导出的对象”错误? [关闭]