【问题标题】:How to perform an NTLM challenge on the iPhone如何在 iPhone 上执行 NTLM 挑战
【发布时间】:2009-03-10 04:26:09
【问题描述】:

我正在尝试访问 iPhone 应用程序中的一些网络服务。

如果我 GET 访问 .asmx 页面,我会进行身份验证并按预期获取 WSDL。

但是,如果我 POST 到 .asmx 页面,设置 SOAPAction、Content-Type、Content-Length 和 HTTPBody,我只会不断收到 didReceiveAuthenticationChallenge 消息。

此外,我正在尝试使用集成 Windows 身份验证 (IWA) POST 到 IIS,这意味着我正在尝试协商 NTLM 质询。

【问题讨论】:

    标签: iphone ntlm


    【解决方案1】:

    不幸的是,我找到了答案。 NSURLConnection 无法进行 NTLM 身份验证。这是一篇关于如何使用 CFNetwork 堆栈进行 NTLM 身份验证的帖子。

    HTTP Post via the CFNetwork stack

    找到比做所有这些乏味的事情更好的东西:已经做过的人!
    ASIHTTPRequest

    更新:workaround for iOS 4 允许再次进行 NTLM 身份验证

    【讨论】:

    • 谢谢! ASIHTTPRequest 正是我想要的。
    【解决方案2】:

    在我看来,您的网络服务具有不同的读取(获取)和写入(发布)权限。我认为这根本不是 iPhone 或 NSURLConnection 的问题。

    【讨论】:

    • Web 客户端工作正常,如果我创建一个 .Net 应用程序,也可以正常工作。但我想我可以检查权限以防万一。
    • GET 和 POST 的权限相同。
    • 你确定吗? POST 函数正在执行的操作可能需要身份验证,例如写入文件。 .NET 客户端很可能会为您进行身份验证。您是否尝试过在 HTTP 调试器中进行调用? ditchnet.org/httpclient
    • HTTP 客户端表现出与我在使用 GET 时遇到的相同的行为。不断的身份验证请求。
    • 此外,我每次询问时都会尝试进行身份验证。在 .Net 和 iPhone 应用程序中,我使用相同的凭据。所以我看不出一个人怎么能比另一个人更多地进行身份验证。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-03-29
    • 2015-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-20
    • 1970-01-01
    相关资源
    最近更新 更多