0

我有一个 Windows 8 应用程序,它使用 WebAuthBroker 构建字符串并发布到 https:。相关代码如下。

问题是 WebAuthBroker 采用了这个 URI 并且无法连接,但是当我手动将此 URI 发布到 IE 中时,它工作正常。

在 Windows 8 上运行 VS2012。在 Package.appmanifest 中,启用了 Enterprise Authentication、Internet(Client)、Internet(Client&Server)、Private Networks(Client&Server) 和 Shared User Certificates。

            async Task AuthenticateAsync()
    {
        var requestUriStr = string.Format("{0}?client_id={1}&response_type=token&redirect_uri={2}", logonUriString, clientId, redirectUriString);

        requestUriStr += "&scope=stream";

        var requestUri = new Uri(requestUriStr, UriKind.RelativeOrAbsolute);
        var redirectUri = new Uri(redirectUriString, UriKind.RelativeOrAbsolute);

        var result = await WebAuthenticationBroker.AuthenticateAsync(WebAuthenticationOptions.None, requestUri, redirectUri);

        if (result.ResponseStatus != WebAuthenticationStatus.Success)
        {
            throw new Exception("Login failed: " + result.ResponseErrorDetail);
        }
4

1 回答 1

3

我发现了我的问题。来自:http ://social.msdn.microsoft.com/Forums/en-US/winappswithcsharp/thread/13d3742d-4b6b-444e-840e-a4db11462a08

事实证明,如果您使用 Fiddler 调试您的 HTTP 请求,它将使 WebAuthenticationBroker 停止工作。这可能与此应用程序中提供的“解密 HTTPS 流量”选项有关,也可能无关,但是当我关闭 Fiddler 时,WebAuthenticationBroker 又开始工作了。我可以通过再次启动 Fiddler 来随意复制错误,并通过关闭它来解决问题。

我没有深入研究启用或禁用 Fiddler 的 HTTPS 选项是否会影响 WebAuthenticationBroker 类和方法的使用,但乍一看似乎几乎不禁用 HTTPS 会使其再次工作。为了安全起见,我通常会亲自关闭它。

所以我在编写/调试的整个过程中都打开了 Fiddler。我关闭了 Fiddler,它第一次起作用了!

于 2012-09-12T02:31:23.463 回答