adal javascript windows存储应用令牌

时间:2015-03-05 09:03:25

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

我有一个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();
            }
        });

我试过添加

在web.config中

<sessionTokenRequirement lifetime="96:00:00" /><cookieHandler persistentSessionLifetime="60.0:0:0" requireSsl="true" />但仍然收到错误。

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

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

感谢您的时间。

1 个答案:

答案 0 :(得分:0)

您使用的库版本很古老而且不受支持。此外,cookie不参与api通信。 我建议切换到最新的稳定ADAL。 Windows Store示例使用ADAL:https://github.com/AzureADSamples/NativeClient-WindowsStore