【问题标题】:adal javascript windows store app tokenadal javascript windows 商店应用令牌
【发布时间】:2015-05-06 13:56:54
【问题描述】:

我有一个 javascript windows 商店应用程序,它通过 Microsoft.Preview.WindowsAzure.ActiveDirectory.Authentication 库与 AAD 进行身份验证。它适用于托管在 Azure 中的 ASP.NET WebAPI。它工作正常,它提示用户登录(Windows登录服务),一旦登录,用户就可以工作并且不会被要求再次登录。我发现的问题是,当用户有一段时间不使用该应用程序时,我不确定,但我认为在 20 到 30 分钟之间,应用程序就会停止运行。它不响应用户查询。我认为与 webApi 的通信丢失了,我不确定应用程序获取的令牌是否已过期或 Azure 本身切断了连接。

这就是我获取令牌的方式

var authcontext = new aal.AuthenticationContext(audience);
aal.DefaultTokenCache().clear();
return authcontext.acquireTokenAsync(resource, clientID, redirectUri.absoluteUri, "", null).then(function (result) {
     if (aal.AuthenticationStatus.succeeded == result.status) {
         accessToken = result.accessToken;
         return true;
     }
}

和 webApi 调用

var uri = new Windows.Foundation.Uri(apiUrl + apiName);
        var httpClient = new Windows.Web.Http.HttpClient();

        httpClient.defaultRequestHeaders.authorization =
            new Windows.Web.Http.Headers.HttpCredentialsHeaderValue("Bearer", accessToken);

        return httpClient.getAsync(uri).then(function (response) {
            if (response.isSuccessStatusCode == true)
                return response.content.readAsStringAsync().then(function (responseText) {
                    var array = JSON.parse(responseText);
                    return array;
                });
            else
            {
                var md = new Windows.UI.Popups.MessageDialog(response, "Error");
                md.showAsync();
            }
        });

我已经尝试添加

<sessionTokenRequirement lifetime="96:00:00" /><cookieHandler persistentSessionLifetime="60.0:0:0" requireSsl="true" /> 在 web.config 中,但仍然出现错误。

我正在尝试将 ADAL 新版本添加到项目中,但未成功,因为我阅读了有关刷新令牌的内容,我正在研究它,但没有找到任何适用于 Windows 商店应用程序的示例。

关于问题原因以及如何解决的任何线索?

感谢您的宝贵时间。

【问题讨论】:

    标签: javascript asp.net-web-api windows-store-apps adal


    【解决方案1】:

    您使用的库版本过时且不受支持。此外,cookie 在 api 通信中没有任何作用。 我建议切换到最新的稳定 ADAL。使用 ADAL 的 Windows 应用商店示例:https://github.com/AzureADSamples/NativeClient-WindowsStore

    【讨论】:

    • 感谢您的回复,我解决了我的问题,我正在保存令牌并使用保存的令牌执行请求,所以一段时间后它会过期并且应用程序会停止运行。我正在尝试更新到新库,并且使用相同的代码在acquiretokenasync 行出现类型不匹配错误,该方法有什么变化吗??
    • 很多变化。你的预览很早。
    • 解决了这个问题,我对新版本进行了更改,它可以工作。谢谢
    猜你喜欢
    • 1970-01-01
    • 2016-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-04
    • 1970-01-01
    • 2016-07-26
    • 1970-01-01
    相关资源
    最近更新 更多