Microsoft.Preview.WindowsAzure.ActiveDirectory.Authentication ライブラリを介して AAD で認証する JavaScript Windows ストア アプリがあります。これは、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 ストア アプリの例が見つかりません。
問題の原因と解決方法についての手がかりはありますか??
御時間ありがとうございます。